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.ts via EventEmitterModule.forRoot() (config par défaut, pas de wildcard).
  • Émission : this.eventEmitter.emit('entite.action', new XxxEvent(...)), injecté (EventEmitter2) dans la plupart des controllers/services de binomes.
  • É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-mvls sans point) — copier le nom exact plutôt que de déduire un pattern.
  • emit() est fire-and-forget : les handlers async de NotificationService ne 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.