40 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 в этом предложении не редактируются.