SYS_PRO_4 — Notifications Mattermost (system & business)
Manuel LÉGER. Processus implémenté (Lot 5, amendé 6d/6e/6f/6g/6h). Source du quoi :
07_Reference_Systeme.md§B2.2/§B2.4/§B2.5/§B2.6/§B2.7. Source du pourquoi : ADR-034, ADR-040, ADR-023. [CORPUS]
Objet et finalité
Fournir une architecture de notification unique et réutilisable par tous les workflows : router un event_type vers la bonne famille (system/business), le bon canal Mattermost, la bonne severity et le bon template, puis poster le message. C'est le substrat de communication descendante du jumeau numérique (humain informé par les agents). [CORPUS]
Finalité : tout événement notable (erreur infra, étape de dossier, alerte modèle, récap d'ingestion…) atterrit au bon endroit, au bon format, sans que chaque workflow ne réinvente la mécanique. Règle d'or transverse : payload du nœud ↔ variables du template documentés au même endroit. [CORPUS]
Pilote
- Direction pilote : SYS — Système.
- Acteurs : sub-workflows
notify_system,notify_business,mattermost_post_message,mattermost_channel_create,get_routage_notif_config. Pas d'agent LLM. Supervision : gérant. [CORPUS]
Déclencheurs (entrées)
- Appel
Execute Workflowdenotify_systemounotify_businesspar n'importe quel workflow. [CORPUS] - INPUT
notify_system:{ event_type, severity?, payload{} }. [CORPUS] - INPUT
notify_business:{ event_type, dossier_id, channel_id, agent_source?, severity?, payload{} }(lechannel_idest fourni par l'appelant). [CORPUS]
Sorties et livrables
- Message posté dans Mattermost (canal système ou canal dossier). OUTPUT :
{ success, channel_id, post_id, error }. [CORPUS] - 2 canaux système permanents :
system-errors,system-activity(+system-statsréservé). [CORPUS] - Canaux dossier créés/réutilisés par
mattermost_channel_create(nommageYYMMDD-NN-CLIENT-VILLE). [CORPUS]
Acteurs
| Acteur | Rôle |
|---|---|
notify_system | notifs famille system (erreurs, infra) → canaux système [CORPUS] |
notify_business | notifs famille business (dossier) → canal du dossier [CORPUS] |
mattermost_post_message | utilitaire bas niveau (post via nœud natif) [CORPUS] |
mattermost_channel_create | crée/réutilise un canal dossier + INSERT canaux_mattermost [CORPUS] |
get_routage_notif_config | DAL routage (event→famille/canal/severity/template) [CORPUS] |
Bot jarfish-bot (mattermost_bot_prod) | identité d'émission [CORPUS] |
Logigramme (étapes macro)
[appelant] notify_system { event_type, severity?, payload } (ou notify_business { …, dossier_id, channel_id })
│
[1] get_routage_notif_config → résout { famille, canal_cible, severity_default, template_path }
│
[2] Charge le template .md (dédié nom_event.md OU passthrough default.md — ADR-040)
│
[3] Interpole {{payload.xxx}}, {{severity}}, {{event_type}} (+ {{dossier_id}},{{agent_source}} en business)
│
[4] mattermost_post_message → POST dans le canal résolu
│
[5] Output { success, channel_id, post_id, error }
Détail : 07 §B2.6/§B2.7/§B2.2. [CORPUS]
Procédures et instructions rattachées
SYS_PQ_4— Procédure de notification (familles, canaux, templates, anti-récursion, renvois).SYS_IQ_4— Instruction : émettre une notification (mapping event_type, RÈGLE D'OR payload↔template, 2 modes ADR-040) — embryon de catalogue.SYS_FQ_4— Formulaire : table de routage desevent_type(configroutage_notifs.json).
Interfaces amont/aval (handoffs)
- Amont : tout workflow (SYS et métier). En particulier :
SYS_PRO_3(eventmodel_expiring),SYS_PRO_5(eventsworkflow_error,llm_error),SYS_PRO_1(échec →llm_error), ingestion (ingestion_corpus), agents métier Lot 9+ (dossier_etape,production_agent). [CORPUS] - Aval : Mattermost (interface humaine). À terme : panneau in-app via API Mattermost (ADR-039), jamais lecture directe de la DB Mattermost. [CORPUS]
- Anti-récursion (ADR-034) : la chaîne de livraison de notif ne porte jamais
error_handlercomme Error Workflow → handoff implicite avecSYS_PRO_5. [CORPUS]
Indicateurs (KPI)
| KPI | Définition | Source |
|---|---|---|
| Taux de notif livrées | success=true / total | OUTPUT workflows [STANDARD] |
| Placeholders non substitués | détection de {{…}} résiduels (violation RÈGLE D'OR) | revue manuelle / log [CORPUS] |
| Volume notif par event_type / canal | comptage | historique n8n [STANDARD] |
Enregistrements
- Messages Mattermost (canaux système + dossier). [CORPUS]
dossiers.canaux_mattermost(lien dossier↔canal, écrit parmattermost_channel_create) — enregistrement partagé, propriété ADV/Lot 9 ; SYS fournit le primitif. [CORPUS]- Historique d'exécutions n8n. [CORPUS]
Cas d'usage rattachés (UC-* du Recueil + nouveaux)
- UC-SYS-06 (nouveau) — Notifier une erreur infra au canal
system-errors(depuis n'importe quel workflow). [CORPUS] - UC-SYS-07 (nouveau) — Notifier une étape de dossier au canal du dossier (
dossier_etape, famille business). [CORPUS] - Liés : UC-E04 (alerte attente labo > seuil → notif), UC-D01 (récap ingestion
ingestion_corpus). [CORPUS] - Réservé : UC lié à P20 (
stats_quotidiennes/ canalsystem-stats, post-projet). [CORPUS]
Roadmap (PQ/IQ/FQ restant à développer)
- Cadrage notifs riches (post-6g) : préfixe
[CATEGORIE]+ emoji + attachment coloré par severity poursystem-errors/system-activity; threads-par-étape pour canaux dossier (threads ≠ étiquettes — anti-pattern). ADR de cadrage à acter. → futurSYS_IQ_4_2. [CORPUS] mattermost_categorize_channel(P30) : ranger un canal dans une catégorie de sidebar (HTTP Request, per-user) — primitif post-projet. [CORPUS]- Aligner payload↔template
sync_model_capabilities(P30 doublon04) :workflow_success_summary.mdn'interpole pas tous les champs émis (violation RÈGLE D'OR à corriger). [CORPUS] - Panneau in-app (ADR-039) : surface de lecture des notifications via API (web-app), différé. [CORPUS]
- Réserver/activer
system-stats+stats_quotidiennes(P20) quand assez de données opérationnelles. [CORPUS]