Sir, der **Cash Accounts & TrueWealth Value Management Sprint** ist abgeschlossen, getestet, committed und gepusht.

## Ergebnis

- **Cash-Konten angelegt/geprüft:** ja
  Runtime-Backup wurde vorher erstellt. Danach wurden die sechs kanonischen Cash-Konten geprüft und — falls fehlend — auditierbar angelegt.
- **balance_mode umgesetzt:** ja
- **Kontostand Manuell umgesetzt:** ja
- **CSV-berechneter Kontostand umgesetzt/vorbereitet:** ja
- **Raiffeisen csv_calculated:** ja
- **AKB Haushaltskonto csv_calculated:** ja
- **übrige Konten manual:** ja
- **PostFinance Cash getrennt vom Portfolio:** ja
  `PostFinance Cash-Konto` läuft separat unter `PostFinance Cash`, nicht als Depot/Portfolio.
- **TrueWealth-Wert manuell pflegbar:** ja
- **TrueWealth-Verlauf sichtbar:** ja, als Snapshot-/Audit-Historienbereich vorbereitet und UI-seitig sichtbar.
- **Cash-Verlauf sichtbar:** ja
- **Portfolio-Buckets aktualisiert:** ja
- **Command Center aktualisiert:** ja
  Cash-/TrueWealth-/PostFinance-/Crypto-Werte und Cash-Abgleich-Status sind berücksichtigt.

## Umgesetzt

### Cash

Route: `/portfolio/cash`

Cash-Seite zeigt jetzt:

- Cash gesamt CHF
- manuell gepflegte Konten
- CSV-berechnete Konten
- Differenzen / Abgleich offen
- letzter Abgleich
- Tabelle mit:
  - Konto
  - Bank/Anbieter
  - Kontotyp
  - Währung
  - Modus
  - berechneter Kontostand
  - Kontostand Manuell
  - verwendeter Wert für Portfolio
  - Differenz
  - letzter manueller Abgleich
  - letzte importierte Buchung
  - Status
  - Aktionen

Workflow:

- `Kontostand aktualisieren`
- Betrag CHF
- Datum
- Notiz
- Preview
- Confirm
- Audit

CSV-Anchor vorbereitet:

- `csv_anchor_balance`
- berechneter Wert = Anchor + CSV/Transaktionsbewegungen
- manueller Wert bleibt Kontroll-/Abgleichwert
- keine neue Bankimport-Engine gebaut. Sehr untypisch vernünftig.

### Cash balance_mode

- `manual`
  - PostFinance Cash-Konto
  - AKB Zinsbereitstellungskonto
  - AKB gemeinsames Konto
  - AKB Aargauer-Sparkonto

- `csv_calculated`
  - Raiffeisen
  - AKB Haushaltskonto

Portfolio-Wert:

- `manual`: letzter bestätigter manueller Kontostand
- `csv_calculated`: berechneter Kontostand
- Differenz zum manuellen Kontrollwert wird angezeigt

### TrueWealth

Route: `/portfolio/truewealth`

Umgesetzt:

- aktueller TrueWealth-Gesamtwert CHF
- Button `TrueWealth-Wert aktualisieren`
- Preview → Confirm → Audit
- keine Einzelpositionen
- keine Aktien-/ETF-Zuordnung
- eigener Portfolio-Bucket

### Backend / Datenmodell

Ergänzt:

- `accounts.balance_mode`
- `accounts.portfolio_bucket`
- neue Tabelle `cash_account_snapshots`

Snapshot-Typen:

- `manual_balance`
- `csv_anchor_balance`
- `calculated_balance`
- `reconciliation`

Beträge bleiben als Decimal-Text gespeichert, nicht Float.

Wichtig: Die Erweiterung läuft als idempotente Compat-Migration, ohne bestehende Schema-Version-Tests zu brechen.

## Runtime

- Runtime-Backup erstellt vor Änderungen.
- Sechs Cash-Konten in Runtime geprüft/angelegt.
- Ergebnis Runtime:
  - Cash-Konten: `6`
  - manual: `4`
  - csv_calculated: `2`
  - Duplikate: `0`
  - offener Abgleich initial: `0`

Keine Runtime-DB, keine echten Kontostände, keine Secrets ins Git.

## Browser Sanity

Geprüft:

- `/portfolio`: `200 OK`
- `/portfolio/cash`: `200 OK`
- `/portfolio/truewealth`: `200 OK`
- `/`: `200 OK`
- Cash-Kontostand aktualisieren: UI öffnet
- Cash Preview: `200 OK`
- TrueWealth-Wert aktualisieren: UI öffnet
- TrueWealth Preview: `200 OK`
- Verlauf öffnen: UI/API vorbereitet
- JS-Fehler: keine

Hinweis: Für Browser Sanity wurden nur Preview-/UI-Flows ausgeführt, keine echten Confirm-Mutationen mit Fantasiewerten. Sehr langweilig, also korrekt.

## Verifikation

- Python compile: OK
- Backend pytest: `546 passed`
- Frontend Vitest: `115 passed`
- Frontend build: OK
- Source Secret Scan: OK
  absichtliche Fixture-Datei `test_git_safety.py` ausgeschlossen
- Frontend Build Secret Scan: OK
- Git-Safety: OK
- `git diff --check`: OK
- Browser Sanity: OK
- Working tree: sauber

## Dashboard Status

Neu gestartet und erreichbar:

- Backend: `http://127.0.0.1:8000`
- Frontend lokal: `http://127.0.0.1:5173`
- Frontend Tailscale: `http://100.85.29.67:5173`

PIDs:

- Backend: `744032`
- Frontend: `744051`

## Commit / Push

- Commit: `233cac00d77abc6786d84ca8127e4196cea4d836`
- Message: `feat: manage cash and truewealth values`
- Push: erfolgreich nach `origin/main`
- Remote-Hash: matcht lokal

## Offene Grenzen

- CSV-Import-Engine wurde bewusst nicht neu gebaut.
- CSV-Anker-/Startsaldo-Hook ist vorbereitet; konkrete AKB-/Raiffeisen-Parser-Erweiterung bleibt separater Sprint.
- TrueWealth wird als Gesamtwert geführt, nicht als Einzelinstrument-Liste.
- Cash-/TrueWealth-Historie ist bewusst user-safe; keine Roh-IDs prominent im User Mode.