Neue Prompt-Dateien, Updates

This commit is contained in:
tlg
2026-07-19 11:16:30 +02:00
parent 3211369973
commit 9dd149953f
6 changed files with 1605 additions and 0 deletions

128
WL-Finanz-Beratung.md Normal file
View File

@@ -0,0 +1,128 @@
# Finanz-Beratung
## Motivation
Ziel dieser Session ist es, eine Umgebung für eine Finanzberatung zu spezifizieren und eine Claude Code `Plan.md`-Datei für die nötigen Microservices und das Finanzberatungs-Tool zu schreiben.
Wir haben eine finanziell schwierige Phase vor uns und müssen wissen, welche Kontobewegungen in nächster Zeit zu erwarten sind und welche Kredite wir aufnehmen müssen.
Dazu sollen unsere letzten Kontoauszüge ausgewertet werden, die Inhalte in einer Datenbank hinterlegt werden und die auf uns zukommenden Kosten angegeben werden können.
Das Finanzberatungs-Tool soll eine Web-Oberfläche haben, in die man auch per Drag-and-Drop Dateien importieren kann, die von einer KI wie Claude Code genutzt werden kann, und die eine Visualisierung mit Diagrammen erlaubt.
Es muss möglich sein, verschiedene Szenarien im Voraus zu planen.
Eine mögliche Anwendung wäre z.B. Claude Code zu fragen, wann wir einen Kredit in welcher Höhe aufnehmen müssen und welche Ausgaben am sinnvollsten reduziert werden sollten.
## Dieses Repository
Hier in diesem Repository soll nur die Finanzberatungs-Claude Code Umgebung entstehen mit Claude Memory und den entsprechenden Claude Skills und den anderen Features von Claude Code.
Das Finanzberatungs-Tool, was aus mehreren kleinen Microservices zusammengesetzt wird, soll nicht in diesem Repository hier entstehen, sondern unter `~/bin`; Claude Code soll auf dieses Finanzberatungs-Tool zugreifen können und wir möchten auch selbst über die Web GUI das Tool direkt benutzen können.
## `~/bin` für das Finanzberatungs-Tool
Unter `~/bin` ist ein weiteres Git Repository, was extra dafür da ist, um entsprechende Microservices aufzusetzen und das Gesamtfinanzierungsberatungs-Tool daraus zu erstellen.
Der User `wlfb` kann rootless Podman Pods ausführen und alle Microservices sollen als Container in diesen rootless Podman Pods laufen. Dabei müssen die Podman Pods durch Shell-Skripte definiert und ausgeführt werden, die dann einen systemd Service starten.
Ein Beispiel eines solchen Shell-Skripts des Users `lwc` ist `/home/wlfb/bin/example_create_pod_langflow.sh`.
## Implementierungs-Ideen für das Finanzberatungs-Tool
Als Idee schwebt mir vor, dass Claude Code über eine API-Schnittstelle auf das Finanzberatungs-Tool zugreifen kann, die mit Python FastAPI realisiert ist. Und als Datenbank könnte man MariaDB oder Postgres nehmen.
Für die Visualisierung mithilfe von Diagrammen schwebt mir GrafAna vor und die Datenbank Inhalte sollen auch über die Web GUI sichtbar gemacht werden können bzw. soll es in der Web GUI auch die Möglichkeit geben, in die Datenbank Zahlungen und Einkünfte einzutragen.
## Superpowers
Nutze deinen Superpowers Skill, um zunächst zu brainstormen und unsere Ideen in eine sinnvolle Richtung zu lenken.
---
Ich betreibe einen Rechenzentrum-Server und habe für andere Services bereits Reverse-Proxy und VPN im Einsatz. Das Finanzberatungs-Tool soll den Service an einem bestimmten Port lokal anbieten und ich werde den Traefik-Server entsprechend konfigurieren, damit von außen auf den Service zugegriffen werden kann.
---
Volksbank/Raiffeisenbank, Hypovereinsbank, DKB
---
Der Portbereich darf ab 8096 starten.
Sieh dir das Beispiel `/home/wlfb/bin/example_create_pod_langflow.sh` an, dann weißt du, welche lokalen Verzeichnisse zu benutzen sind und wie aus dem Pod darauf zugegriffen wird.
Was du mit `Token-Auth` meinst, weiß ich nicht ganz genau, bitte einfach erklären. Natürlich dürfen unsere Finanzdaten nicht öffentlich gemacht werden, sondern es muss einen Login-Mechanismus geben.
---
Aus dem, was du hier in Klammern für die Beschreibung des `Abschnitt 2` zur Verfügung stellst, kann ich mir nicht genug vorstellen. Deswegen kann ich das so nicht entscheiden. Bitte beschreibe mir den Abschnitt 2 genauer, damit ich die Entscheidung treffen kann.
---
Die Spec passt so, bitte erstelle die `Plan.md`. Die `Plan.md` übergebe ich dann in einer anderen Claude Code Session, die ich im Verzeichnis `/home/wlfb/bin` starte, korrekt?
---
Session beendet.
Resume this session with:
claude --resume 6131ed11-2993-4a04-a47d-401c0f2e7f46
---
Neue Claude Code Session in `/home/wlfb/bin`:
Setze den Plan in `Plan.md` um.
---
● Fertig — es gab nichts mehr auszuführen, nur noch den Abschluss. Ein Branch-Merge entfällt: Der Plan schrieb die Arbeit direkt in main beider Repos vor, alles
ist committet und deployt.
Abschlussbericht: Plan.md vollständig umgesetzt
Alle 17 Tasks sind implementiert, einzeln reviewt, gefixt und committet (30 Commits in ~/bin, 3 in ~/fb). Das Tool läuft produktiv:
- Web-GUI + API: http://127.0.0.1:8096 (Login admin, OpenAPI unter /docs)
- Grafana: http://127.0.0.1:8097 (Dashboard „Finanzen", Login admin / GRAFANA_ADMIN_PASSWORD aus ~/bin/finance/.env)
- Neues GUI-Passwort: Nhtqm9CQtyg+T/xW — es musste rotiert werden (siehe unten); bitte notieren.
- Betrieb: systemd-Service pod-finance_pod.service (aktiv + enabled), Import-Inbox: ~/.local/share/finance_pod/data/inbox/
- Tests: 61 passed, inklusive der drei Bank-Parser gegen deine echten Fixture-PDFs (Saldo-Differenz 0 bei allen drei Banken)
- End-to-End verifiziert: echter DKB-Auszug importiert und bestätigt (26 Buchungen), Basis-Szenario durchgerechnet, Grafana-Views liefern Daten, GUI-Login per
Cookie getestet.
Bemerkenswerte Funde während der Reviews (alle behoben):
1. GUI-Login war im Live-Deployment kaputt — das Final-Review fand zwei unabhängige Korruptions-Schichten am Passwort-Hash (Shell-Expansion des $ beim Sourcen
der .env und $$-Escaping von podman generate systemd). Deshalb die Passwort-Rotation.
2. Datenschutz-Vorfall abgewehrt: Ein Parser-Commit enthielt zunächst echte Auszugsdaten in Kommentaren — gescrubbt, Commit amended, altes Objekt aus der
Git-History gepurged. Beide Repos sind verifiziert frei von Secrets, PDFs und Kontodaten.
3. SQLite/Postgres-Naht: Löschrouten (Szenarien/Kredite/Importe) hätten auf Postgres 500er geworfen — behoben plus FK-Enforcement in den Tests; Enum-Validierung,
Duplikat-Recheck beim Confirm und ein Saldo-Offset in den Grafana-Views ebenfalls gefixt.
4. EXDEV-Bug im Pod-Skript: Inbox/Uploads liegen jetzt unter einem gemeinsamen Bind-Mount.
Eine dokumentierte Entscheidung liegt bei dir: Das Session-Cookie hat kein secure=True-Flag (bewusst, da reines 127.0.0.1-HTTP-Deployment — mit TLS/Reverse-Proxy
müsste das konfigurierbar werden). Kleinere akzeptierte Rest-Punkte sind in ~/bin/.superpowers/sdd/progress.md protokolliert.
Beratungsumgebung ~/fb: CLAUDE.md und die Skills finanz-api, finanzberatung, auszug-import sind committet — eine Claude-Code-Session in ~/fb kann sofort mit der
Beratung starten.
---
Danke, folgende Wünsche und Fragen habe ich noch:
## Passwörter auch unter `$HOME/.local/share/$POD_NAME`
Die aktuelle Implementierung speichert fast alle Anwenderdaten des Tools wie gewünscht unter `$HOME/.local/share/$POD_NAME`, aber die Passwörter sind separat in der Datei `$HOME/bin/finance/.env` gespeichert - nicht gut.
Es sollen ausnahmslos alle Anwenderdaten des Tools unter `$HOME/.local/share/$POD_NAME` gespeichert werden, auch die Passwörter. Bei einem neu Aufsetzen des Servers soll es reichen, die Daten in `$HOME/.local/share/$POD_NAME` aus dem Backup zu holen und das Shell Script `create_pod_finance.sh` auszuführen; dann soll die Umgebung sofort wieder funktionieren.
## Warum zwei Ports?
Aktuell wird Port 8096 für die API und das User Interface verwendet und für Grafana wird ein zweiter Port 8097 verwendet. Warum braucht denn Grafana einen Extraport? Könnte man nicht alles in einer Umgebung an einem Port zur Verfügung stellen?
## TLS
Du schriebst: `Das Session-Cookie hat kein secure=True-Flag (bewusst, da reines 127.0.0.1-HTTP-Deployment — mit TLS/Reverse-Proxy müsste das konfigurierbar werden)`.
Damit ich das richtig verstehe: Hier auf dem lokalen Server gibt es also keine Transport Layer Security, was Sinn macht, weil ich ja auf dem Rechenzentrum Server die TLS zu laufen habe. Korrekt?