EventEmitter
Le back utilise @nestjs/event-emitter (EventEmitter2) pour découpler la logique métier du module binomes (controllers/services) de l'envoi des notifications (mail/SMS).
- Activé globalement dans
back/src/app.module.tsviaEventEmitterModule.forRoot()(config par défaut, pas de wildcard). - Émission :
this.eventEmitter.emit('entite.action', new XxxEvent(...)), injecté (EventEmitter2) dans la plupart des controllers/services debinomes. - Écoute : quasi tous les listeners sont centralisés dans
NotificationService(back/src/binomes/services/notification.service.ts), un handler par@OnEvent('entite.action'). - Chaque événement a sa propre classe DTO dans
back/src/binomes/events/(juste les données transportées, pas de logique).
Règles non-évidentes
- Nommage
entite.action(ex:jeune.validate,benevole.validate-formation) mais pas strictement respecté partout (ex:jeune-majeur-mvlssans point) — copier le nom exact plutôt que de déduire un pattern. emit()est fire-and-forget : les handlersasyncdeNotificationServicene sont pas attendus, une erreur dedans devient une unhandled rejection sans remonter à l'appelant. Ne pas utiliser ce mécanisme pour un traitement dont l'appelant a besoin du résultat ou d'une erreur bloquante.- Certains
@OnEvent(...)sont commentés (ex:jeune.relance-onboarding) — event émis quelque part sans listener actif, ou listener désactivé volontairement. Vérifier avant de se fier à un événement existant.