4.1 KiB
Raw Blame History

Proposal: Срез 2a (сквозное) — контракт результата v1.1, уточнения §1, фикстуры, OQ

Срез: 2, подсрез 2a «парсер ОСВ» (решение владельца 05.10.2026: сначала только парсер, без ББ/ОФР из Excel, ядра и UI). Репозиторий: arm-ka-docs. Issue: RSHB/arm-ka-docs#9. Дочерний change: tabular-parser/openspec/changes/slice-2a-osv-parser (RSHB/arm-tabular-parser#5). Фикстуры: RSHB/arm-ka-fixtures#4.

Why

§1.2 требует «неизвестные колонки сохранять в extra, не терять», а в контракте v1.0 у строки ОСВ такого поля нет — парсер не может выполнить правило без MINOR-версии контракта. Кроме того, после реального прогона на 66 файлах §1 и 06-test-data нужно привести к факту, а план срезов — к принятой декомпозиции Среза 2.

What Changes

  • Контракт v1.1 (docs/contracts/recognition-result.schema.json): osvDocument.rows[].extra — объект «заголовок колонки → текст ячейки или null» для колонок внутри таблицы, не сопоставленных с суммами и ИНН; title и description schema_version — «1.1»; пример examples/result-osv-minimal.json дополняется extra; новый пример examples/result-osv-needs-check.json (нарушение §1.4). Сообщение и запрос не меняются. Спека recognition-contract: требование «Файл результата» — v1.1.
  • 05-domain-rules.md §1: уточнения по факту реализации (статусы и коды D-6, формула «стратегия иерархии в metrics.warnings как hierarchy=<имя>», TOTAL в rows, лимиты парсера, словари по именам файлов), §1.5 — пометка ASSUMPTION(OQ-02).
  • 06-test-data.md: синтетика osv/synthetic/ (перечень файлов и что проверяет каждый), golden expected_osv_parse/ (формат снимка, процесс обновления), xlsb вручную.
  • 09-delivery-plan.md: Срез 2 разбит на 2a (парсер ОСВ), 2b (ББ/ОФР из Excel), 2c (загрузка и маппинг в ядре), 2d (UI «Первичные документы»); 08-source-docs-index.md/README без изменений.
  • 07-open-questions.md: новые OQ (коды валют для строк CURRENCY; поведение при нескольких ОСВ одного счёта в одной книге), статус OQ-81 (частично закрыт: в tabular-parser ARM_KA_FIXTURES поддержан хелпером, scan-gateway — follow-up), OQ-45/OQ-01/OQ-02 — пометка «допущение парсера, решение в 2c».

Capabilities

Modified Capabilities

  • recognition-contract: «Файл результата» — v1.1 с rows[].extra; «Версионирование контракта» — без изменений (MINOR по правилу).

Impact

  • Контракт: MINOR, обратно совместимо; копии обновляются в tabular-parser (в дочернем change) и arm-core (отдельный bounded-PR: только файл схемы и OsvRow.extra, логики нет). Порядок merge: docs → tabular-parser → arm-core.
  • Таблицы DBML: нет. Правила: §1 (уточнения без смены смысла), §1.5 (допущение).

Non-goals

  • §12 (ББ/ОФР из Excel) и statementDocument — не трогаются.
  • Изменение семантики is_cumulative, TOTAL, NU в ядре — подсрез 2c (OQ-02, OQ-01, OQ-45).
  • audit_action для статусов задания (OQ-55), дедуп по attempt (OQ-73).