## CHLOVA Alerts - **Type** : `workflow-n8n` - **Version** : `v1.0.0` - **Palier de risque** : `privileged` (envoie des mails / sortie externe) - **Statut (need-review)** : `n/a` (créé à la main, hors auto-extension) - **Lien commit** : voir tag `v0.18.0` - **Créé le** : 2026-06-23 - **Fichier** : `workflows-n8n/chlova-alerts.v1.0.0.json` ### Rôle Reçoit les alertes du backend CHLOVA (webhook) et envoie un mail. Met en œuvre la stratégie anti-fatigue : tentative bloquée, 1ʳᵉ exécution provisoire, rappel J-1, digest quotidien (voir `docs/need-review.md`). ### Entrées / sorties - **Entrée** : `POST /webhook/chlova-alert`, corps JSON `{ source, ts, kind, ... }` (`kind` ∈ blocked_attempt | first_provisional_exec | countdown_j1 | daily_digest). Jamais de secret. - **Sortie** : un mail (sujet + corps formatés par le node *Format mail*). ### Dépendances - n8n (instance existante) + credential **SMTP** (`SMTP CHLOVA`, à créer dans n8n). - Backend : variable `ALERT_WEBHOOK_URL` = URL de ce webhook (par **référence**). ### Sécurité - Le webhook ne reçoit que des métadonnées (ids/types/statuts/dates). - Destinataire et identifiants SMTP vivent dans n8n (jamais dans le dépôt) : remplacer `toEmail` et le credential `smtp` après import. - Palier `privileged` : sortie mail externe. ### Rollback - Désactiver/supprimer le workflow dans n8n ; ou vider `ALERT_WEBHOOK_URL` côté backend → retour au log-only (`NullAlertSender`), sans rupture. - `git revert` du commit pour retirer l'export. ### Tests / vérification - Importer le JSON, brancher SMTP, exécuter un `POST` de test avec `{"kind":"daily_digest","blocked":1,"provisional":0,"items":[]}` → mail reçu. - Le dépôt fait foi : ré-exporter le workflow ici après toute modif (bump version).