Skip to content

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_JUILLET et BREVO_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