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.valide— un document vient d'être validé (contexte : auteur).devis.cree— un devis est créé (contexte : montant en €).ticket.critique— un ticket de sévérité critique est ouvert.contrat.echeance_30j— un contrat arrive à échéance dans 30 jours.stock.rupture— une référence passe en rupture de stock.facture.impayee— une 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-app — notification dans la cloche du header (module Notification) ; idéal pour l'information courante.
- e-mail — pour les destinataires hors application ou les sujets à trace écrite (direction, juridique).
- SMS — ré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 monde — un rôle ou une équipe par règle ; évitez les listes de diffusion larges.
- Un canal adapté à l'urgence — in-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 supprimer — la 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 »).