37 lines
7.2 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.

# Tasks
Change ретроспективно фиксирует работу в `arm-tabular-parser`. Отметки [x] основаны на текущих изменениях и проверках предыдущих шагов этой сессии; оставшиеся проверки не считаются выполненными. Каждая задача рассчитана не более чем на половину дня.
## 1. Тесты и исходные ожидания
- [x] 1.1 Сохранить тесты адаптеров `api/tests/unit/parser/` и проверки версии/ошибки словарей в `api/tests/unit/test_worker.py`, обновить комментарий об установленной версии. Проверка: 1206 parser-тестов и 3 выбранных worker-теста прошли; 5 parser-тестов пропущены.
- [x] 1.2 Проверить реальные формы по `api/tests/statements_manifest.yaml`, `api/tests/fixtures/test_statements_adapter_real.py` и golden-снимкам `../fixtures/golden/expected_statement_parse/` с установленной библиотекой. Критерий: тесты реальных форм проходят без необъяснённых расхождений; существующие снимки автоматически не перезаписывать. Проверено: 27 тестов форм и 27 golden-тестов прошли, снимки не менялись.
## 2. Локальная установка и удаление копии
- [x] 2.1 Обновить `Makefile` и `api/requirements.txt`: pin 0.1.1, фильтр `raisa_*`/`pylib_ai*`, STATEMENTS_DIR, установка через `make venv`, переустановка через `make install`. Проверка: dry-run обеих целей соответствует design, локальный `make install` установил дистрибутив 0.1.1.
- [x] 2.2 Удалить `api/arm_statements/` со словарями, VERSION и библиотечными тестами; удалить `statements-check` и его вызов в `Makefile`. Проверка: каталога нет, импорт указывает на site-packages, `check-full` больше не запускает sync-statements.
- [x] 2.3 Обновить `api/pytest.ini`, `api/pyproject.toml`, комментарий `api/requirements-dev.txt`; перегруппировать сторонние импорты в `api/src/parser/` и соответствующих тестах. Проверка: pytest не собирает библиотечные тесты, `make lint` проходит, mypy проверяет src.
- [x] 2.4 Описать установку и обновление в `README.md`, `CLAUDE.md`, `api/rules/README.md`. Проверка: описаны отсутствие PyPI, `STATEMENTS_DIR` и `make install`, отсутствует инструкция синхронизировать копию.
- [x] 2.5 Проверить подготовку окружения полной командой `make venv` и повторную установку библиотеки той же версии через `make install STATEMENTS_DIR=<путь>`. Критерий: обе команды успешны, импорт работает; пакет pylib_ai не запрашивается из индекса. Проверено: make venv и повторный make install с абсолютным STATEMENTS_DIR успешны; импорт из site-packages, версия 0.1.1.
## 3. Версия библиотеки при старте
- [x] 3.1 Обновить docstring и диагностику `require_statements_version` в `api/src/parser/__init__.py`, комментарий поля в `api/src/contract/common.py`. Проверка: сохраняется API библиотеки и явный путь для тестов; RuntimeError предлагает `make install`; JSON-схемы не изменены.
- [x] 3.2 Проверить загрузку установленного пакета, его метаданных, словарей и создание парсера. Критерий: импорт из site-packages, версия дистрибутива и `statements_version()` равны 0.1.1, `get_parser()` создаёт BookParser; проверено ранее с `DEBUG=false ENV_FILE=.env.test`.
## 4. Контейнерная поставка
- [x] 4.1 Изменить `Makefile`, `Dockerfile`, `README.md`: именованный контекст BuildKit, временный bind mount библиотеки и установка локального пакета, фильтрация requirements. Проверка реализации: `make -n docker-build` передаёт `--build-context arm_statements`, исходники подключаются только на шаге установки; требование к прямым сборкам документировано.
- [x] 4.2 Собрать образ через `make docker-build` и проверить в контейнере импорт, `statements_version()` и `default_rules()` без mount исходников при запуске. Критерий: образ содержит рабочую библиотеку 0.1.1 и словари. Предыдущая попытка заблокирована доступом к Docker socket. Проверено 24.10.2026: make docker-build успешен; docker run --network none без mount подтверждает импорт из site-packages, версию 0.1.1 и загрузку словарей.
## 5. Итоговые проверки
- [ ] 5.1 Завершить полный unit-прогон `api/tests/unit` с корректным DEBUG, выяснив зависание worker-тестов. Критерий: зафиксированы итоговый результат и причины пропусков; предыдущий остановленный прогон не считать успешным.
- [ ] 5.2 Выполнить доступные интеграционные проверки NATS/S3 через `make test-integration` и итоговый `make check-full`. Критерий: обработка реальных форм проходит контракт v2.0 и содержит версию библиотеки; lint, тесты и Docker-сборка успешны.
## Workflow follow-up
- Основные `openspec/specs/` остаются без правок до отдельной синхронизации/архивирования этого change; архивные changes не переписываются.
- Финальное межрепозиторное согласование провести отдельным change в `../docs`: проверить актуальность 03-architecture и 07-open-questions, согласовать описание `service.statements_version` в каноническом контракте; затем обновить копии контрактов и README согласованно. Эти внешние правки в текущей задаче не выполнялись.