Клиент — фото-студия. После съёмки ретушёры кладут готовые JPEG в общую папку на NAS; менеджер вручную заливал на FTP клиента и писал в Telegram «готово». Пропуски файлов и задержки до нескольких часов.
Задача: Python-скрипт (watchdog) — следит за WATCH_DIR, при новом файле → валидация (размер, расширение) → upload S3 или FTP → запись в log → Telegram-уведомление. Настройки в .env.
Реализация:
• watchdog Observer на папку (в т.ч. подпапки по проектам);
• debounce 5 сек — дождаться окончания записи файла;
• валидация: .jpg/.png, min size, optional hash dedup;
• upload: boto3 (S3) или ftplib (FTP), retry 3× с backoff;
• state.json: уже загруженные файлы, не дублировать;
• Telegram bot: «project X: uploaded 12 files» / alert on error;
• systemd unit или Task Scheduler для автозапуска.
Стек: Python 3.11, watchdog, boto3, python-telegram-bot, dotenv. Приёмка: 50 тестовых файлов, 0 потерь, алерт при обрыве FTP.
Итог: загрузка через 1–2 мин после появления файла; ручная работа менеджера −90%. NDA: студия не публикуется.