Funk-lab/tools/finlab/entrypoint.sh
alkatrazz b649afd059 feat(finlab): console Claude Code finance in-cluster + toolkit d'analyse
Intègre finlab (ex-projet Projets/Finance) au lab comme une console Claude Code
web spécialisée finance — l'esprit OpenAlice, mais c'est le vrai Claude Code sur
l'abonnement (login persisté, pas d'API facturée), agentique, avec la boîte à
outils finlab (Yahoo Finance) branchée en MCP.

- tools/finlab/ : source finlab rapatriée + Dockerfile (Python 3.12 + Node +
  claude-code + ttyd) + persona workspace/CLAUDE.md + branchement MCP + entrypoint
  (seed du workspace no-clobber sur le PVC)
- .github/workflows/build-finlab.yml : build GHCR funk-finlab + bump manifest (main)
- k8s/apps/finlab/ : Deployment/Service/PVC/IngressRoute (finance.lab.local) +
  Middleware basicAuth (shell web protégé) ; PVC = HOME (login) + workspace
- k8s/apps-of-apps/apps/finlab.yaml : Application ArgoCD
- .mcp.json (racine) : outils finlab dans les sessions Claude Code du lab
- admin/ia/finlab.md + READMEs + CLAUDE.md : doc + enregistrement

Analyse/aide à la décision uniquement — aucun ordre réel (paper trading Alpaca
fictif seul exécutable).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 22:43:53 +02:00

31 lines
1.7 KiB
Bash

#!/usr/bin/env bash
# Prépare le workspace persistant puis lance la console web (ttyd → Claude Code).
set -euo pipefail
WS="${WORKSPACE:-$HOME/workspace}"
mkdir -p "$WS"
# Seed du workspace depuis l'image, SANS écraser ce que l'utilisateur (ou Claude) a modifié.
# `cp -rn` = no-clobber : pose les fichiers manquants (nouvelle version d'image → nouveaux
# fichiers), préserve portfolio.yaml/edits/.cache existants sur le PVC.
cp -rn /opt/seed/. "$WS"/ 2>/dev/null || true
cd "$WS"
# Petit mot d'accueil dans le shell de la console.
cat > "$HOME/.bash_motd" <<'MOTD'
────────────────────────────────────────────────────────────
FinLab — console Claude Code (analyste de marché)
• Lance l'assistant : claude
• 1ʳᵉ fois : dans claude, fais /login (abonnement, persisté)
• Outils finlab en MCP + CLI : python -m finlab.cli digest
• Ton portefeuille : portfolio.yaml (éditable ici)
⚠ 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 : terminal web (port 7681), écriture activée. L'auth est assurée en amont par le
# middleware basicAuth de Traefik (cf. k8s/apps/finlab/middleware.yaml) — ttyd reste interne.
exec ttyd -p 7681 -W -t titleFixed='FinLab — console' -t 'theme={"background":"#0b0e14"}' \
bash -l