Skip to content

Notifications BO - Conditions de reception

Ce document liste les conditions qui declenchent la creation d'une notification BO (table notif) dans DEMA1N.

Portee

  • Type de notification: notifications internes BO (pas les emails/SMS transactionnels).
  • Source technique: appels a createNotif(...) dans back/src/binomes/services/notif.service.ts.

Regles generales de reception

  • Une notification est "recue" par l'admin dont l'ID est passe en 3e argument de createNotif(..., adminId, ...).
  • Aucune logique d'opt-in / newsletter n'est appliquee sur ces notifs BO.
  • Une notif est consideree "non lue" quand le champ read est NULL.

Cas de creation de notifications

1) assigner-jeune

  • Declencheur: appel PUT /jeune/associate.
  • Contexte: un jeune est assigne a un admin.
  • Conditions metier:
  • l'utilisateur qui assigne est superadmin ou admin (guard de route),
  • si l'utilisateur qui assigne est admin, il doit avoir l'option manager,
  • l'utilisateur cible (adminId) doit avoir le profil admin.
  • Destinataire de la notif: l'admin cible (adminId).
  • Description stockee: "<Prenom> <Nom> t'a ete assigne".
  • Code:
  • back/src/binomes/controllers/jeune.controller.ts (associateJeune)

2) vol-jeune

  • Declencheur: changement de suivi admin d'un jeune via changeAdminJeuneAndBinomeAndBenevole(...).
  • Contexte: un admin "reprend" un jeune deja suivi.
  • Condition exacte:
  • jeune.adminId existe
  • et jeune.adminId !== adminId (nouvel admin different de l'actuel).
  • Destinataire de la notif: l'ancien admin du jeune (jeune.adminId).
  • Description stockee: "<Prenom nouvel admin> a suivi le jeune <Prenom jeune> <Nom jeune>".
  • Code:
  • back/src/binomes/services/jeunes.service.ts (changeAdminJeuneAndBinomeAndBenevole)

3) vol-mentor

  • Declencheur: changement d'admin associe d'un mentor via changeAdminAssocieBenevoleAndBinomesAndJeunes(...).
  • Contexte: un admin "reprend" un mentor deja suivi.
  • Condition exacte:
  • benevole.adminAssocieId existe
  • et benevole.adminAssocieId !== adminId (nouvel admin different de l'actuel).
  • Destinataire de la notif: l'ancien admin associe du mentor (benevole.adminAssocieId).
  • Description stockee: "<Prenom nouvel admin> a suivi le mentor <Prenom mentor> <Nom mentor>".
  • Code:
  • back/src/binomes/services/benevoles.service.ts (changeAdminAssocieBenevoleAndBinomesAndJeunes)

4) jeune-apte (cron)

  • Declencheur: cron quotidien.
  • Horaire cron: 23:45 (expression 0 45 23 * * *).
  • Condition d'execution worker: WORKER_SERVER === '1'.
  • Contexte: alerte BO pour les jeunes en attente de matching.
  • Conditions de selection des jeunes:
  • status = 'APTE'
  • statusUpdateDate entre J-6 et J-5
  • adminId non null
  • Destinataire de la notif: l'admin du jeune (jeune.adminId).
  • Description stockee: "<Prenom jeune> <Nom jeune> attend d'etre matche depuis 5 jours".
  • Code:
  • back/src/binomes/services/cron-tasks.service.ts (notifyJeuneApte)
  • back/src/binomes/services/jeunes.service.ts (notifyJeuneApte)

Recapitulatif rapide

Slug Condition principale Destinataire
assigner-jeune assignation manuelle d'un jeune a un admin admin cible
vol-jeune changement d'admin d'un jeune deja suivi ancien admin du jeune
vol-mentor changement d'admin associe d'un mentor deja suivi ancien admin associe du mentor
jeune-apte jeune APTE depuis ~5 jours (cron) admin du jeune

Notes

  • Les emails/SMS transactionnels sont geres ailleurs (notamment NotificationService) et ne sont pas inclus dans cette doc.
  • Si besoin, faire une doc separee "emails/SMS - conditions de declenchement".