34 Commits

Author SHA1 Message Date
Andrey Epifancev
547f9efcdb feat(#5): шаг 2 — числа правее последней подписанной колонки не колонки сумм
Столбец без подписи правее последней колонки с подписью периода колонкой сумм
не считается; вместо COLUMN_WITHOUT_DATE — info NUMBERS_OUTSIDE_TABLE с адресами
ячеек. Решение владельца 18.10.2026 (arm-ka-docs#116, Р-31).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 21:18:07 +04:00
aep
52857a0491 Merge pull request 'Тест версии не зависит от файла VERSION в копии пакета (#3)' (#4) from feat/3-version-test-copy into main 2026-10-18 18:44:25 +03:00
Andrey Epifancev
548dfd4361 fix(tests): test_version не зависит от файла VERSION рядом с пакетом (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 19:41:12 +04:00
aep
6bce80be4e Merge pull request 'Пакет общего кода нормализации ББ/ОФР arm_statements (#116 docs)' (#2) from feat/1-arm-statements-package into main 2026-10-18 17:11:54 +03:00
Andrey Epifancev
2973cc7966 Документирование warnings адаптера, тест листа-продолжения, обезличенная фамилия (M-2, M-3, M-4)
M-2: README и docstring normalize_candidate — при отсутствии документа
candidate.warnings хост обрабатывает сам. M-3: тесты сопоставления
по дате (переставленные даты) и по порядку (дубль даты).
M-4: «Косарев» заменён на «Иванов» в тестах и docstring.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:29:10 +04:00
Andrey Epifancev
5cc4522e4a status_input: пустая строка организации/ИНН — «нет» (M-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:28:38 +04:00
Andrey Epifancev
598ac83855 recompute для DISCLOSURE: полные словари needs_review и родители detail (I-3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:28:20 +04:00
Andrey Epifancev
8a63ce5196 VALUE_OUT_OF_RANGE: line_refs — ref строки, не ячейки значения (I-2)
Адрес ячейки остаётся в message. Добавлен инвариант-тест по golden:
line_refs предупреждений документа входят в ref строк, locator нет,
column_index есть среди колонок.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:28:03 +04:00
Andrey Epifancev
be3b9c8905 Склейка двухстрочной шапки, когда «Код» в верхней строке (I-1)
После выбора строки по подписи кода проверяется и нижняя строка (годы):
если подпись шапки отдельно не период, а вместе с нижней — период,
строки склеиваются. Тесты: Excel, OCR, повторная шапка в два ряда.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:27:42 +04:00
Andrey Epifancev
aa46e7ad4a fix: квантование суммы «лучшей догадки» до 0,01 (T20.1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:14:12 +04:00
Andrey Epifancev
2da7bff71a test: golden на обезличенных входах aep_3, склейки, блока «Коды» 1С и листа-продолжения НПЗ; публичный API
Пять golden-входов по Review Focus 1–5, эталоны, свойство status_input_from_contract(to_contract(d)) == status_input(d)
на golden и граничных кейсах (DISCLOSURE, без строк, абсолютная колонка без даты), test_public_api, RulesError в __all__,
README: публичный API, словари, golden-update.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:12:29 +04:00
Andrey Epifancev
3ee74c6907 feat: перевод документа и предупреждений в форму контракта v2.0, вход статуса из документа контракта
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:06:55 +04:00
Andrey Epifancev
9e28213ce6 feat: точка входа пересчёта формы по сохранённым данным (правки, подтверждения, строки правки)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:04:19 +04:00
Andrey Epifancev
29198ddc44 feat: шаг 6 и конвейер кандидата — тип по кодам, вариант формы, пояснения, предупреждения файла
normalize_candidate / normalize; __init__ экспортирует уже реализованный публичный API.
DISCLOSURE: шапка не проверяется, предупреждений шапки нет, статус done (P1-6).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:01:56 +04:00
Andrey Epifancev
a5d10a6b0e feat: общая функция статуса документа (detail не держит) и статуса конверта
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:58:27 +04:00
Andrey Epifancev
6067893db8 feat: шаг 8 — needs_review по покрытию §7 и конвенции знака, проверки полей шапки
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:56:08 +04:00
Andrey Epifancev
e03040d16d feat: шаг 8 — подтверждение неуверенного кода перечнем бланка, якоря, законные повторы, выбор редакции
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:53:05 +04:00
Andrey Epifancev
3df179b7a3 feat: шаг 7 — посчитанные соотношения §7, abs_terms, допуск и округление, упрощённый набор, подстроки
Добавлены evaluation.py (EvalLine/EvalValue/is_check_line) и checks.py
(form_variant, subline_parents, evaluate_relations, checks_from).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:50:17 +04:00
Andrey Epifancev
0c4dc6d221 feat: шаги 4–5 — строки формы с сырым текстом и уверенностью, предупреждения единиц и масштаба xlsb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:47:37 +04:00
Andrey Epifancev
91e96795d5 feat: шаг 3 — строки данных со статусами ok/unreadable/detail/missing, ref, разлепление склеек
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:44:47 +04:00
Andrey Epifancev
ed85759b9b feat: шаг 2 — сегменты, повторная шапка, листы-продолжения и сопоставление колонок с первым сегментом
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:41:12 +04:00
Andrey Epifancev
995a778fa4 feat: шаг 2 — колонки периодов, относительные даты бланка 66н, неуверенные и мусорные подписи
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:37:12 +04:00
Andrey Epifancev
f4533f45e1 feat: шаг 2 — столбец кодов с защитой от блока «Коды», нумерация, строка заголовка, роли строк
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:33:47 +04:00
Andrey Epifancev
f73f386378 feat: разбор шапки формы (ИНН без двойников, единицы по ОКЕИ) и тип-подсказка по ОКУД и заголовку
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:30:00 +04:00
Andrey Epifancev
5f259be9ac fix: out-of-range для любых Decimal, знак в скобках недопустим, тесты округления
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:28:21 +04:00
Andrey Epifancev
7b14276b1a feat: parse_amount по стадиям (ядро числа, краевой мусор, скобки, разделители) и значение ячейки
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:26:07 +04:00
Andrey Epifancev
19f70fea65 feat: словарь периодов — даты, относительные подписи бланка 66н, исключения колонок
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:23:13 +04:00
Andrey Epifancev
aed37cc189 feat: буквы-двойники, нормализация подписей, разбор кода строки и отрезки кодов
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:20:30 +04:00
Andrey Epifancev
33ec43d78d fix: вид абсолютного периода берётся из словаря; проверка ключей repeats
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:18:49 +04:00
Andrey Epifancev
25b8bc4abf feat: словари нормализации (§7, периоды, заголовки, единицы, коды, предупреждения) и загрузчик
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:17:18 +04:00
Andrey Epifancev
03a7ae1a59 feat: типы шага 1 и выхода шагов 2–8, сериализация кандидата в json
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:13:31 +04:00
Andrey Epifancev
f5cb60a1cb feat: каркас пакета arm_statements, make check, маркер версии копии
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:11:38 +04:00
Andrey Epifancev
5abaa4c59b chore: claude harness bootstrap 2026-10-18 12:58:26 +04:00
Andrey Epifancev
439f978a54 chore: начальный коммит репозитория arm-statements
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 12:58:18 +04:00