# Dashboard usability simplification pass

Use this reference when the user says the Finance dashboard is still too busy, prototype-like, confusing, or not like a good financial dashboard. The correct response is not to add modules; it is to reduce surface area and make the existing MVP actions directly usable.

## User Mode scope

User Mode should show only pages with current real utility. For the current MVP this means:

- Command Center
- Crypto
- Wallets
- Reports

Hide or move to Admin/Review/Debug until genuinely useful:

- Portfolio, if not meaningfully valued
- Equities/ETFs, if mostly `0.00`, missing FX/prices, or technically worded
- Watchlist
- Ledger
- Audit
- Alerts
- Data Quality
- Import Wizard
- Manual Review Queue
- Settings
- Manage pages
- empty/unfinished pages

Admin/Debug may retain full technical access, but it must not be prominent in everyday User Mode.

## Command Center pattern

Make it a calm start page, not a technical warnings dump.

Top cards: maximum 5:

- Gesamtportfolio CHF
- Crypto CHF
- Aktien/ETF CHF or `noch nicht bewertet`
- Kritische Punkte
- Letztes Preisupdate

Below cards:

- `Was ist wichtig?`: maximum 3 readable hints, no IDs
- Top 5 Crypto positions, cleanly formatted
- Quick actions only if they actually work; otherwise disable them with a reason

Do not show raw alert lists, `rule_id`, `entity_id`, provider fields, internal IDs, raw JSON, import notes, or `instrument-*` strings in User Mode. Summarize alerts as counts: Kritisch/Wichtig/Info.

If Equity/ETF valuation is incomplete, do not show it as `CHF 0.00`; show `Aktien/ETF: Bewertung unvollständig` or `noch nicht bewertet` and point to Admin/Data Quality.

## Crypto page pattern

Crypto is the primary MVP surface. Keep it compact:

Top metrics:

- Gesamtwert
- Anzahl Coins
- Anzahl Wallets
- letztes Preisupdate
- grösste Position

Charts:

- Allocation by coin, value desc
- Allocation by wallet, value desc
- For many tiny positions, show Top 10 + Andere
- Avoid overloaded axes

Main positions table columns only:

- Coin
- Symbol
- Gesamtmenge
- Wert CHF / Gesamtwert CHF
- Anteil %
- Wallets
- Status

Keep `Kurs CHF` in the detail panel, not in the main table.

## Direct actions rule

No visible User Mode button may merely set session state and tell the user to go elsewhere. Every visible button must be one of:

1. directly functional now,
2. opens the relevant inline form/panel immediately, or
3. disabled with a clear reason.

For selected crypto positions, the detail panel should support:

- Bestand hinzufügen → inline form with coin preselected
- Korrigieren → inline form with coin preselected and wallet selection
- Transfer → inline transfer form
- Auf 0 setzen → warning/confirmation form
- Verlauf → transaction/audit history for the coin

Read-only mode: write buttons visible but disabled, with `Bearbeiten aktivieren, um Änderungen vorzunehmen.`

Edit mode: write buttons open the form on the same page immediately.

## Wallet page pattern

Top metrics:

- Gesamtwert Wallets
- Anzahl Wallets
- grösstes Wallet
- fehlende Verifikationen

Wallet list columns:

- Wallet
- Typ
- Wert CHF
- Anzahl Coins
- Status

After selection show:

- Wallet detail
- Coins in wallet
- Actions only if truly functional; otherwise disabled

No technical IDs, long import notes, or source/provider internals in User Mode.

## Reports page pattern

Keep minimal:

- Crypto-Report erzeugen
- Last reports list
- Report path
- Format HTML/PDF
- Data-quality summary

Portfolio report and other report types should be disabled as `kommt später` until genuinely implemented.

## Status language

Translate technical statuses into user language:

- `fresh` → Aktuell
- `stale` → Veraltet
- `missing` → Fehlt
- `missing_price` → Preis fehlt
- `missing_fx` → FX-Kurs fehlt
- `cost_basis_uncertain` → Einstand unvollständig
- `incomplete` → Unvollständig
- `warning` → Hinweis

Use `kritisch` only for issues requiring immediate review.

## Tests to add/maintain

Minimum regression tests for simplification passes:

- User Mode navigation shows only allowed pages
- no Streamlit numeric autopages are visible when a custom router is used
- Command Center shows at most 3 important hints
- Command Center/User Mode contains no technical IDs or import notes
- Crypto table has compact columns
- selecting a coin opens detail panel
- crypto actions open inline forms immediately
- read-only disables write actions
- edit mode enables write actions
- Wallet page hides technical IDs and uses compact columns
- Reports page can generate Crypto report
- Equity/ETF is not prominently displayed as `CHF 0.00` when unvalued
- final `pytest`, `git-safety-scan`, `git diff --check`, and clean `git status`

## Finalization sequence

When a sprint is not finished because cleanup/commit/push are missing, complete that first before starting new features:

1. remove `.pytest_cache` and `__pycache__`
2. run compile
3. run full pytest
4. remove generated caches again
5. run Git-safety
6. run `git diff --check`
7. verify `git status`
8. commit and push
9. fetch/update `origin/main` if needed to prove local/remote sync

This sequence prevents the recurring `.pytest_cache` false alarm and avoids leaving accepted work unpushed.