# Sprint 5A — Dashboard v5 Desktop-First Usability

**Status:** implementiert, synthetisch abgenommen und unabhängig freigegeben (2026-07-13)

**Primärgerät:** Linux-PC (1440×900 und 1920×1080)

**Sekundärgerät:** iPhone (390×844) für Ansicht und schnelle Erfassung

**Fallback:** Dashboard v4 bleibt unverändert unter `/health-dashboard`; v5 bleibt parallel unter `/health-dashboard-v5`.

## Ziel

Dashboard v5 wird vom technisch sicheren Prototyp zu einer verständlichen, täglich nutzbaren persönlichen Gesundheitsanwendung. Sprint 5A priorisiert Nutzbarkeit und Datenklarheit vor neuen Statistikfunktionen.

## Reihenfolge

1. Produktive Datenpfade ausschließlich read-only auf korrektes Missingness-/Mapping-Verhalten prüfen.
2. Desktop-Navigation, Header und Seitenraster neu gestalten.
3. `Heute` handlungsorientiert überarbeiten.
4. Cockpit-Karten um Sparklines, Messalter, persönliche Baseline und Coverage/Qualität ergänzen.
5. Hauptchart mit sinnvollem Fallback und separater Ereignisspur ausbauen.
6. Auf dem iPhone einen zentralen Einstieg `+ Erfassen` für bestehende sichere Erfassungswege anbieten.
7. Unit-, Browser- und Screenshot-Abnahme mit ausschließlich synthetischen Daten durchführen.
8. Unabhängigen UX-, Medical-Safety- und Security-Review durchführen; erst danach v5-Preview aktualisieren.

## Nicht-Ziele

- kein künstlicher Health Score,
- keine Diagnose-, Kausalitäts-, Dringlichkeits- oder Therapieaussage,
- keine Ablösung oder Änderung von v4,
- keine neue Statistikengine in Sprint 5A,
- keine Gesundheitswerte in URL, `localStorage` oder Testartefakten,
- keine Interpolation über Missingness.

## Desktop-Shell

- kompakte horizontale Navigation oder schmale Seitenleiste statt mobiler Bottom-Navigation am Seitenende,
- aktive View eindeutig sichtbar,
- globaler Zeitraum und Privacy im kompakten Header,
- sinnvoll begrenzte Inhaltsbreite und ruhiges Grid,
- keine leeren Großflächen ohne erklärten Zustand,
- vollständige Tastaturbedienung und sichtbarer Fokus.

## Heute

- nützliche Momentaufnahme auch ohne vollständigen Symptomtag,
- maximal drei priorisierte Aufgaben,
- letzte tatsächliche und nächste gültig geplante Medikation getrennt,
- kompakte Quellenfrische,
- kurzer verfügbarer Verlauf,
- höchstens zwei fachlich getrennte Hinweise,
- auf Mobile zentraler Einstieg `+ Erfassen`.

## Cockpit

Jede der sechs Kernkarten zeigt, soweit vorhanden:

- Kennzahl und Einheit,
- letzten vollständigen beziehungsweise stabilen Wert,
- Messdatum/Messalter,
- Vergleich zu persönlicher früherer Medianbasis,
- Sparkline mit sichtbaren Lücken,
- Coverage-/Qualitätsstatus.

Der Hauptchart verwendet Symptom-Total, wenn verfügbar, sonst eine klar beschriftete verfügbare Registry-Metrik. Ereignisse bleiben in einer separaten Spur. Niedrige Coverage und partielle Tage werden nicht als vollständige Tageswerte präsentiert.

## Implementierter Arbeitsstand

- produktiver read-only Datenpfad-Audit abgeschlossen,
- deterministische Allowlist für dokumentierte deutsche Injektionsereignisse ergänzt,
- zukünftige Mess-, Ernährungs- und Laborpunkte werden am Dashboard-Stichtag fail-closed ausgeschlossen,
- `scheduled_next_date` wird nur aus einer anerkannten, vergangenen tatsächlichen Gabe abgeleitet; explizite Planungen bleiben getrennt, strikt zukünftig und medikationsspezifisch stornierbar,
- kompakte Desktop-Navigation vor dem Inhalt; mobile Navigation bleibt ausschließlich unter 900 px fixiert,
- Heute zeigt Beschwerden plus verfügbare Schlaf-/HRV-/Ruhepuls-Momentaufnahme, maximal drei Aufgaben und getrennte Medikation,
- sechs Cockpit-Karten zeigen Messalter, neutrale Baseline-Abweichung, lückenbewusste Sparkline sowie dokumentierte Tage im Zeitraum,
- der Cockpit-Hauptchart fällt bei fehlendem Symptom-Total deterministisch auf eine verfügbare Registry-Metrik zurück,
- persönliche frühere Medianbasis bleibt eine separate gestrichelte Reihe,
- Header zeigt nur die technische Aktualität des neuesten dokumentierten Datenpunkts, keinen Health Score,
- zehn synthetische Screenshots und Browserabnahme für fünf Viewports erzeugt,
- 126 Python- und 13 Playwright-Tests bestanden; Ruff, Python-Kompilierung, JavaScript-Syntax und Diff-Check grün,
- unabhängige UX-/Accessibility-, Medical-Safety-/Data-Contract- und Release-/QA-Reviews freigegeben,
- Preview-Deployment, Commit und Push bleiben bis zur ausdrücklichen Nutzerfreigabe ausstehend.

## Reproduzierbare synthetische Browserabnahme

Ausschließlich mit der Fixture ausführen; die Playwright-Suite verweigert Dashboards ohne die synthetische Sentinel-Medikation.

```bash
npm ci
rm -rf /tmp/healthmanager-v5-acceptance
mkdir -p /tmp/healthmanager-v5-acceptance
python3 tests/fixtures/dashboard_v5_fixture.py /tmp/healthmanager-v5-acceptance/health.db
printf '<!doctype html><title>synthetic v4</title>' > /tmp/healthmanager-v5-acceptance/v4.html
python3 scripts/health/health_dashboard_v5.py \
  --db /tmp/healthmanager-v5-acceptance/health.db \
  --output /tmp/healthmanager-v5-acceptance/v5.html \
  --today 2026-06-15
HEALTH_DASHBOARD_FILE=/tmp/healthmanager-v5-acceptance/v4.html \
HEALTH_DASHBOARD_V5_FILE=/tmp/healthmanager-v5-acceptance/v5.html \
HEALTH_DASHBOARD_ASSET_DIR="$PWD/scripts/health/assets/health-assets" \
HEALTH_DASHBOARD_HOST=127.0.0.1 HEALTH_DASHBOARD_PORT=8127 \
python3 scripts/health/health_dashboard_server.py
```

In einem zweiten Terminal:

```bash
HEALTH_DASHBOARD_TEST_URL=http://127.0.0.1:8127 \
  npm run test:browser:v5 -- --workers=1
```

Danach den lokalen Server beenden und `/tmp/healthmanager-v5-acceptance` entfernen. Traces, Screenshots und Reports bleiben git-ignoriert und dürfen nur synthetische Daten enthalten.

## Abnahme

- Desktop: 1920×1080 und 1440×900,
- Tablet: 1024×768 und 768×1024,
- iPhone: 390×844,
- kein horizontaler Seiten-Scroll,
- exakt eine sichtbare Hauptansicht,
- Touchziele mindestens 44×44 px,
- Reduced Motion, 200-%-Text, Tastatur, Privacy und Druck bleiben funktionsfähig,
- synthetische Fixtures decken Missingness, niedrige Coverage, stale Quellen, lange Labels, leere Zustände, verifizierte Labore und Medikation ab,
- bestehende Safety-/Security-/Regressionstests bleiben grün,
- v4-Datei und Route bleiben unverändert.

## Folgesprints

- **Sprint 5B:** Explorer als Kernprodukt (Verlauf, Scatter, Lag, Phase, täglich/wöchentlich, Eventspur, fünf Presets).
- **Sprint 5C:** mobile Erfassung über validierte private Action Queue.
- **Sprint 5D:** Arztansicht und Datenqualität/Mehr.
