nas-runbooks/hermes-nyora/veille-nexum-email-enrichi.md

33 lines
2.7 KiB
Markdown

# Veille Dr. Nexum — Email enrichi (fin du bug "email illisible")
**Date** : 2026-07-03
**Tags** : nyora, dr-nexum, veille, email, n8n, cron
## Problème
L'email quotidien "Veille IA Dr. Nexum" (envoyé via `veille_ia_matin.py` → webhook n8n `veille-nexum-email` → SMTP ik.me) n'apportait que titre + lien + score brut, alors que le message Telegram équivalent contenait l'analyse complète (pourquoi c'est pertinent, titre vidéo suggéré, angle unique). Cause : le script Python envoyait l'email **avant** que Hermes fasse l'enrichissement (l'email était construit directement dans le script, l'analyse n'existait que dans la réponse finale de l'agent, livrée uniquement à Telegram).
## Solution
Découplage scraping / enrichissement / envoi email :
1. `veille_ia_matin.py` (cron `veille-ia-nexum-4ee61494`, 11h30 UTC quotidien) : scrape 13 chaînes YouTube + HN + VentureBeat, score, top 5, écrit `/opt/data/veille_raw.json` (données brutes). **N'envoie plus d'email lui-même.**
2. Hermes analyse le top 5 (pourquoi pertinent / titre vidéo / angle) → format Telegram livré automatiquement (`HERMES_CRON_AUTO_DELIVER_PLATFORM=telegram`).
3. Hermes écrit `/tmp/veille_enrich.json` avec les mêmes analyses (même ordre que `veille_raw.json`) via un heredoc bash à guillemets simples (`<< 'EOF'`) — jamais de f-string Python avec `{...}` inline dans une commande bash (voir piège accolades documenté dans `common/`).
4. Hermes exécute `python3 /opt/data/veille_email_send.py` — ce script fusionne `veille_raw.json` + `veille_enrich.json`, construit un HTML avec le thème Nyora (cards sombres, dégradé rose/or #e94560, footer doré) contenant le **même contenu** que Telegram, et POST vers le webhook n8n `veille-nexum-email` (workflow `VEILLE | Email Dr. Nexum → Nabil TT`, id `uwjTfOlzKmzHkO9Q`).
## Fichiers
| Fichier | Rôle |
|---|---|
| `/opt/data/veille_ia_matin.py` | Scraping + scoring, écrit `veille_raw.json` |
| `/opt/data/veille_raw.json` | Données brutes du run (écrasées à chaque exécution) |
| `/tmp/veille_enrich.json` | Analyse Hermes du jour (éphémère) |
| `/opt/data/veille_email_send.py` | Fusion raw+enrich → HTML → POST n8n |
Détail complet du prompt cron et du format Telegram/email : voir skill `hermes-nyora/data/skills/nyora/dr-nexum-production/references/veille-quotidienne-cron.md`.
## Règle à ne jamais casser
L'email ne doit **jamais** repartir en arrière vers "titre + lien + score brut". Si le contenu enrichi (why/video_title/angle) manque, `veille_email_send.py` envoie quand même l'email mais log un WARN — c'est un signal que l'étape 3 (écriture de `veille_enrich.json`) a été oubliée dans le prompt cron, pas un comportement normal.