From 047785be1aaabc0b337b1bfcdff0c6338a5b7a59 Mon Sep 17 00:00:00 2001 From: Alkatrazz Date: Mon, 15 Jun 2026 23:44:27 +0200 Subject: [PATCH] docs(n8n): rapports portefeuille (hebdo+quotidien) auth durable + news + recommandations Auth via jeton de securite (auto-renouvelle, plus d'expiration JWT). News par action via Yahoo RSS dans le noeud Code. Analyse approfondie + recommandations. Caveat: Qwen 8B peut se tromper sur les chiffres -> se fier au tableau exact. Co-Authored-By: Claude Opus 4.8 --- admin/k8s/n8n.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/admin/k8s/n8n.md b/admin/k8s/n8n.md index cc50ac2..8b5958e 100644 --- a/admin/k8s/n8n.md +++ b/admin/k8s/n8n.md @@ -289,14 +289,18 @@ curl -s "http://n8n.lab.local/api/v1/executions?limit=5" \ --- -## Workflow « Rapport Portefeuille Hebdo — Ghostfolio » +## Workflows « Rapport Portefeuille » — Ghostfolio + Qwen -Rapport hebdomadaire commenté du portefeuille (idée : données exactes via API, narration par le LLM local). +Deux workflows (rapport commenté du portefeuille : données exactes via API, narration + actus par le LLM local) : +- **Hebdo** (`Rapport Portefeuille Hebdo — Ghostfolio`) : cron `0 18 * * 0` (dimanche 18h), `range=1w`, analyse approfondie (max_tokens 1500). +- **Quotidien** (`Rapport Portefeuille Quotidien — Ghostfolio`) : cron `0 8 * * *` (tous les jours 8h), `range=1d`, format digest concis (max_tokens 900). -- **Déclencheur** : Schedule, cron `0 18 * * 0` (dimanche 18h, TZ Europe/Paris). -- **Pipeline** : `Get Performance` (GET `http://ghostfolio.ai.svc.cluster.local:3333/api/v2/portfolio/performance?range=1w`) → `Get Holdings` (`/api/v1/portfolio/holdings`) → `Préparer Données` (Code : exclut `assetClass=LIQUIDITY` = cash/Livret A, calcule valeur, perf 7j, top/flop, concentration ; poids **relatifs au portefeuille actions**) → `Analyse LLM` (LiteLLM `:4000`, modèle `hermes-default`/Qwen) → `Mise en forme` (HTML) → email (credential SMTP « Postfix local »). -- **Règle LLM** : le modèle **commente uniquement** les chiffres fournis — interdiction d'inventer des nombres, de conseiller achat/vente ou de prédire le marché (les chiffres sont calculés en amont dans le nœud Code). -- ⚠️ **Auth Ghostfolio** : compte anonyme → header `Authorization: Bearer ` codé en dur dans les 2 nœuds GET. Le JWT **expire** (celui en place : **2026-12-12**). À renouveler avant, ou passer à l'échange du *jeton de sécurité* (`POST /api/v1/auth/anonymous`) pour auto-renouvellement. +**Pipeline** (identique, paramétré) : `Trigger` → `Auth Ghostfolio` → `Get Performance` → `Get Holdings` → `Préparer Données` → `Analyse LLM` → `Mise en forme` → `Envoyer`. + +- **Auth durable** : nœud `Auth Ghostfolio` = `POST /api/v1/auth/anonymous` avec le **jeton de sécurité** (compte anonyme) → renvoie un JWT frais à chaque run (les nœuds GET utilisent `=Bearer {{ $('Auth Ghostfolio').first().json.authToken }}`). **Plus d'expiration à gérer.** Le jeton de sécurité est stocké dans le body du nœud Auth (base n8n, non versionné). +- **Préparer Données** (Code) : exclut `assetClass=LIQUIDITY` (cash/Livret A) ; calcule valeur, perf, top/flop, concentration (poids **relatifs au portefeuille actions**) ; **récupère les actus par action** (top 6 par poids) via Yahoo RSS `feeds.finance.yahoo.com/rss/2.0/headline?s=` avec `this.helpers.httpRequest` (wrap try/catch → si échec, le rapport part sans news). +- **Analyse LLM** : LiteLLM `:4000`, modèle `hermes-default` (Qwen). Le prompt autorise des **recommandations/pistes** + signale bonne/mauvaise nouvelle par action, en s'appuyant UNIQUEMENT sur données + news fournies. +- ⚠️ **Caveat précision** : Qwen 8B **peut se tromper sur les chiffres** dans sa prose. L'email inclut donc TOUJOURS le **tableau de positions exact** (calculé par n8n) : se fier au tableau pour les nombres, à la prose pour le contexte. Le LLM ne navigue pas — c'est n8n qui apporte les news. ---