b617487d0d
Export JSON workflows-n8n/chlova-alerts.v1.0.0.json (webhook → mail, formate par type d'alerte) + doc d'asset (palier privileged, rollback). ALERT_WEBHOOK_URL dans .env.example + compose (vide = log-only). need-review.md : alertes implémentées. Compose revalidé, 53 tests, 0 vuln. Palier de risque : privilégié (workflow envoie des mails) — désactivable via ALERT_WEBHOOK_URL vide ; non exécuté depuis le dépôt. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
41 lines
1.8 KiB
Markdown
41 lines
1.8 KiB
Markdown
## 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).
|