4.8 KiB
Raw Blame History

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