Формы через arm_statements, контракт результата v2.0 (#54) #55
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/54-statements-v2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #54. Цель, план: arm-ka-docs#116, план 4 (
openspec/changes/unified-statement-normalization/plans/2026-10-18-plan-4-tabular-parser.md). Парный PR fixtures (golden): RSHB/arm-ka-fixtures (ветка feat/25-statements-v2-golden, issue #25).НЕ СЛИВАТЬ
Условие слияния: ядро с приёмом контракта 2.0 (части А и Б плана 3) выложено, docs #117 слит (слит). Первый же результат 2.0 даст файлу
ERRORу ядра 1.x. Порядок: сначала PR fixtures (golden), сразу за ним этот PR. Слияние — только по команде владельца. Копия пакета:statements-check= 0 (arm-statements@3390f92), в описании «копия отстала» нет.Что сделано
Cell(текст по числовому формату, value,ref <лист>!<A1>), блоки форм, вид листа, шапка →HeaderCells, склейка листов-продолжений →FormCandidate(segment_breaks). Шаги 2–8 выполняет копия пакетаarm_statements(только публичный API).service.statements_version, структурныеmetrics.warnings, у ОСВstatusиwarnings[]с кодамиOSV_*(info). Копия схем идентична docs (тестvendored_contracts).statements/{checks,columns,detect,header,lines,merge,statement}.py),legacy_models.py, словари формrules/statement_*.yaml.unified-normalization-tp(дельтыstatement-parsing,tabular-recognition-service,osv-parsing;design.mdс P4-1…P4-22 и R-1…R-14). Архивация — по правилу «после выкладки».NUMBERS_OUTSIDE_TABLE), отдельным коммитомf5d071f.Реальные формы: манифест и результаты
Доля
doneпо документам форм (19 документов в 18 файлах): до 6, после 6 (НПЗ ×2, Межениновская ×2, ОФР «Лист 1» Унагранде ×2). Статусы всех файлов совпали с манифестом. Изменения манифеста (api/tests/statements_manifest.yaml):unagrande-co/2024-FY/Б.Б. Лист 2.xls,unagrande-group/2024-FY/ББ. Лист 2 (2).xls,unagrande-group/2025-Q3/ББ. Лист 2 3кв.25.xls):failed_relations: ["1600 = 1700"]вместо[]— v2.0 проверяет соотношение с пустой целью по самой странице (спека, «посчитанное» соотношение §7); статусneeds_checkпрежний.error_warnings(точное множество кодовerrorдокумента) у каждого документа: страницы 2 и ОФР «Лист 2» —NO_ORGANIZATION_NO_INN; шаблоны —PERIOD_UNKNOWN(+NO_ORGANIZATION_NO_INN,SEGMENT_COLUMNS_MISMATCHу ББ «до»); остальные —[].1_Форма1_бух_09.xlsxпервоначально давалаneeds_checkиз-з�� посторонних формул аналитика (V45, W57, U58, V58, V72, W72) в столбцах без подписи периода; решение владельца — правило в пакете (docs #123, Р-44); теперьdone, колонки M/Q/S,NUMBERS_OUTSIDE_TABLE(info).Проверки
make checkс фикстурами 2884 passed; без фикстур 1820 passed / 91 skipped;make golden-check0 (152 файла);make statements-check0;openspec validate unified-normalization-tp --strictvalid; интеграционные тесты (свой compose-проект, NATS/MinIO на портах 24222/29000, общий стек не тронут) 10 passed;docker buildок, в образеstatements_version= 3390f92.Rulings I made
origin/main(#117 слит). Цена: нет.XLS_NO_CODEPAGEпакета (info, файл), новогоOSV_*нет, текст reader'а сохранён. Цена: правкаbook.pyи golden.design.mdchange'а tabular-parser, docs не правятся. Цена: перенос в docs вручную.openspec validate --strictи финальным ревью.numeric(18,2)вdisplay_amountне возвращается (P4-4); диапазон выдаёт пакет. Цена: нет после удаления старого конвейера.metrics.warnings— reader, затем по листам;XLS_NO_CODEPAGE/OSV_XLSB_NO_OUTLINE— флагиBookRead.0с форматом[=0]"-"), по спеке не строки данных; пакет их не выдаёт; прочерк в 0 не превращаем. Вопрос владельцу O-8.2: сценарий спеки «Реализация иного имущества… с суммами» не соответствует файлу.plan_sheetsполучаетdeadline(регрессия TIMEOUT, финальное ревью I-1).docker-build— на собственном compose-проекте и теге, общий стек не тронут.Находки (маркер, суть, статус)
Исправлено: T3.1 (старый пут�� удалён,
be5ad8c); T5.1 (0d82b5c); T5.5/T7.3 (deadline,2fce780); T6.1, T6.5, O-1.1 (71f596c); T7.I-1, T7.I-2, T7.M-1 (9e69479); T7.6 (2fce780); O-7.1, O-7.2 (be5ad8c); Р-31 (f5d071f); финальное ревью I-1…I-4, M-1, M-6 (2fce780,0d82b5c,4d30718,b583b04). Отклонено: T3.4 (совпадает с Excel), O-4.1.Полная таблица — в ledger SDD.
Deferred (в follow-up issue при закрытии)
T3.2, T3.3 (cell_ref и имена вида A1), T4.1–T4.10 (в т. ч. T4.3/O-8.1 мусор в
organization_nameшаблонов «после 01.01.2025»), T5.2–T5.4, T6.2–T6.4, T7.1–T7.5, T7.7, T7.8, T8.1 (после ответа по O-8.2), T8.2, F-M2 (мёртвый кодdetect.classify_sheet,BookRead.warnings/read_book), F-M3 (general_textбез 15 значащих цифр), F-M5 (xlsb без outline в книге без ОСВ не логируется), O-8.2 (вопрос владельцу).Парный PR fixtures: RSHB/arm-ka-fixtures#27
🤖 Generated with Claude Code
Удалены модули 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Формы через arm_statements, контракт результата v2.0 (НЕ СЛИВАТЬ до выкладки ядра)to Формы через arm_statements, контракт результата v2.0 (#54)