3 KiB
Tâches planifiées (cron)
Page : /cron (admin uniquement)
Permet de créer des tâches automatiques de synchronisation et/ou de push.
Architecture
OS cron (toutes les minutes)
↓
docker exec eptm-dashboard-app-1 python scripts/cron_tick.py
↓
Lit la table CronJob → identifie les tâches à exécuter maintenant
↓
Pour chaque tâche due :
- Lance push_to_escada.py et/ou sync_esacada.py + run_imports.py
- Met à jour last_run_at, last_status, last_message
- Envoie une notification Telegram (selon notify_on)
Le tick s'exécute toutes les minutes via la crontab du host. Le timezone du conteneur est aligné sur Europe/Zurich pour correspondre aux horaires saisis dans l'UI.
Types de tâches
| Type | Action |
|---|---|
push |
Pousse les pendings vers Escada uniquement |
sync |
Récupère depuis Escada uniquement (selon options abs/BN/notes/fiches) |
push_then_sync |
Pousse les pendings, puis récupère |
Schedules
Trois types de planning sont disponibles :
- Quotidien (daily) : à une heure fixe chaque jour. Ex :
03:00. - Hebdo (weekly) : à une heure fixe certains jours. Ex :
MON,WED,FRI:08:30. - Intervalle (interval) : toutes les N minutes. Ex :
30= toutes les 30 minutes.
Options de sync (pour task_kind=sync ou push_then_sync)
sync_abs: récupère les absencessync_bn: récupère les BNsync_notes: récupère les notessync_fiches: récupère les données apprentisforce_abs: forçage (cf. doc Sync Escada)classes_json:"ALL"ou liste de classes spécifiques
Notifications Telegram
Pour chaque tâche, on configure :
notify_on ∈ {"never", "always", "success", "failure"}notify_level ∈ {"normal", "detailed"}notify_chat_id: pour cibler un chat différent du chat global (vide = utiliser le défaut)
Voir la section Notifications Telegram pour les détails.
Activation / désactivation
Le toggle dans la liste des tâches active ou désactive sans supprimer. Quand on réactive une tâche, son last_run_at est remis à None pour qu'elle se déclenche au prochain tick (sinon elle attendrait la fin de l'intervalle complet).
Logs persistants
Chaque exécution écrit son log détaillé dans /logs/cron/cron-{job_id}-{timestamp}.log. Ce dossier est en bind mount Docker → les logs survivent à la recréation du conteneur.
Audit
Toute modification (création/édition/activation/suppression) est tracée :
[09:14:22] [cron] prof.demo : création tâche 'Sync nocturne' (id=4) — push_then_sync / 03:00 / activée
[09:30:05] [cron] prof.demo : désactivation tâche 'Push 30min' (id=2)
Bouton "Tester Telegram"
Bas de page : envoie un message de test au chat_id global pour vérifier la config bot.