mirror of
https://github.com/Alkatrazz24/Funk-lab.git
synced 2026-07-08 19:54:43 +02:00
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>
56 lines
2.7 KiB
Markdown
56 lines
2.7 KiB
Markdown
# FinLab — dashboard + console Claude Code (in-cluster)
|
|
|
|
Deux usages, **une image**, un workspace partagé :
|
|
|
|
- **Dashboard** (`finance.lab.local/`) — interface web : graphiques chandeliers (MM50/200 +
|
|
volume), portefeuille (P&L, poids, secteurs), watchlists thématiques scannées, alertes du
|
|
jour, actions (plan de trade R:R). Données finlab (Yahoo Finance) — **aucun LLM, aucune clé**.
|
|
- **Console** (`finance.lab.local/console/`) — vraie session **Claude Code** dans un terminal
|
|
web (`ttyd`), sur ton **abonnement** (login persisté), persona finance + outils finlab en MCP.
|
|
|
|
> ⚠️ La console expose un **shell web** → tout est derrière **basicAuth Traefik**. Analyse et
|
|
> aide à la décision uniquement : **aucun ordre réel** (paper trading Alpaca fictif seul).
|
|
|
|
## Image & code
|
|
|
|
CI (`.github/workflows/build-finlab.yml`) build depuis `tools/finlab/` → `ghcr.io/alkatrazz24/funk-finlab`.
|
|
Le **code** (package `finlab` + backend `dashboard`) vit dans l'image (`/opt/app`) et se met à
|
|
jour avec elle. Les **configs éditables** (portefeuille/watchlists/alertes) + la persona + le
|
|
login vivent dans le **workspace persistant** (`FINLAB_HOME=/home/finlab/workspace`, sur le PVC).
|
|
|
|
## Architecture du pod
|
|
|
|
| Élément | Rôle |
|
|
|---|---|
|
|
| initContainer `seed` | Peuple le workspace depuis l'image (`cp -rn`), robuste au piège NFS (recrée le dossier si root/non-inscriptible). Tourne **avant** les conteneurs |
|
|
| container `console` | `ttyd -b /console` → `claude` dans le workspace (port 7681) |
|
|
| container `dashboard` | `uvicorn dashboard.server:app` (port 8800), lit `FINLAB_HOME` |
|
|
| PVC `finlab-data` (5Gi NFS) | `/home/finlab` : `~/.claude` (login) + workspace (configs + `.cache`) |
|
|
| Service `finlab` | `web:8800` + `console:7681` |
|
|
| Middleware `finlab-auth` | basicAuth Traefik (secret htpasswd) |
|
|
| IngressRoute | `/console` → 7681 · reste → 8800 (les deux derrière `finlab-auth`) |
|
|
|
|
## Pré-requis manuels (une fois)
|
|
|
|
### 1. Secret de pull GHCR (si absent du ns `ai`)
|
|
|
|
```bash
|
|
kubectl -n ai create secret docker-registry ghcr-pull \
|
|
--docker-server=ghcr.io --docker-username=Alkatrazz24 \
|
|
--docker-password=<GHCR_PAT_read_packages>
|
|
```
|
|
|
|
### 2. Secret basicAuth `finlab-auth`
|
|
|
|
```bash
|
|
kubectl -n ai create secret generic finlab-auth \
|
|
--from-literal=users="alkatrazz:$(openssl passwd -apr1 'MOT_DE_PASSE')"
|
|
```
|
|
|
|
### 3. Premier boot — login Claude Code (pour la console)
|
|
|
|
1. Ouvrir **http://finance.lab.local/console/** (basicAuth), lancer `claude`, puis `/login`.
|
|
2. Le dashboard est sur **http://finance.lab.local/** (rien à configurer).
|
|
|
|
> Configs éditables dans le workspace (`portfolio.yaml`…) : depuis la console, ou
|
|
> `kubectl -n ai exec deploy/finlab -c console -- python -m finlab.cli digest`.
|