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(...)dansback/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
readestNULL.
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
superadminouadmin(guard de route), - si l'utilisateur qui assigne est
admin, il doit avoir l'optionmanager, - l'utilisateur cible (
adminId) doit avoir le profiladmin. - 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.adminIdexiste- 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.adminAssocieIdexiste- 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(expression0 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'statusUpdateDateentre J-6 et J-5adminIdnon 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".