# Berichts-Webansicht (Inline-Expansion)

## Kontext

Berichte werden aktuell als Excel-Dateien generiert und können nur heruntergeladen werden. Ziel: Berichte direkt auf der Webseite anzeigen, ohne Excel öffnen zu müssen.

## Entscheidungen

- **Inline-Expansion**: Klick auf eine Tabellenzeile klappt den Bericht darunter auf
- **5 Tabs**: Alle 5 Excel-Sheets als separate Tabs (KW gesamt, Fachgebiete, Gutachten, Therapieänderungen, ICD onko)
- **Backend-Endpoint**: `GET /reports/{id}/data` liefert gespeichertes `report_data`-JSON
- **Leere KWs ausblenden**: Nur Zeilen mit Daten anzeigen

## Architektur

### Backend

Neuer Endpoint in `backend/app/api/reports.py`:

```
GET /reports/{id}/data → WeeklyReport.report_data (JSON)
```

Authentifiziert (get_current_user), gibt das gespeicherte JSON zurück. Kein Neuberechnen.

### Frontend

| Datei | Änderung |
|-------|----------|
| `hooks/useReports.ts` | Neuer Hook `useReportData(id)` |
| `pages/ReportsPage.tsx` | Zeile klickbar, Inline-Expansion mit expandiertem Report |
| `components/ReportViewer.tsx` (NEU) | 5-Tab-Viewer-Komponente |

### Sheet-Darstellung

| Tab | Spalten |
|-----|---------|
| KW gesamt | KW, Erstberatungen, Unterlagen, Ablehnungen, Keine RM, Gutachten |
| Fachgebiete | KW, pro Fallgruppe: Anzahl, Gutachten, Keine RM |
| Gutachten | KW, Gesamt + pro Fallgruppe: Gutachten, Alternative, Bestätigung |
| Therapieänderungen | KW, Gutachten, TA Ja, TA Nein, Diagnosekorrektur, Unterversorgung, Übertherapie |
| ICD onko | ICD-Code, Anzahl (sortiert nach Häufigkeit) |

Jede Tabelle: Summenzeile am Ende, leere KWs ausgeblendet.

## Datenfluss

1. User klickt auf Tabellenzeile → `expandedId` State wird gesetzt
2. `useReportData(expandedId)` fetcht `GET /reports/{id}/data`
3. `ReportViewer` rendert die 5 Tabs mit den Tabellendaten
4. Erneuter Klick auf die Zeile → `expandedId = null` → Expansion wird geschlossen
