Формы через arm_statements, контракт результата v2.0 (#54) #55

Merged
aep merged 15 commits from feat/54-statements-v2 into main 2026-10-19 07:38:07 +03:00

15 Commits

Author SHA1 Message Date
Andrey Epifancev
b583b0472f test: plan_sheets с дедлайном в тесте реальных форм, порядок импортов (#54)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 22:14:48 +04:00
Andrey Epifancev
4d30718689 docs: дельты OpenSpec, design.md, README и CLAUDE.md под контракт 2.0 (#54)
I-3: дельты osv-parsing (листы ОСВ, иерархия, golden, XLS_NO_CODEPAGE) и
перечень словарей api/rules; пункт об архивации (Purpose спек) в tasks.md.
I-4: README, CLAUDE.md и docstring hierarchy.py совпадают с кодом, пример
вывода CLI переснят. M-6: tasks.md, proposal.md, design.md с решениями P4/R.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 22:08:30 +04:00
Andrey Epifancev
0d82b5cf5e fix: черновик продолжения несёт число колонок сумм (#54)
M-1: _separate считает form_amount_columns, следующий лист без маркера
больше не получает ложный SHEET_NOT_JOINED.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 22:05:06 +04:00
Andrey Epifancev
2fce78080b fix: дедлайн при классификации листов и тесты путей отказа форм (#54)
I-1: plan_sheets проверяет дедлайн на каждом листе (регрессия против main).
I-2: тесты исключения пакета на кандидате (RECOGNITION_FAILED с
предупреждениями файла), TIMEOUT в адаптере и конвейере, RulesError в get_parser.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 22:04:37 +04:00
Andrey Epifancev
be5ad8ce86 refactor: удалён собственный конвейер форм и словари форм — шаги 2–8 в arm_statements (#54)
Удалены модули statements/{checks,columns,detect,header,lines,merge,statement,legacy_models}.py, словари
rules/statement_{headers,periods,checks}.yaml и их тесты. Словари форм и шаги 2–8 — в пакете arm_statements.
Rules без полей statement_*; покрытие словарей ОСВ (DICTIONARIES) без словарей форм. Документация сервиса
переписана под адаптер форм, контракт 2.0 и коды OSV_*.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 21:53:29 +04:00
Andrey Epifancev
0f12c0eb3d test: манифест реальных форм и Review Focus под общий код и v2.0 (#54)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 21:41:54 +04:00
Andrey Epifancev
f5d071f602 chore(arm_statements): копия пакета arm-statements@3390f92 (#54)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 21:30:20 +04:00
Andrey Epifancev
9e694796ad test: согласованные формы для статуса книги, test_pipeline, флаг BookRead.no_outline (fix round 1, #54)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 21:01:53 +04:00
Andrey Epifancev
71f596cdb7 feat: формы через arm_statements, контракт результата и конверта v2.0, статус и OSV_* у ОСВ (#54)
- копия схем и примеров контракта v2.0 (запрос остаётся v1.0), модели result/common/message/request;
  ResultWarning/FileWarning, статус и предупреждения у документов, строки forms v2.0, service.statements_version
- statements/pipeline.py: кандидаты адаптера -> normalize_candidate -> to_contract / warning_to_contract
- BookParser: статус книги через envelope_status, SHEET_OTHER / FILE_TYPE_MISMATCH / XLS_NO_CODEPAGE как предупреждения
  файла, OSV_* и OSV_XLSB_NO_OUTLINE в документах ОСВ, тексты иерархии по спеке
- воркер, app и CLI получают statements_version из require_statements_version()
- старые модели документа формы вынесены в statements/legacy_models.py до удаления старого конвейера (задача 9)
- OpenSpec: MODIFIED «Парсер — заменяемый интерфейс» в дельте tabular-recognition-service

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 20:52:52 +04:00
Andrey Epifancev
702ea1dff9 refactor(osv): предупреждения листа ОСВ с кодами OSV_* (вывод 1.x прежний) (#54)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 20:35:29 +04:00
Andrey Epifancev
ebc1f438da fix(statements): подпись колонки в строке-шапке таблицы не заголовок формы (R-8, #54)
Ячейка в строке с подписью «Код» (словарь пакета) не открывает блок формы:
«Пояснения» на листах-продолжениях НПЗ больше не даёт DISCLOSURE.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 20:28:39 +04:00
Andrey Epifancev
c858a85d85 feat(statements): адаптер шага 1 — книга → FormCandidate, склейка листов, segment_breaks (#54)
Тест test_npz_candidates красный: НПЗ — BLOCKED (Р-31), см. отчёт задачи 5.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 20:24:47 +04:00
Andrey Epifancev
12f4701754 feat(statements): блоки форм, вид листа и шапка-ячейки на словарях arm_statements (#54)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 20:17:11 +04:00
Andrey Epifancev
ce8372d754 feat(statements): ячейка Excel → Cell: текст по числовому формату, value, ref <лист>!<A1> (#54)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 20:07:02 +04:00
Andrey Epifancev
8b9a5a07c4 openspec: change unified-normalization-tp — адаптер Excel, общий код, контракт v2.0 (#54)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 19:55:36 +04:00