Ссылки README и CLAUDE.md ведут в архив. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3.4 KiB
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.