Add FTP/SFTP support and tree-view folder picker with lazy loading
FTP/SFTP processor: - New ftp_processor.py with adapter pattern for FTP (passive) and SFTP - Same design as smb_processor: read PDFs, forward via SMTP, move to processed - Eingangs-/Ausgangsbelege with separate paths, modes (forward/separator) - paramiko==3.5.0 for SFTP support - Schema v9 with new ftp_* settings - Integrated in scheduler Tree-view folder picker (SMB + FTP): - Reusable tree rendering from flat path lists - Expandable/collapsible nodes with toggle arrows - Lazy loading: only top-level folders on open, sub-folders on-demand - Auto-expand ancestors of currently selected value (with preload) - Reload button stays for manual refresh - Always fresh load when opening picker - New endpoints: /api/list-smb-subfolders, /api/list-ftp-subfolders FTP-specific fixes: - list_pdfs uses LIST instead of NLST (more reliable across servers) - Stateful CWD bug fixed in ensure_dir/stat_exists/rename (previously created /Buch/Buch/X instead of /Buch/X due to CWD drift) - All operations reset CWD via _reset_cwd() before stateful calls - _resolve() helper for SFTP to handle empty path / chroot users Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,7 @@ from apscheduler.triggers.interval import IntervalTrigger
|
||||
|
||||
from app.mail_processor import process_mailbox
|
||||
from app.smb_processor import process_smb_share
|
||||
from app.ftp_processor import process_ftp
|
||||
from app.amazon_processor import process_amazon
|
||||
from app.amazon_api import process_amazon_api
|
||||
from app.database import get_settings
|
||||
@@ -33,6 +34,10 @@ async def _run_processor():
|
||||
smb_result = await process_smb_share()
|
||||
logger.info(f"SMB-Verarbeitung abgeschlossen: {smb_result}")
|
||||
|
||||
logger.info("Starte automatische FTP-Verarbeitung...")
|
||||
ftp_result = await process_ftp()
|
||||
logger.info(f"FTP-Verarbeitung abgeschlossen: {ftp_result}")
|
||||
|
||||
# Amazon separately with timeout - must not block next scheduler runs
|
||||
logger.info("Starte automatische Amazon-Verarbeitung...")
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user