mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 14:34:43 +02:00
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:
parent
607e5e6c0a
commit
56cb32eacc
19 changed files with 700 additions and 149 deletions
|
|
@ -1,10 +1,16 @@
|
|||
# FinLab — console Claude Code finance + toolkit d'analyse de marché
|
||||
# FinLab — dashboard finance + console Claude Code + toolkit d'analyse
|
||||
|
||||
**Quoi** : boîte à outils d'analyse de marché maison (`finlab`, données Yahoo Finance gratuites)
|
||||
+ une **console Claude Code web** spécialisée finance, déployée in-cluster. Remplace l'approche
|
||||
OpenAlice abandonnée (cf. `admin/ia/openalice.md`) par quelque chose de plus simple et plus
|
||||
puissant : **ton vrai Claude Code** (sur ton abonnement, pas l'API au compteur), agentique, avec
|
||||
les outils finlab branchés.
|
||||
déployée in-cluster sous **deux faces** (une seule image) : un **dashboard web** (graphiques,
|
||||
portefeuille, watchlists, actions) et une **console Claude Code** finance. Remplace l'approche
|
||||
OpenAlice abandonnée (cf. `admin/ia/openalice.md`) par plus simple et plus puissant : **ton vrai
|
||||
Claude Code** (sur ton abonnement, pas l'API au compteur) + une UI graphique gratuite.
|
||||
|
||||
- **Dashboard** (`finance.lab.local/`) — graphiques chandeliers (MM50/200 + volume), portefeuille
|
||||
(P&L/poids/secteurs), watchlists thématiques scannées, alertes du jour, plan de trade R:R.
|
||||
FastAPI `dashboard/server.py`, **aucun LLM/clé** (analyse technique pure).
|
||||
- **Console** (`finance.lab.local/console/`) — terminal web (`ttyd`) → `claude` agentique,
|
||||
persona + outils finlab en MCP, login abonnement persisté.
|
||||
|
||||
**Où** :
|
||||
- Source : `tools/finlab/` (code finlab + Dockerfile + persona `workspace/CLAUDE.md`).
|
||||
|
|
@ -21,14 +27,18 @@ trader concentré tech/semis, philosophie R:R/concentration/discipline).
|
|||
|
||||
| Composant | Détail |
|
||||
|---|---|
|
||||
| Console | `ttyd` (terminal web :7681) → CLI `claude` (Claude Code) dans `/home/finlab/workspace` |
|
||||
| Cerveau | **Abonnement Claude Code** (login OAuth persisté dans `~/.claude` sur le PVC) — pas de clé API facturée |
|
||||
| Outils | finlab en **MCP** (`finlab.mcp_server`, stdio) + CLI `python -m finlab.cli ...` |
|
||||
| PVC `finlab-data` | 5Gi NFS → `/home/finlab` : login + workspace (configs éditables + `.cache`) |
|
||||
| Auth | basicAuth Traefik (`finlab-auth`, middleware) — un shell web ne s'expose pas nu |
|
||||
| initContainer `seed` | Peuple le workspace (`cp -rn`), robuste au piège NFS (fsGroup non honoré → recrée le dossier s'il est root/non-inscriptible). Tourne avant les conteneurs |
|
||||
| container `dashboard` | `uvicorn dashboard.server:app` :8800 — UI + API JSON finlab |
|
||||
| container `console` | `ttyd -b /console` :7681 → `claude` dans le workspace |
|
||||
| Cerveau (console) | **Abonnement Claude Code** (login OAuth persisté dans `~/.claude` sur le PVC) — pas de clé API |
|
||||
| Code vs data | Code (`finlab` + `dashboard`) dans l'image `/opt/app` (maj avec l'image) ; configs éditables via **`FINLAB_HOME=/home/finlab/workspace`** (PVC) |
|
||||
| PVC `finlab-data` | 5Gi NFS → `/home/finlab` : login + workspace (configs + `.cache`) |
|
||||
| Auth | basicAuth Traefik (`finlab-auth`) sur les deux routes — un shell web ne s'expose pas nu |
|
||||
| Routes | `/console` → 7681 · reste → 8800 |
|
||||
|
||||
Le workspace est **seedé depuis l'image au 1er boot** (`cp -rn` no-clobber) puis vit sur le PVC :
|
||||
edits (portefeuille) et login persistent ; rebuild d'image = seuls les fichiers manquants ajoutés.
|
||||
**Découplage code/data** : `finlab` lit ses configs depuis `FINLAB_HOME` si défini (sinon repli
|
||||
sur le dossier du package → dév local inchangé). Le workspace est seedé au 1er boot puis vit sur
|
||||
le PVC (edits + login persistent ; une nouvelle image n'ajoute que les fichiers manquants).
|
||||
|
||||
## Outils finlab
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue