2026-10-09 16:22:07 +04:00

3.7 KiB
Raw Blame History

Why

Решение владельца 09.10.2026: запись входящего файла в горячую папку ИС Сканирование — «как в старом АРМ», где она работала в контуре: smbclient.open_file('<SMB_PATH>/Input/<имя>', 'wb') прямо во входящий каталог (reference-old-arm/api/src/core/clients.py:111). Нынешняя схема (временный Tmp/.<имя>.part + rename без замены, OQ-79, OQ-137) требует от учётной записи шары каталога Tmp, прав на его создание и на переименование и в контуре не проверялась. Там же владелец решил: срок ожидания ответа OCR — 20 минут. Issue — RSHB/arm-scan-gateway#26. Вне среза 09-delivery-plan.md (доработка Среза 3a по эксплуатации).

What Changes

  • put (режимы smb и local): файл <job_id>.<ext> пишется сразу во входящий каталог, открытием на запись с усечением (wb); существующий файл перезаписывается (как в старом АРМ). Временного файла, каталога Tmp и переименования больше нет.
  • Настройка шлюза SCAN_TMP_DIR удаляется; параметр tmp_dir у SmbHotFolder удаляется. У LocalHotFolder он остаётся только для эмулятора (сборка набора ответа, переменная эмулятора SCAN_TMP_DIR не меняется).
  • Очистка (SCAN_CLEANUP=true) больше не удаляет Tmp/.<job_id>.<ext>.part.
  • SCAN_TIMEOUT_SECONDS по умолчанию 300 → 1200 (20 мин) — в паре с reply_deadline OCR 20 мин в arm-core (RSHB/arm-core#87).
  • README, CLAUDE.md, api/.env.example, тесты — под новую семантику.

Non-goals

  • Протокол ответа (Output/<job_id>/*.json, стабилизация набора, OQ-78) не меняется.
  • Эмулятор ИС не меняется: он по-прежнему пропускает *.part/*.tmp/dot-файлы и собирает ответ через свой Tmp.
  • Аутентификация SMB не меняется: OPENBAO__SMB__SMB_LOGIN/SMB_PASSWORD уже передаются в сессию и в каждый вызов.
  • Таймаут вызовов smbclient (соединение ~60 с по умолчанию библиотеки) не трогаем.
  • Таблицы DBML не затрагиваются.

Capabilities

New Capabilities

Modified Capabilities

  • image-recognition-gateway: запись входящего файла без временного файла и с перезаписью; очистка без Tmp.

Impact

  • ASSUMPTION(OQ-79): ИС Сканирование не берёт файл, пока шлюз держит его открытым на запись (smbclient.open_file по умолчанию открывает монопольно), — так работал старый АРМ. Если подтвердится обратное, вернуть запись через временный файл.
  • Учётной записи шары больше не нужны права на Tmp и на переименование; нужна запись в Input.
  • Остатки Tmp/.*.part от прежних версий шлюз больше не трогает — убрать вручную.