39 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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`.