Срез 3a: горячие папки как в armka_file_worker + нормализатор OCR → statementDocument v1.2 #6

Closed
opened 2026-10-06 16:20:19 +03:00 by aep · 0 comments
Owner

Решение владельца 06.10.2026: эталон раскладки горячих папок ИС Сканирование — сервис RSHB/armka_file_worker (PDFWorker старого АРМ, проверен в контуре). Текущая раскладка scan-gateway (спека image-recognition-gateway, gateway/hotfolder.py, gateway/smb.py) расходится с ним в трёх местах.

Привести scan-gateway к раскладке FileWorker:

  • Имя входящего файла — <job_id>.<ext> (расширение исходного файла в нижнем регистре), а не <job_id>_<original_name>. original_name в имя не входит.
  • Временный файл записи — <назначение>.<uuid4>.tmp рядом с назначением в Input, затем атомарный rename без замены (replace_if_exists = False; если назначение уже есть — считать доставленным). ИС игнорирует *.tmp. Служебный каталог Tmp (SCAN_TMP_DIR, OQ-79) становится не нужен — убрать или оставить как необязательную настройку, решить при brainstorming.
  • Output/<job_id>/*.json — без изменений (батч появляется целиком и больше не меняется; пустой или отсутствующий каталог = ожидание). Стабилизация набора (SCAN_SETTLE_SECONDS) совместима, можно оставить.
  • Очистка после успешного чтения результата: удалить Output/<job_id>/*.json, сам каталог и входящий файл Input/<job_id>.<ext> (FileWorker: cleanup_result). Сейчас scan-gateway ничего не удаляет.
  • Обновить спеку openspec/specs/image-recognition-gateway (сценарии с <job_id>_aep_5.pdf, Tmp/), эмулятор ИС (scan_emulator), тесты и README.

Не трогать: контракт recognition.* и формат raw/{job_id}.json — это наш контракт с ядром, а не контракт ИС.

Справочно, код FileWorker: api/src/core/clients.py (SMBStorage.dispatch, _publish, discover_results, cleanup_result), README раздел «Файлы».

Решение владельца 06.10.2026: эталон раскладки горячих папок ИС Сканирование — сервис `RSHB/armka_file_worker` (PDFWorker старого АРМ, проверен в контуре). Текущая раскладка scan-gateway (спека `image-recognition-gateway`, `gateway/hotfolder.py`, `gateway/smb.py`) расходится с ним в трёх местах. Привести scan-gateway к раскладке FileWorker: - [ ] Имя входящего файла — `<job_id>.<ext>` (расширение исходного файла в нижнем регистре), а не `<job_id>_<original_name>`. `original_name` в имя не входит. - [ ] Временный файл записи — `<назначение>.<uuid4>.tmp` **рядом с назначением в `Input`**, затем атомарный rename без замены (`replace_if_exists = False`; если назначение уже есть — считать доставленным). ИС игнорирует `*.tmp`. Служебный каталог `Tmp` (`SCAN_TMP_DIR`, OQ-79) становится не нужен — убрать или оставить как необязательную настройку, решить при brainstorming. - [ ] `Output/<job_id>/*.json` — без изменений (батч появляется целиком и больше не меняется; пустой или отсутствующий каталог = ожидание). Стабилизация набора (`SCAN_SETTLE_SECONDS`) совместима, можно оставить. - [ ] Очистка после успешного чтения результата: удалить `Output/<job_id>/*.json`, сам каталог и входящий файл `Input/<job_id>.<ext>` (FileWorker: `cleanup_result`). Сейчас scan-gateway ничего не удаляет. - [ ] Обновить спеку `openspec/specs/image-recognition-gateway` (сценарии с `<job_id>_aep_5.pdf`, `Tmp/`), эмулятор ИС (`scan_emulator`), тесты и README. Не трогать: контракт `recognition.*` и формат `raw/{job_id}.json` — это наш контракт с ядром, а не контракт ИС. Справочно, код FileWorker: `api/src/core/clients.py` (`SMBStorage.dispatch`, `_publish`, `discover_results`, `cleanup_result`), README раздел «Файлы».
aep changed title from Горячие папки ИС Сканирование как в armka_file_worker: Input/<job_id>.<ext>, временный .tmp рядом, очистка Output/<job_id> to Срез 3a: горячие папки как в armka_file_worker + нормализатор OCR → statementDocument v1.2 2026-10-06 17:34:07 +03:00
aep closed this issue 2026-10-07 04:05:00 +03:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-scan-gateway#6
No description provided.