feat(finlab): console Claude Code finance in-cluster + toolkit d'analyse (#64)

* 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>

* fix(finlab): ttyd absent des dépôts bookworm → binaire statique GitHub

Le build amont échouait (`E: Package 'ttyd' has no installation candidate`) :
ttyd n'est pas packagé dans Debian bookworm. On récupère le binaire statique
(musl, pin TTYD_VERSION=1.7.7) depuis les releases GitHub. Build complet validé
en local (podman) : ttyd 1.7.7, claude-code 2.1.195, import finlab + seed OK.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ALI YESILKAYA 2026-06-29 23:26:09 +02:00 committed by GitHub
parent 35ad1deb64
commit 54f6f7c634
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
39 changed files with 2115 additions and 2 deletions

35
tools/finlab/alerts.yaml Normal file
View file

@ -0,0 +1,35 @@
# Règles d'alerte — ne se déclenchent que sur ÉVÉNEMENT (transition), pas sur état.
# Évalué par finlab/alerts.py sur la watchlist choisie.
#
# Types de condition disponibles :
# rsi_below / rsi_above -> seuil (value)
# macd_cross_up / macd_cross_down -> croisement du jour
# cross_above_mm50 / cross_below_mm50 -> cassure de la MM50 du jour
# golden_cross / death_cross -> MM50 croise MM200
rules:
- name: "🟢 Survente (rebond possible)"
when: rsi_below
value: 30
- name: "🔴 Surachat (essoufflement)"
when: rsi_above
value: 72
- name: "🟢 MACD croise à la hausse"
when: macd_cross_up
- name: "🔴 MACD croise à la baisse"
when: macd_cross_down
- name: "🟢 Cassure MM50 à la hausse"
when: cross_above_mm50
- name: "🔴 Perte de la MM50"
when: cross_below_mm50
- name: "🟢 Golden cross (MM50 > MM200)"
when: golden_cross
# Watchlist par défaut surveillée par le digest (thème de watchlists.yaml, ou 'portfolio', ou 'all')
watch: all