"""Горячие папки ИС Сканирование: фабрика по настройкам (R-6). `SCAN_HOTFOLDER_MODE=local` — `LocalHotFolder` (модуль `src.gateway.smb` не импортируется), `smb` — `SmbHotFolder` из `OPENBAO.SMB` (импорт модуля — только здесь, лениво). """ from src.core.config import Settings from src.gateway.hotfolder import HotFolder, LocalHotFolder __all__ = ["create_hotfolder"] def create_hotfolder(settings: Settings) -> HotFolder: """Горячая папка для режима `SCAN_HOTFOLDER_MODE`. К файловой системе и шаре не обращается.""" mode = settings.SCAN_HOTFOLDER_MODE if mode == "local": return LocalHotFolder( settings.SCAN_HOTFOLDER_PATH, settings.SCAN_INPUT_DIR, settings.SCAN_OUTPUT_DIR, settings.SCAN_TMP_DIR, settle_seconds=settings.SCAN_SETTLE_SECONDS, cleanup=settings.SCAN_CLEANUP, ) if mode == "smb": from src.gateway.smb import SmbHotFolder # noqa: PLC0415 — ленивый импорт: в режиме local smb не нужен (R-6) smb = settings.OPENBAO.SMB return SmbHotFolder( smb.SMB_HOST, smb.SMB_PATH, settings.SCAN_INPUT_DIR, settings.SCAN_OUTPUT_DIR, login=smb.SMB_LOGIN, password=smb.SMB_PASSWORD, settle_seconds=settings.SCAN_SETTLE_SECONDS, cleanup=settings.SCAN_CLEANUP, ) raise ValueError(f"неизвестный SCAN_HOTFOLDER_MODE: {mode!r}")