6.3 KiB
Raw Blame History

Proposal: Срез 2b (сквозное) — контракт результата v1.2, §12 ББ/ОФР из Excel, OQ

Срез: 2, подсрез 2b «парсер ББ/ОФР из Excel» (решение владельца 06.10.2026: только парсер и контракт; маппинг в ядро — Срез 3). Репозиторий: arm-ka-docs. Issue: RSHB/arm-ka-docs#26. Дочерний change: tabular-parser/openspec/changes/slice-2b-statement-parser (RSHB/arm-tabular-parser#14). Golden и синтетика — arm-ka-fixtures (отдельный PR). Копии схемы v1.2 — bounded-PR в arm-core и arm-scan-gateway.

Why

§12 написан до появления реальных файлов. Пакет ДКБ 06.10.2026 принёс 15 форм в трёх раскладках (постраничные xls 1С, многолистовая книга ФСБУ 4/2023, TDSheet) и показал пять решений, которых в §12 нет: страницы одной формы в разных файлах, единицы «тыс. руб.» против значений с копейками, пятизначные подстроки «в том числе», соотношения §7 как данные, формы без колонки кодов. Контракту v1.1 не хватает структурного места для результатов проверок §7 и типа «расшифровка» (DBML document_type.DISCLOSURE), а ОСВ со скользящим периодом (OQ-131) — границ периода. Всё это MINOR.

What Changes

  • Контракт v1.2 (docs/contracts/recognition-result.schema.json): statementDocument.document_type + DISCLOSURE; необязательный statementDocument.checks {relations_failed[], soft_relations_failed[] — объекты {column_index, relation, expected, actual}; duplicate_line_codes[]}; необязательные osvDocument.header.period_start, period_end (date|null), is_from_year_start (boolean|null). title/description schema_version — «1.2». Примеры: result-statement-minimal.json дополняется checks; новый result-statement-excel.json (книга с BALANCE из нескольких листов, INCOME, DISCLOSURE); result-osv-minimal.json — новые поля шапки. Сообщение и запрос не меняются. Спека recognition-contract: «Файл результата» — v1.2.
  • 05-domain-rules.md §12: решения владельца 06.10.2026 (вопросы 2–6 brainstorming) и уточнения по факту файлов: классификация листов и продолжений, титул «Бухгалтерская отчетность», склейка листов внутри книги и запрет склейки между файлами (страница без шапки → needs_check), единицы как есть + предупреждение, пятизначные подстроки как строки, §7 по четырёхзначным с допуском ±1 и двойным расчётом знаков, соотношения — данные statement_checks.yaml, отказ от запасного пути по именам в первой очереди, критерий ok документа, порядок документов книги. §7 — пометка, какие соотношения парсер считает жёсткими, какие мягкими (ASSUMPTION(OQ-12)).
  • 06-test-data.md: раздел по statements-xlsx/** (раскладки, манифест ожиданий, golden expected_statement_parse/, синтетика st01…st05).
  • 03-architecture.md: версия контракта 1.2, BookParser как реализация по умолчанию tabular-parser, порядок раскатки MINOR (потребители раньше производителя).
  • 09-delivery-plan.md: Срез 2b — статус и объём по решению владельца; маппинг форм — Срез 3 (без изменений).
  • 07-open-questions.md: новые OQ — единицы «тыс. руб.» против значений с копейками в 1С-выгрузках (кто и где приводит); форма без колонки кодов (словарь имён из шаблонов); страница-продолжение в отдельном файле (склейка в ядре, признак is_continuation в контракте); строка без кода с суммами в ОФР ФСБУ 4/2023; образец ФСБУ с «АКТИВ» и 1110 в одной строке. Статус OQ-131: границы периода в контракте v1.2, заполнение — парсер (#11 / 2b).
  • docs/dev/qa-guide.md §6.7: абзац про прогон парсера на формах.

Capabilities

Modified Capabilities

  • recognition-contract: «Файл результата» — v1.2 с DISCLOSURE, statementDocument.checks, границами периода ОСВ; «Версионирование контракта» — без изменений (MINOR по правилу).

Impact

  • Контракт: MINOR, обратно совместимо; копии обновляются в tabular-parser (дочерний change), arm-core и scan-gateway (bounded-PR: схема, примеры, pydantic-модели; логика не меняется — ядро по-прежнему маппит только osvDocument). Порядок merge: docs → arm-core, scan-gateway → tabular-parser → fixtures.
  • Таблицы DBML: нет (DISCLOSURE уже есть в document_type). Правила: §12 (решения владельца), §7 (пометки).

Non-goals

  • Маппинг statementDocument в ядре и экран проверки форм — Срез 3.
  • Признак продолжения страницы в контракте, нормализация единиц, словарь имён строк — после появления потребителя/файла.