runbook: vrai coupable spam Vellum trouve et corrige (OpenHuman Watch dedup) + decouverte hermes-mail-browser

This commit is contained in:
2026-07-25 22:52:12 +00:00
parent 013a4b2a09
commit 95244f8949
@@ -42,3 +42,16 @@ puis `publish_workflow` MCP → actif (`active=t`, `activeVersionId==versionId`)
**Action requise (root, DSM UI, non automatisable via mcp-nas)** : creer la tache Panneau de configuration -> Planificateur de taches -> Creer -> Tache declenchee -> Script defini par l'utilisateur, executee en tant que **root**, quotidienne **08:00**, commande `python3 /volume1/docker/veille-infra/veille_infra.py`.
**Recommandation v2 (a construire, necessite acces n8n MCP)** : ajouter un heartbeat, un second workflow n8n (Schedule Trigger 09:00) qui verifie si `X51xQsOpXeedaBKt` a eu une execution `success` dans les dernieres 30h et alerte Telegram si silence. Objectif : que ce type de panne silencieuse de 10 jours ne puisse plus se reproduire sans alerte.
## CORRECTIF 25/07/2026 (suite) — acces O365 reel via hermes-mail-browser, vrai coupable trouve
L'incident ci-dessus concerne bien X51xQsOpXeedaBKt (digest sante, toujours non ordonnance, DSM task a creer). Mais un second constat, plus important pour le bruit quotidien recu par Nabil : le workflow actif `9MkE8Fx3ZlY485Y5` ("INFRA | OpenHuman Watch", Schedule Trigger 4h) spammait sa boite O365 depuis des jours avec des notifications de release Vellum/OpenHuman **dupliquees en boucle**.
**Cause reelle** : le node Code "Fetch Releases GitHub & Vellum" ne comparait que le tout premier item du flux Atom GitHub (`entries[0].id`) au dernier ID connu (`lastSeen_<repo>`, une seule valeur). Le flux Atom de vellum-ai/vellum-assistant fait alterner en tete la release stable (v0.10.12) et une prerelease (v0.10.12-staging.2) selon les republications - chaque bascule etait interpretee comme "nouvelle release", d'ou un renvoi des deux items toutes les ~4h a l'infini.
**Fix applique (25/07, en direct)** : dedup remplacee par un historique d'IDs deja vus (`seen_<repo>`, array cape a 30, migre depuis l'ancien `lastSeen_<repo>`) au lieu d'une comparaison au seul dernier ID. Toute release deja notifiee reste exclue meme si elle repasse en tete du flux. Code valide (syntax check local) puis pousse en DB (`workflow_entity.nodes`, update cible sur le node, via base64 pour eviter l'enfer des quotes) puis `docker restart n8n` pour forcer le rechargement (necessaire : n8n ne relit pas les nodes actifs a chaud). Verifie post-restart : n8n healthy, les deux workflows toujours actifs.
**Non traite (dette sécu deja notee ci-dessus, toujours vraie)** : token Telegram en clair dans ce meme node. Pas touche aujourd'hui car ca demanderait de re-brancher sur credential ND_Telegram, changement plus large, a faire separement avec validation UI.
**Outil decouvert au passage** : `hermes-mail-browser` (container healthy, port API 192.168.100.33:3110, VNC 8810), Playwright + Edge piloté sur la vraie session OWA (`nabil.derouiche@tunisietelecom.tn`). Endpoints utiles : `/health`, `/auth/status`, `/folders`, `/inbox?limit=N&folder=...`, `/message/{index}`. A utiliser en priorite pour toute question "qu'est-ce que je recois par mail" au lieu de deduire depuis les seuls logs n8n/DB.