Status: ObjFtp.poll() implemented, ObjServiceTrader migration pending
Product: Codex (FullHouse/PIMS)
Files: ObjServiceTrader.py, ObjFtp.py
List remote files first, compare with trader.track_ftp:
After download, hash the ZIP. Check track_ftp for matching
hash with ProcessStatus='DONE'. Skip duplicates.
Add columns:
FileHash VARCHAR(64) — SHA256ProcessedAt DATETIMEProcessStatus VARCHAR(20) — DONE/FAIL/SKIPProcessError TEXTBackoffMinutes INTNothing new: 1 → 2 → 4 → 8 → 16 → 32 → 60 min (cap)
File processed: reset to 1 min
If no file received in 24 hours, send notification via
FatLine (ObjNotify).
fullhouse:
trader_sync:
min_interval_minutes: 1
max_interval_minutes: 60
alert_after_hours: 24
expected_files_per_day: 1
| File | Change |
|---|---|
| ObjServiceTrader.py | SFTP listing, hash dedup, tracking, backoff, errors |
| ObjServiceTrader.yaml | Queries for track_ftp CRUD |
| ObjFtp.py | Ensure ListDir returns file metadata (size, date) |
| File | Reason |
|---|---|
| ObjServiceImportSql.py | Already uses track_ftp |
| Compute() method | Core ZIP processing unchanged |