feat(finlab): dashboard web (graphiques/portefeuille/actions) + fix seed NFS (#65)

Ajoute une interface graphique à finlab, en plus de la console Claude Code (les
deux cohabitent sur finance.lab.local) :

- dashboard/ : backend FastAPI (sans LLM/clé) exposant les données finlab en JSON
  (/api/portfolio, /api/scan, /api/ohlc, /api/plan, /api/alerts) + front statique
  (lightweight-charts) : graphiques chandeliers MM50/200 + volume, portefeuille
  (P&L/poids/secteurs), watchlists thématiques scannées, alertes, plan de trade R:R
- Découplage code/data : finlab lit ses configs depuis FINLAB_HOME si défini
  (workspace persistant) ; repli sur le dossier du package en dév local
- Image double usage (un build, deux conteneurs) : code → /opt/app, seed minimal
  (configs + persona + MCP) → workspace
- Fix seed NFS (cause racine du workspace vide) : WORKDIR n'est plus sur le volume
  (le runtime le créait en root sur NFS) ; seed déplacé dans un initContainer
  robuste (recrée le dossier s'il est non-inscriptible)
- Deployment : initContainer seed + 2 conteneurs (console ttyd -b /console, dashboard
  uvicorn) ; Service 2 ports ; IngressRoute 2 routes (/console + dashboard), basicAuth

Validé en local (podman) : seed OK, dashboard /api/portfolio → 16k€/10 positions
via FINLAB_HOME, endpoints ohlc/scan/plan/alerts OK, ttyd/claude/finlab présents.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ALI YESILKAYA 2026-06-30 00:57:23 +02:00 committed by GitHub
parent 607e5e6c0a
commit 56cb32eacc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
19 changed files with 700 additions and 149 deletions

View file

@ -18,14 +18,20 @@ Code finance** déployée in-cluster. Paper trading optionnel via **Alpaca** (ar
Glu : `data` (fetch + cache), `scanner` (watchlists), `digest` (rapport compact), `alerts`,
`plan` (plan de trade R:R), `cli`, `mcp_server`.
## Trois façons de l'utiliser
## Quatre façons de l'utiliser
1. **Console Claude Code web** (déploiement) — `finance.lab.local` : vraie session Claude Code
spécialisée finance, outils finlab en MCP. Voir `k8s/apps/finlab/README.md`.
2. **CLI**`python -m finlab.cli digest|portfolio|tech|fundamentals|scan|plan|alerts`.
3. **MCP** — serveur stdio `finlab.mcp_server`, branché dans le `.mcp.json` du repo lab → outils
1. **Dashboard web** (déploiement) — `finance.lab.local/` : graphiques chandeliers, portefeuille,
watchlists, alertes, plan de trade. Backend `dashboard/server.py` (FastAPI, sans LLM).
2. **Console Claude Code web** (déploiement) — `finance.lab.local/console/` : vraie session Claude
Code spécialisée finance, outils finlab en MCP. Voir `k8s/apps/finlab/README.md`.
3. **CLI**`python -m finlab.cli digest|portfolio|tech|fundamentals|scan|plan|alerts`.
4. **MCP** — serveur stdio `finlab.mcp_server`, branché dans le `.mcp.json` du repo lab → outils
finlab dans les sessions Claude Code du lab.
> Le code lit ses configs depuis `FINLAB_HOME` si défini (déploiement : workspace persistant),
> sinon depuis le dossier du package (dév local). Le dashboard se lance en local :
> `FINLAB_HOME=$PWD PYTHONPATH=$PWD .venv/bin/uvicorn dashboard.server:app --port 8800`.
Le portefeuille se modifie dans **`portfolio.yaml`**, les watchlists dans **`watchlists.yaml`**
(thèmes : `energy_power`, `chips`, `cables_optical_network`, `software_cloud`,
`datacenter_infra`), les règles d'alerte dans **`alerts.yaml`**.