feat: workflow n8n d'alerte + doc, fin Phase 3 (v0.18.0)
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>
This commit is contained in:
+13
-3
@@ -50,8 +50,18 @@ peut alors valoir `false`).
|
||||
- `git revert` du commit de l'asset fautif ; redeploy version N-1 (GitOps).
|
||||
- Un asset REFUSÉ reste tracé (audit) ; suppression via op SQL manuelle si besoin.
|
||||
|
||||
## Reste à faire (Phase 3+)
|
||||
- Alertes mail via n8n (1ʳᵉ exéc provisoire, digest quotidien, rappel J-1,
|
||||
alerte BLOQUÉ) — actuellement un simple hook de log `onBlockedAttempt`.
|
||||
## Alertes (Phase 3 — implémenté)
|
||||
Stratégie anti-fatigue (`src/alerts/`) :
|
||||
- **tentative bloquée** → alerte immédiate (`onBlockedAttempt`) ;
|
||||
- **1ʳᵉ exécution d'un asset PROVISOIRE** → alerte immédiate (`onFirstProvisionalExec`) ;
|
||||
- **digest quotidien** + **rappel J-1** → `startAlertScheduler` (`runAlertCycleOnce`).
|
||||
|
||||
Transport : `HttpAlertSender` POST vers `ALERT_WEBHOOK_URL` (webhook n8n) ; sans
|
||||
URL, `NullAlertSender` log-only (fail-safe). Best-effort : une panne d'alerte ne
|
||||
casse jamais l'agent. Le mail est envoyé par le workflow
|
||||
`workflows-n8n/chlova-alerts.v1.0.0.json` (doc : `docs/assets/workflow-chlova-alerts.md`).
|
||||
Le payload ne contient aucun secret.
|
||||
|
||||
## Reste à faire (Phase 4+)
|
||||
- Auto-extension : CHLOVA génère commit + version + doc d'un asset **avant**
|
||||
de le passer en need-review (Phase 4).
|
||||
|
||||
Reference in New Issue
Block a user