39 lines
3.5 KiB
Markdown
Raw Permalink 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` в сервис требует синхронизации исходников и привязывает версию нормализатора к локальному `VERSION`. Общий код теперь поставляется библиотекой `pylib_ai_arm_statements==0.1.1`; шлюз должен устанавливать её из локального источника, поскольку публикации в PyPI нет.
## What Changes
- Установить библиотеку из `../pylib_ai_arm_statements` при `make venv`; добавить `make install` для переустановки и переменную `STATEMENTS_DIR` для пути.
- Закрепить `pylib_ai_arm_statements==0.1.1` в `api/requirements.txt`; при установке по requirements исключать `pylib_ai*` наряду с внутренними `raisa_*`.
- Удалить `api/arm_statements/`, его тесты из pytest и проверку `statements-check`; проверять собственный код шлюза.
- Сохранить импорт `arm_statements`, получать версию через API библиотеки `statements_version()` и записывать её в результат.
- Передавать библиотеку в Docker отдельным build context и устанавливать внутри образа.
- Обновить документацию, сообщения об ошибках, импорты и проверки версии установленного пакета.
## Capabilities
### New Capabilities
Нет.
### Modified Capabilities
- `image-recognition-gateway`: библиотека вместо копии нормализатора, источник `service.statements_version`, локальная установка и сборка образа.
## Impact
Срез 3a из `../docs/context/09-delivery-plan.md`, сопровождение OCR-нормализатора. Изменяется только `arm-scan-gateway`; `../arm-core` служит примером, `../pylib_ai_arm_statements` — готовым источником зависимости. Таблицы DBML v5.17 не затрагиваются. Алгоритмы из `05-domain-rules.md` §11, §11.1 и §11.9 остаются в библиотеке; новых бизнес-правил нет.
Контракт `statementDocument` v2.0 сохраняется; значение версии отражает установленную библиотеку вместо коммита копии. Архивные change'и и основные спеки в рамках предложения не редактируются. Сквозных изменений в других сервисах этот change не вводит.
## Non-goals
- Публикация в PyPI, создание реестра пакетов или изменение библиотеки.
- Переработка нормализации, транспорта SMB/NATS/S3, эмулятора и модели данных.
- Редактирование общих JSON Schema из `../docs/contracts` или пересборка golden под изменённые результаты.
Это описание уже подготовленных изменений рабочего дерева; задачи оформлены для отдельной сверки на этапе apply.