4.4 KiB
Raw Blame History

Why

Замечания тестировщика заказчика 21.10.2026 (Яшин Д.О.):

  • AURORA-1734 — «Баланс АК-ЮЛ.pdf», «Баланс Саракташагротехремонт.pdf»: ИС Сканирование вернула ББ и ОФР одной таблицей table_structure[0] с меткой «Бухгалтерский баланс». У нас таблица ИС — один кандидат, шапка ОФР на строке 41 — повторная шапка того же документа: строки ОФР попадают в ББ («Прочие строки»), под колонками и периодами ББ.
  • AURORA-1735 — «Баланск Калтан.pdf»: подпись «За I полугодие 2025 года» ИС разорвала на «31» (столбец 5) и «а I полугодие 2025 года» (столбец 6); под обрывком «31» — одно постороннее число «$301» в строке 2400. Столбец 5 становится колонкой без даты (COLUMN_WITHOUT_DATE, error), в ОФР три колонки вместо двух.

Оба дефекта — в ответе ИС, но владелец решил (06.11.2026) обрабатывать их у себя по общим правилам пакета.

What Changes

  • Разрез кандидата по смене формы (пакет arm_statements, новая функция split_by_form): сегмент со своей шапкой, у которого не меньше min_codes кодов и тип формы по кодам другой, чем у текущей части, начинает новую часть — отдельный документ со своими колонками и периодами. Хосты (scan-gateway, tabular-parser) вызывают разрез перед normalize_candidate.
  • Редкий столбец с неразобранной подписью между колонками периодов (число не более чем в одной строке с кодом при трёх и более у колонок периодов) — не колонка сумм; его числа — в NUMBERS_OUTSIDE_TABLE (info) с текстом «числа вне колонок формы не учитываются».
  • Документы контекста: 05-domain-rules.md §11 (п. 2 «Сегменты», п. 6 «Подпись без периода»), таблица предупреждений.
  • Контракт, DBML, ядро — без изменений: части различаются file_ordinal (Р-10), locator части — строка с хвостом ;form:<k>.

Non-goals

  • Склейка разорванной подписи в период («31» + «а I полугодие 2025 года» → дата не восстанавливается из обрывков; колонка 6 и так разбирается).
  • Тип по метке файла ИС вместо метки таблицы (TYPE_CONFLICT у ОФР Калтана: data_ocr.label — «ОТЧЕТ О ФИНАНСОВЫХ РЕЗУЛЬТАТАХ», метка таблицы — «Бухгалтерский баланс») — отдельное правило адаптера scan-gateway, не в этом change.
  • Правило ИС «ОФР без ИНН — одним документом» (уточнение аналитика в AURORA-1734): мы режем по кодам, не по ИНН.
  • Перераспознавание уже загруженных файлов.

Impact

  • Спека statement-normalization: новое требование «Шаг 2 — разрез кандидата по смене формы», изменены «Шаг 1 — многостраничная форма» и «Шаг 2 — подпись и дата колонки».
  • Репозитории: pylib_ai_arm_statements (0.1.5, RSHB/pylib_ai_arm_statements#5), arm-ka-docs (этот change); вызов split_by_form и пин 0.1.5 в arm-scan-gateway и arm-tabular-parser — после merge AURORA-1677 (холд владельца до выкатки гудвилла). arm-core — только пин (пересчёт не режет: документы уже разрезаны).