Tâches planifiées (cron tasks)
Définies dans api/src/core/cron-tasks/cron-tasks.ts. Toutes les tâches datées utilisent le fuseau Europe/Paris.
Tâches récurrentes (automatiques)
| Méthode | Schedule | Description |
|---|---|---|
monitorMuxAssets |
toutes les 2 secondes | Surveille l'état des assets vidéo Mux et met à jour leur statut |
updateElasticDatabase |
toutes les minutes | Synchronisation incrémentale de l'index ElasticSearch |
updateElasticDatabaseDaily |
chaque jour à minuit | Synchronisation complète (force all) de l'index ElasticSearch |
mailToNotifyNewMessage |
chaque jour à 19h | Envoie un email aux éclaireurs ayant reçu un message non lu dans le chat |
mailToNotifyAbsenceOfResponseFromEclaireur |
chaque jour à 20h | Envoie un email aux lycéens dont l'éclaireur n'a pas répondu |
Tâches annuelles (rentrée scolaire — 1er août)
| Méthode | Schedule | Description |
|---|---|---|
resetIsProfileCompleteForNewSchoolYear |
1er août à 00h00 | Remet isProfileComplete à false pour tous les éclaireurs — ils doivent re-valider leur profil pour la nouvelle année |
hideInactiveEclaireursForNewSchoolYear |
1er août à 00h05 | Passe en statut caché les éclaireurs visibles n'ayant aucun parcours sur les 2 dernières années scolaires ; désindexe ces profils d'ElasticSearch |
notifyAndDeleteObsoleteAccountsAugust |
1er août à 00h10 | Envoie l'email final (Brevo) aux utilisateurs non-admin 27+ ans révolus, puis les anonymise 15 min après |
Tâches annuelles (archivage — 1er juillet)
| Méthode | Schedule | Description |
|---|---|---|
notifyObsoleteAccountsJuly |
1er juillet à 00h00 | Envoie un email d'avertissement (Brevo) aux utilisateurs non-admin ayant plus de 27 ans révolus ; aucune suppression à ce stade |
Logique d'archivage des comptes obsolètes
- Population ciblée : utilisateurs sans rôle Admin, dont la date de naissance est renseignée et dont l'âge est ≥ 27 ans révolus à la date de référence.
- 1er juillet : email d'avertissement (
BREVO_TEMPLATE_ARCHIVAGE_JUILLET). Paramètre envoyé :PRENOM. - 1er août : email final (
BREVO_TEMPLATE_ARCHIVAGE_AOUT), calculé sur les utilisateurs ayant eu 27 ans révolus au 1er juillet de l'année en cours. Paramètre envoyé :PRENOM. 15 minutes après l'envoi, les comptes sont anonymisés via le pipeline standard (UserService.delete) et l'index ElasticSearch est resynchronisé. - Anonymisation : même pipeline que la suppression manuelle — champs personnels effacés, email brouillé, notification RabbitMQ, soft-delete.
- Limite : le délai de 15 min est géré par
setTimeout; un redémarrage du serveur dans cette fenêtre annulerait la suppression différée. Le cron août peut être relancé manuellement si nécessaire.
TODO : renseigner les IDs de templates Brevo dans
cron-tasks.ts(BREVO_TEMPLATE_ARCHIVAGE_JUILLETetBREVO_TEMPLATE_ARCHIVAGE_AOUT).
Simulation manuelle (admin)
Les tâches ci-dessus (hors monitorMuxAssets et updateElasticDatabase qui tournent en continu) peuvent être déclenchées manuellement depuis l'interface admin : Admin → Tâches planifiées.
Les endpoints correspondants : POST /cron-tasks-admin/run/:task avec les valeurs de :task :
- update-elastic-daily
- notify-new-message
- notify-absence-of-response
- reset-profile-complete
- hide-inactive-eclaireurs
- notify-obsolete-accounts-july
- notify-and-delete-obsolete-accounts-august