Andrey Epifancev ce0702ac9b chore(openspec): архив contract-identity-window и statements-v2 (#42, #46)
Ссылки README и CLAUDE.md ведут в архив.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 09:26:39 +04:00

3.4 KiB
Raw Blame History

Why

Единая нормализация ББ/ОФР (docs change unified-statement-normalization, RSHB/arm-ka-docs#116): шаги 2–8 разбора вынесены в общий пакет arm_statements, контракт результата распознавания поднят до 2.0. Шлюз оставляет у себя обмен с ИС Сканирование и адаптер «таблица json ИС → FormCandidate», а собственный нормализатор и справочники удаляет. Требования — спека docs specs/scan-gateway/spec.md (требования «Адаптер json ИС шага 1», «Ошибки набора json», «Что уходит из шлюза») и specs/recognition-contract/spec.md.

What Changes

  • Адаптер normalizer/ocr/adapter.py: каждая таблица каждого успешного json — один FormCandidate (шапка json копируется в шапку каждой таблицы, label — заголовок в evidence, плотная сетка, Cell.ref = row:<row_index>, locator = file:<имя json>;table:<i>).
  • Обход набора json (normalizer/ocr/answer_set.py, normalizer/files.py): предупреждения файла JSON_FAILED, TABLE_PARSE_ERROR; TABLE_LOST / TABLE_SKIPPED — от пакета; статус — envelope_status пакета.
  • Контракт результата 2.0: schema_version = "2.0" у файла и конверта (включая ack), структурные metrics.warnings, service.statements_version в файле результата; перевод в контракт — to_contract / warning_to_contract пакета.
  • Удаление собственного нормализатора шагов 2–8 (normalizer/ocr/text|dates|amounts|layout|rows|header|document), normalizer/rules.py, api/rules/*.yaml и SCAN_RULES_DIR; словари — default_rules() пакета.
  • Golden fixtures/ocr/expected_normalize/* пересобираются (отдельная ветка и PR в fixtures).

Порядок выкладки

Шаг 5 выкладки «сначала ядро» (docs proposal.md): слияние PR шлюза — только по команде человека и только после выкладки на контур arm-core, принимающего 2.0. Golden в fixtures сливается первым, PR scan-gateway — сразу за ним (окно, в котором golden в main красный, держать минимальным). Запрос recognition-request остаётся 1.x.

Non-goals

  • Горячие папки, опрос, settle, склейка raw/{job_id}.json, очистка, таймауты, эмулятор не меняются.
  • Копия api/arm_statements/ не правится (её раскладывает sync-statements); тест идентичности контракта не меняется.

Impact

  • api/src/normalizer/**, api/src/contract/**, api/src/core/worker, настройки (SCAN_RULES_DIR удалён), api/rules/ (удалён), api/contracts/ (копия схем 2.0), тесты, CLAUDE.md/README.
  • Issue: RSHB/arm-scan-gateway#46; план — docs/openspec/changes/unified-statement-normalization/plans/2026-10-18-plan-5-scan-gateway.md.