Горячая папка: запись прямо в Input, как в старом АРМ; таймаут 20 мин (#26) #27
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/26-hotfolder-direct-write"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #26
Что сделано
Решение владельца 09.10.2026: запись в горячую папку ИС Сканирование — как в старом АРМ (
reference-old-arm/api/src/core/clients.py:111).put(режимыsmbиlocal): файл<job_id>.<ext>пишется сразу вInputоткрытиемwb; существующий файл перезаписывается. ВременногоTmp/.<имя>.part, каталогаTmpи rename у шлюза больше нет.RECOGNITION_FAILED; недописанный файл снимается только приSCAN_CLEANUP=true. Ошибка самого открытия ничего не удаляет (I-1).SCAN_TMP_DIRубран из настроек шлюза (остаётся у эмулятора; старые.envстартуют —extra="ignore").SCAN_TIMEOUT_SECONDSпо умолчанию 300 → 1200 (20 мин) — в паре со сроком ответа OCR в arm-core (RSHB/arm-core#87).SCAN_CLEANUP) больше не трогаетTmp. ОстаткиTmp/.*.partпрежних версий — убрать вручную.OPENBAO__SMB__SMB_LOGIN/SMB_PASSWORDуже передаются в сессию и в каждый вызов.OpenSpec change:
openspec/changes/hotfolder-direct-write/(дельта требований «Передача файла…» и «Очистка горячей папки под флагом»). План:docs/superpowers/plans/2026-10-09-hotfolder-direct-write.md.ASSUMPTION(OQ-79): ИС не берёт файл, пока шлюз держит его открытым на запись (монопольное открытие
smbclient), — так работал старый АРМ.Связанные PR: RSHB/arm-core (#87), RSHB/arm-ka-docs (#84).
Rulings I made
localтоже пишет прямо вInputInputпо-прежнему создаётся перед записью (терпимо к отказу в правах)mkdirна заданиеSCAN_CLEANUP=trueInputSCAN_TMP_DIRудалён у шлюза, у эмулятора осталсяconftest.py,test_worker.py, литерал"Tmp"в roundtripSHARING_VIOLATIONпри повторе задания в другом процессе →RECOGNITION_FAILED, как в старом АРМ (подтверждено владельцем 09.10.2026)RECOGNITION_FAILEDпри редком повторе после потери ackНаходки
SCAN_CLEANUP=trueудаляла целый файл прошлой доставки7d8a506HotFolder.put/cleanup(Tmp, жёсткая ссылка)validate_name: «dot-фай��ы — служебные.part»close()после сбояwriteмаскирует ошибку записи (текст конверта)SHARING_VIOLATIONвводит в заблуждениеtest_legacy_scan_tmp_dir_is_ignoredпроверяет env, а не.env-файл7d8a506M-6…M-8 — в PR arm-ka-docs.
Проверка
make check-fullпри остановленном стенде:🤖 Generated with Claude Code