Funk-lab/tools/finlab/entrypoint-console.sh
alkatrazz a2b39a084b feat(finlab): dashboard web (graphiques/portefeuille/actions) + fix seed NFS
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>
2026-06-30 00:54:11 +02:00

25 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# Conteneur CONSOLE : terminal web (ttyd) → Claude Code dans le workspace.
# Le workspace est déjà seedé par l'initContainer ; on se contente d'y entrer.
set -euo pipefail
WS="${WORKSPACE:-/home/finlab/workspace}"
cd "$WS"
# Mot d'accueil du shell de la console.
cat > "$HOME/.bash_motd" <<'MOTD'
────────────────────────────────────────────────────────────
FinLab — console Claude Code (analyste de marché)
• Lance l'assistant : claude (1ʳᵉ fois : /login dans claude)
• Outils finlab (MCP) + CLI : python -m finlab.cli digest
• Dashboard graphique : retire /console de l'URL
• Tes configs (éditables) : portfolio.yaml · watchlists.yaml · alerts.yaml
⚠ Analyse uniquement — aucun ordre réel.
────────────────────────────────────────────────────────────
MOTD
grep -q bash_motd "$HOME/.bashrc" 2>/dev/null || \
echo '[ -f "$HOME/.bash_motd" ] && cat "$HOME/.bash_motd"' >> "$HOME/.bashrc"
# ttyd sert sous le préfixe /console (Traefik y route). Auth assurée en amont (basicAuth).
exec ttyd -p 7681 -W -b /console -t titleFixed='FinLab — console' \
-t 'theme={"background":"#0b0e14"}' bash -l