Documentation — Notifications ciblées

Moteur de règles de notification : modèle de règle, événements disponibles, canaux et bonnes pratiques anti-spam.

Modèle de règle

Une règle associe un événement métier à des destinataires (équipe ou rôle) et à un ou plusieurs canaux. La condition est optionnelle et lisible (ex. « montant > 10 000 ») ; le statut (actif) permet de suspendre sans supprimer, et le compteur declenchements7j sert au suivi anti-spam.

{
  "nom": "Gros devis → direction commerciale",
  "evenement": "devis.cree",
  "condition": "montant > 10 000",          // optionnelle, lisible
  "destinataires": "Direction commerciale", // équipe ou rôle, pas d'adresses en dur
  "canaux": ["e-mail", "in-app"],           // in-app | e-mail | SMS
  "actif": true,
  "declenchements7j": 4
}

Événements disponibles

  • document.valideun document vient d'être validé (contexte : auteur).
  • devis.creeun devis est créé (contexte : montant en €).
  • ticket.critiqueun ticket de sévérité critique est ouvert.
  • contrat.echeance_30jun contrat arrive à échéance dans 30 jours.
  • stock.ruptureune référence passe en rupture de stock.
  • facture.impayeeune facture dépasse sa date d'échéance (contexte : montant).

À chaque événement émis, le moteur évalue toutes les règles actives dont l'événement correspond ; si la règle porte une condition de montant, elle ne se déclenche que si le contexte fournit un montant qui la satisfait.

Canaux

  • in-appnotification dans la cloche du header (module Notification) ; idéal pour l'information courante.
  • e-mailpour les destinataires hors application ou les sujets à trace écrite (direction, juridique).
  • SMSréservé à l'urgence réelle (astreinte, incident critique) : coûteux et intrusif.

Bonnes pratiques anti-spam

  • Conditionnez« devis créé » sans seuil noie la direction ; « montant > 10 000 » cible les cas qui comptent.
  • Ciblez une équipe, pas tout le mondeun rôle ou une équipe par règle ; évitez les listes de diffusion larges.
  • Un canal adapté à l'urgencein-app par défaut, e-mail si une trace est nécessaire, SMS uniquement pour l'astreinte.
  • Surveillez les déclenchements (7 j)une règle qui part des dizaines de fois par semaine doit être resserrée ou regroupée en digest.
  • Suspendez plutôt que supprimerla pause conserve la configuration ; dupliquez pour tester une variante sans toucher à la règle en service.

Intégration en production

Le simulateur fonctionne en local (état React seedé) ; le canal in-app est déjà branché sur le contexte de notifications de l'application. Pour un vrai backend : persister les règles (table notification_rules), abonner le moteur à votre bus d'événements (webhooks, file de messages), résoudre les équipes en destinataires concrets au moment de l'envoi, et journaliser chaque déclenchement (l'équivalent du « Journal des déclenchements »).

Ouvrir le simulateur