5.7 KiB
5.7 KiB
Proposal
Why
Нормализация форм должна подключаться к arm-core как устанавливаемая Python-библиотека, а не как синхронизируемая копия исходников. При переходе обнаружились две ошибки поставки: YAML-правила не попадали в пакет, а отсутствие внутреннего VERSION давало None и нарушало обязательность service.statements_version для форм.
Change ретроспективно фиксирует работу из этой задачи и оставшиеся проверки; он не объявляет весь переход завершённым.
What Changes
- Добавлена цель
make install: создание/использованиеapi/.venv, установка или переустановкаpylib-ai-arm-statementsизSTATEMENTS_DIR(по умолчанию../pylib_ai_arm_statements). make venvисключаетraisa_*иpylib_ai*изapi/requirements.txt. Обработкаrequirements-dev.txtсохранена: исключаются только вложенные-r. В текущем Makefile после requirements также устанавливается локальная библиотека.- В текущем рабочем дереве закреплена зависимость
pylib_ai_arm_statements==0.1.1, удалена копияapi/arm_statements/, отключёнstatements-checkвcheck-full. Это наблюдаемое состояние перехода, включая изменения пользователя. - Импортируемое имя остаётся
arm_statements. Пробная замена наpylib_ai_arm_statementsи настройка mypy для этого имени отменены по просьбе пользователя. - В соседней библиотеке исправлен
MANIFEST.in: Python-файлы и YAML включаются изarm_statements, а не из прежнего каталогаpylib_ai_arm_statements. - В библиотеке
statements_version()при отсутствии или пустом стандартном маркереVERSIONиспользует метаданные дистрибутива. Явно переданный отсутствующий/пустой файл по-прежнему даётNone. - Обновлены README, CLAUDE.md, комментарии, описание JSON-контракта и пометки в исторических планах/архивных OpenSpec-документах: теперь это отдельная библиотека;
statements_versionможет быть версией дистрибутива. - Сохранены расчёты, проверки §7, импортный API, схема результата и обязательность версии при наличии форм.
Capabilities
New Capabilities
statement-library: поставка правил и кода как Python-библиотеки, локальная установка и определение версии.
Modified Capabilities
documents-api: использование установленной библиотеки при пересчёте и проверке словарей; сравнение версии задания с версией библиотеки вместо версии встроенной копии.statement-checks: источник правил §7 — установленная библиотека, без изменения арифметики и сценариев.
Impact
- Срез 3b, сопровождение нормализации форм; контекст —
../docs/context/09-delivery-plan.md, доменные алгоритмы —../docs/context/05-domain-rules.md§7 и §11. Алгоритмы не изменяются. - Репозитории: arm-core (этот change);
../pylib_ai_arm_statements(сделанные исправления поставки и версии описаны как внешняя зависимость, требуют отдельного коммита/поставки). Обновление общих инструкций и согласование с сервисами относятся к отдельному change в../docs, он здесь не создаётся. - DBML: таблицы и поля не меняются, миграций нет. Существующие
recognition_job.statements_versionиdocument_issueиспользуют уже имеющийся механизм версии иSTATEMENTS_VERSION_MISMATCH. - Полный интеграционный результат не подтверждён:
test_intake_statements_version_mismatchбыл остановлен после зависания. Проверено: переустановка библиотеки, версия0.1.1, 11 тестов движка, Ruff и валидность JSON для изменённых описаний.
Non-goals
- Переименование Python-импортов, изменения фронта, форматов денежных сумм, статусов, правил нормализации и схемы БД.
- Изменения портов БД в
.env.test,test_config.pyи посторонние файлы рабочего дерева: не входят в задачу. - Публикация библиотеки в реестр, обновление других сервисов, запуск apply или архивирование этого change.