# DAK Zweitmeinungs-Portal — Design-Dokument

**Datum:** 2026-02-23
**Status:** Genehmigt
**Basis:** Dak_projekt_spezifikation_final.md (v4.0)

---

## Architektur

FastAPI-Backend (Python) + React-SPA-Frontend (Vite/TypeScript) + MariaDB auf Hetzner 1.

```
Nginx (Plesk) → /api/* → FastAPI (Gunicorn+Uvicorn, Port 8000)
              → /*     → React SPA (Static Build)
              → MariaDB dak_c2s (localhost:3306 in Prod)
```

## Entscheidungen (abweichend von Spec)

| Thema | Spec | Anpassung | Begründung |
|-------|------|-----------|------------|
| Dev-DB | Lokale MariaDB auf sv-frontend | Remote → Hetzner 1 | DB existiert bereits, kein Doppel-Setup |
| Python Dev | 3.11.2 | 3.13.5 (sv-frontend) | Kompatibel, kein Pinning auf 3.11-Features |
| gh CLI | Nicht erwähnt | Installiert auf sv-frontend | Für Repo-Erstellung und PR-Workflow |

Alle anderen Entscheidungen aus der Spec bleiben unverändert (13 Punkte).

## Tech-Stack

- **Backend:** Python 3.13 (Dev) / 3.11 (Prod), FastAPI, SQLAlchemy 2.0, Alembic, Pandas, openpyxl
- **Frontend:** React 18, Vite, TypeScript, Tailwind CSS, shadcn/ui, Recharts
- **DB:** MariaDB 10.11.14 (dak_c2s auf Hetzner 1)
- **Auth:** JWT (python-jose) + bcrypt (passlib) + TOTP (pyotp)
- **E-Mail:** SMTP smtp.complexcaresolutions.de:465 (SSL)
- **Deploy:** systemd + Plesk-Nginx, GitHub-Webhook

## Rollen

- `admin` — Voller Zugriff (Import, Coding, Reports, Users)
- `dak_mitarbeiter` — Dashboard, ICD-Eingabe, Report-Download

## Dev-Workflow

- Entwicklung auf sv-frontend `/home/frontend/dak_c2s/`
- DB-Verbindung: Remote zu Hetzner 1 MariaDB
- Git: `develop` → `main`, GitHub `complexcaresolutions/dak.c2s`
- Backend-Dev: `uvicorn app.main:app --reload`
- Frontend-Dev: `pnpm dev` mit API-Proxy auf Backend

## Referenzdaten

Bereitgestellt durch User in `data/` (gitignored):
- Abrechnung_DAK.xlsx
- Berichtswesen_2024_29122024.xlsx
- Berichtswesen_2023_31122023.xlsx
- Sample-CSVs

## Implementierungsphasen

5 Phasen, 6 Wochen — Details im Implementierungsplan.
