# CLAUDE.md — scan-gateway Общий контекст системы — `../CLAUDE.md` и `../docs/`. Этот файл — только про этот сервис. ## Что это Адаптер внешней ИС Сканирование (Content AI) для PDF/PNG/JPG: положить файл во «Входящие» как `.` (временный `.part` — в `Tmp`), забрать все `Исходящие//*.json` (по одному json на документ), сохранить склеенный сырой ответ в S3 `raw/{job_id}.json` (в БД не регистрируется), очистить горячую папку (только при `SCAN_CLEANUP=true`), нормализовать в `../docs/contracts/recognition-result.schema.json` (`statementDocument`), опубликовать `files.tabular_parsed` (по умолчанию; задаётся OPENBAO__NATS__NATS_*_SUBJECT). Таймаут 5 мин → `TIMEOUT`. **Нет доступа к БД.** ## Правила - Нормализация по фактическим ответам `../fixtures/ocr/aep_*.json`, а не по ТЗ (OQ-13, OQ-14): confidence → 0–100, поля организации/даты — по тому, что реально приходит. - Один PDF может содержать ББ и ОФР → два документа в результате (по одному на таблицу ответа). - Dev-режим: эмулятор ИС Сканирование (`python -m src.scan_emulator`) ищет пару PDF + JSON по sha256 содержимого входящего файла; имя файла на выбор пары не влияет. Промах — набор `SCAN_EMULATOR_DEFAULT`, иначе `INVALID_DOCUMENT`. ## Соглашения шаблона