40 lines
4.8 KiB
Markdown
40 lines
4.8 KiB
Markdown
# Proposal
|
||
|
||
## Why
|
||
|
||
`arm_statements` поставляется как устанавливаемая библиотека, отсутствующая в PyPI. Копирование её исходников, словарей и тестов в сервис через `sync-statements` больше не соответствует способу поставки; сервис должен устанавливать локальный дистрибутив и сообщать его версию.
|
||
|
||
## What Changes
|
||
|
||
- Зафиксировать `pylib_ai_arm_statements==0.1.1` в `api/requirements.txt`, сохранив Python-импорты `arm_statements`.
|
||
- В `make venv` пропускать строки `pylib_ai*` при установке из индекса, как и внутренние `raisa_*`; библиотеку устанавливать из `../pylib_ai_arm_statements` через `uv`.
|
||
- Добавить `make install` для установки или переустановки библиотеки; путь переопределяется `STATEMENTS_DIR`.
|
||
- Удалить `api/arm_statements/` целиком, включая словари, VERSION, тесты и golden-файлы библиотеки. Удалить `statements-check` и его вызов из `check-full`.
|
||
- Проверять и тестировать только код сервиса: убрать библиотеку из путей pytest/mypy, считать её сторонней в Ruff, обновить порядок импортов и обработку отсутствующих типов.
|
||
- Получать `service.statements_version` через API библиотеки (VERSION либо метаданные установленного дистрибутива); при отсутствии версии останавливать старт с актуальной диагностикой.
|
||
- **BREAKING для сборки:** передавать исходники библиотеки в Docker через именованный контекст BuildKit `arm_statements`; обычный `docker build .` без него больше не поддерживается.
|
||
- Обновить README, CLAUDE.md и комментарии о зависимости: библиотека, установка и обновление через `make install` вместо синхронизации копии.
|
||
|
||
## Capabilities
|
||
|
||
### New Capabilities
|
||
|
||
Нет; установка и сборка относятся к существующей capability сервиса.
|
||
|
||
### Modified Capabilities
|
||
|
||
- `tabular-recognition-service`: локальная установка и Docker-сборка библиотеки, версия библиотеки в результате и при старте.
|
||
- `statement-parsing`: выполнение шагов 2–8 установленной библиотекой, обновление её словарей переустановкой вместо синхронизации копии.
|
||
|
||
## Impact
|
||
|
||
Срез 2, сопровождение ББ/ОФР из Excel (срез 2b по `../docs/context/09-delivery-plan.md`); алгоритмы остаются по §11–12 и §7 `05-domain-rules.md`. Новых алгоритмов и допущений по открытым вопросам нет.
|
||
|
||
Изменяется только репозиторий `arm-tabular-parser`: Makefile, Dockerfile, зависимости и конфигурация инструментов в `api/`, документация, адаптеры (порядок импортов), сообщение проверки версии. `../pylib_ai_arm_statements` — существующий источник дистрибутива, `../arm-core` — пример установки; их код не меняется. Таблицы и поля DBML v5.17 не затрагиваются, миграций нет.
|
||
|
||
Текущие основные спецификации требуют коммит копии и `sync-statements`; delta-спецификации описывают замену этих требований. Копии JSON-контрактов сохраняются байт в байт. Их описание версии как коммита остаётся вопросом согласования в отдельном change `../docs`, не локальной правкой схемы.
|
||
|
||
## Non-goals
|
||
|
||
Публикация в PyPI/Nexus; изменение API библиотеки, правил разбора, сумм, единиц измерения, транспорта NATS/S3 и версии JSON-контракта; изменение arm-core, Compose или внешнего CI. Основные спецификации и архивы OpenSpec в этом предложении не редактируются.
|