SYS_PQ_4 — Procédure de notification Mattermost
Procédure légère. Mécanique détaillée dans les workflows Lot 5 + ADR. [CORPUS]
Objet
Décrire comment un workflow émet une notification homogène vers Mattermost, comment l'event_type est routé, et comment le message est mis en forme (template dédié ou passthrough). [CORPUS]
Domaine d'application
Tous les workflows (SYS + métier). Deux familles : system (erreurs/infra → canaux système permanents) et business (événements de dossier → canal du dossier). [CORPUS]
Références
- Workflows :
07§B2.6 (notify_system), §B2.7 (notify_business), §B2.4 (mattermost_post_message), §B2.5 (mattermost_channel_create), §B2.2 (get_routage_notif_config). [CORPUS] - ADR-040 — deux modes : template dédié
nom_event.md(forme fixe, masquage ligne-à-ligne du vide) ou passthroughdefault.md({{payload.corps}}, corps formaté dans le nœud Code émetteur). [CORPUS] - ADR-034 — la chaîne de livraison de notif ne porte jamais
error_handler(anti-récursion). [CORPUS] - ADR-023 — routage externalisé dans
routage_notifs.json. [CORPUS] - Convention mise en forme riche :
_CONFIG/templates_notifs/README.md(filet---+ titre####+ horodatage Paris + liste markdown imbriquée + masquage du vide). [CORPUS] - Pas de norme externe applicable. [STANDARD]
Définitions
- Famille :
system(canauxsystem-*) oubusiness(canal du dossier). [CORPUS] - event_type : identifiant logique de l'événement (ex.
workflow_error,dossier_etape,model_expiring). Routé viaroutage_notifs.json. [CORPUS] - RÈGLE D'OR : chaque clé de
payload{}↔ un{{payload.xxx}}du template. Clé manquante = placeholder non substitué silencieusement. [CORPUS] - Passthrough (
default.md) : template générique qui rend{{payload.corps}}(corps markdown préformaté côté émetteur, pour payloads dynamiques). [CORPUS]
Responsabilités (RACI)
| Activité | Workflow appelant | notify_system/business | get_routage_notif_config | mattermost_post_message | Gérant |
|---|---|---|---|---|---|
| Fournir event_type + payload aligné | R | C | — | — | C |
| Router event→canal/severity/template | A | R | R | — | — |
| Charger + interpoler le template | — | R | — | — | — |
| Poster le message | A | A | — | R | — |
| Maintenir routage + templates | C | — | C | — | R/A |
Déroulement (qui/quoi/quand/où)
- Appelant construit
{ event_type, payload{} }(aligné au template), appellenotify_system(ounotify_businessavecdossier_id+channel_id). [CORPUS] - notify_* résout le routage via
get_routage_notif_config(lit.data, ADR-023 amendée). [CORPUS] - notify_* charge le template (
.md) selon le mode (dédié oudefault.md), interpole les variables. [CORPUS] - notify_* poste via
mattermost_post_message(toujourschannel_iden expression — bug dropdown natif). [CORPUS] - Retourne
{ success, channel_id, post_id, error }. [CORPUS] - Création de canal dossier (si besoin) :
mattermost_channel_create(Search idempotent → création → ajout membres → message bienvenue avec@username→ INSERTcanaux_mattermost). ⚠️ le dossier parent doit exister dansregistre_dossiersavant (FK). [CORPUS]
Enregistrements associés
- Table de routage
routage_notifs.json(cf.SYS_FQ_4). [CORPUS] dossiers.canaux_mattermost(écrit parmattermost_channel_create). [CORPUS]- Messages Mattermost. [CORPUS]
Annexes
- event_types déclarés : voir
SYS_FQ_4. [CORPUS] - Anti-récursion (ADR-034) : Coupe 1 (retrait
errorWorkflowsur la chaîne de livraison) + Coupe 2 (onError:continueRegularOutputsur le nœud notif d'error_handler). [CORPUS]