nas-runbooks/common/veille-nexum-vk-morte-fusea...

3.2 KiB
Raw Blame History

Veille Dr. Nexum — VK Bifrost morte + fuseau n8n (14/07/2026)

Symptôme

Veille « 3x/jour » (workflow n8n Eh2nomLhSuL3iUMp) : tous les résumés = « Résumé indisponible » sur Telegram et mail ; mail Pro TT non reçu ; en parallèle des mails « par tranche » (liens titre+date sans analyse).

Root causes

  1. VK Bifrost morte. Purge du 07/07 → rotation de la VK « Nabil-Key ». Le nœud Code 🌐 Traduire + Telegram + Build Email avait bfk-e5832bfe… codée en dur → Bifrost 401 virtual_key_not_found → chaque résumé = fallback « Résumé indisponible ».
  2. Fuseau n8n. GENERIC_TIMEZONE VIDE → cron interprétés en America/New_York. Le cron 6/11/19 tournait à 11h/16h/00h Tunis, jamais 7/12/20.
  3. Système parallèle. veille_ia_matin.py (hermes-nyora) lancé par tâche DSM Task Scheduler (root) à 07h → digest brut « par tranche » + Telegram 07h. Redondant depuis fusion des sources dans n8n.

Bonne VK

Dans /volume1/docker/bifrost/data/config.db (sqlite, table governance_virtual_keys) : 2 VK actives = Nabil-Key + Yesmine-Key. Testée sur http://bifrost:8080/v1/chat/completions (header x-bf-vk) → 200. Le restart Bifrost NE recrée PAS une VK absente (≠ bug cache).

n8n 2.23 — piège de versionnage (CENTRAL)

Le runtime exécute la version ACTIVE stockée dans workflow_history (pointée par workflow_entity."activeVersionId"), pas le brouillon workflow_entity. workflow_published_version vide pour ce wf. Éditer workflow_entity seul ne change rien à ce qui tourne ; publish_workflow (MCP) renvoyait le même activeVersionId sans propager l'édition directe DB. → corriger AUSSI la ligne workflow_history de l'activeVersionId.

Correctif (byte-exact, Postgres n8n)

Colonnes nodes/settings/connections = json (pas jsonb). Caster ::json ; settings via (settings::jsonb || '{"timezone":"Africa/Tunis"}'::jsonb)::json. Remplacements : VK morte→active, 30 sources44 sources, cron 6/11/197/12/20, ajout settings.timezone=Africa/Tunis. Appliquer sur workflow_entity ET sur workflow_history WHERE "versionId"=<activeVersionId>. Puis docker restart n8n. Le ScheduleTrigger prend le fuseau du workflow (settings.timezone) → corrige CE wf sans toucher au global ni aux autres.

Validation (exécution production 32346)

Bifrost : que des HTTP 200 (717 s/item, reasoning). Données : 0 « Résumé indisponible », 0 « virtual key not found », footer « 44 sources ». SMTP ik.me : 2 nœuds → 250 Ok: queued (Gmail + tunisietelecom.tn), ~37 Ko.

Reste (accès root/DSM de Nabil)

  • Désactiver la tâche DSM 07h qui lance veille_ia_matin.py (source des mails « par tranche » + Telegram 07h). Le pipeline n8n couvre désormais 07h → pas de perte.
  • Mail Pro : ik.me accepte (250) ; si non-reçu = côté TT (spam/filtrage expéditeur @ik.me) → whitelister / vérifier spam.

Sécurité

Clés provider Bifrost exposées en clair pendant le diag (config.json) → roter : openrouter, opencode, google (×2). Nouvelle VK aussi passée en clair dans la session → rotation ultérieure recommandée (elle est fonctionnelle, donc session dédiée).