# TimeMaster – Roadmap

> Stand: Mai 2026 · Deployed: Dev `.137` · Prod `.164`

---

## ✅ Fertiggestellt

| Feature | Migration | Deployed |
|---|---|---|
| Auth, JWT, Rollen (5 Stufen), TOTP/2FA | 0001–0016 | ✅ |
| Zeiterfassung (Stempel, Pausen, Genehmigung) | 0002 | ✅ |
| Abwesenheiten (Urlaub, Genehmigung, Kalender) | 0003–0016 | ✅ |
| Urlaubskonto (Grundurlaub, Sondertage, Resturlaub) | 0003–0016 | ✅ |
| Kiosk-Modus (PIN, NFC, QR, Mitarbeiterliste) | 0018 | ✅ |
| Personalnummer (Format, Auto-Modus, CSV-Import) | 0020 | ✅ |
| Krankmeldung (Quick-Sick, Bradford-Faktor, AU-Pflicht) | 0022 | ✅ |
| Busylight-Integration (Pull-Modus, per-Firma Token) | 0023 | ✅ |
| Row Level Security (PostgreSQL RLS, Mandanten-Isolation) | 0024 | ✅ |
| SSRF-Fix CalDAV (CALDAV_ALLOWED_CIDRS Whitelist) | 0026 | ✅ |
| Mobile Stempelseite `/mobile` (PWA, Touch-optimiert) | 0027 | ✅ |
| FZA-Lücken geschlossen (Overdraft-Schutz, Refund, Auto-Recalc) | 0028 | ✅ |
| Sondervertretungs-Faktoren (×1.5, eigene HR-Seite) | 0029 | ✅ |
| Audit-Log Backend + Frontend (COMPANY_ADMIN/SUPER_ADMIN) | — | ✅ |
| §3b EStG Stunden-Report (Nacht/Wochenende/Feiertag) | — | ✅ |

---

## 🚧 In Planung

### Priorität 1 – Sicherheit & Infrastruktur

#### agent-08: Kiosk-Härtung (Ed25519-Signierung)
**Warum:** Aktueller Token-Auth ist nicht MITM-resistent. Kein Produktiveinsatz ohne diese Absicherung.

- [ ] **Backend + CLI**: Ed25519-Verifizierung pro Request, `timemaster kiosk`-CLI (add/approve/revoke/rotate-key), Migration 0030
- [ ] **Kiosk-Frontend**: ServiceWorker signiert alle Requests, WebCrypto `extractable: false`, IndexedDB Offline-Queue, Heartbeat
- [ ] **Verwaltungs-Frontend**: KioskDevicesPage-Erweiterung (Status-Ampel, Fingerprint, Heartbeat-Timestamp), Health-Badge im Layout
- [ ] *(Phase 2 später)* Anomalie-Detection (Frequenz-Threshold, IP-Sprung)

---

### Priorität 2 – Kernfunktionen

#### agent-02-zeiterfassung: Vollständige Zeiterfassung
**Warum:** ArbZG-Prüfung, Überstundenkonto und Genehmigungsworkflow sind noch nicht vollständig abgebildet.

- [ ] Work Schedules (Arbeitspläne) mit Wochenstunden
- [ ] ArbZG-Regeln: Max. 10h/Tag, Pause ab 6h/9h, 11h Mindestruhezeit
- [ ] Überstunden-Konto: auto-Berechnung bei Genehmigung
- [ ] Manuelle Zeiteinträge (mit Berechtigung)
- [ ] Export: CSV · XLSX · PDF

#### agent-04-dashboard: Dashboards & Reports
- [ ] Mitarbeiter-Dashboard (eigene KPIs: Arbeitszeit heute, Urlaubskonto, Überstunden)
- [ ] Manager-Dashboard (Teamübersicht: wer ist heute da, wer fehlt, offene Anträge)
- [ ] Admin-Dashboard (Firmen-KPIs: Auslastung, Fehlzeiten, Bradford-Heatmap)
- [ ] Erweiterte Exports: PDF (WeasyPrint), XLSX (openpyxl)

---

### Priorität 3 – HR-Erweiterungen

#### Personalnummer Phase 2–5
- [ ] `GET /users/by-personnel/{number}` – Lookup für externe Integrationen
- [ ] CSV-Import-UI mit Validierungs-Vorschau
- [ ] Personalnummer in allen Exports (CSV/XLSX/PDF)
- [ ] Kiosk-Login per Personalnummer + PIN

#### Sondervertretungen – Erweiterungen
- [ ] Jahresübersicht aller aktiven Zuweisungen
- [ ] Bulk-Import via CSV (Spalten: Pers.-Nr., Von, Bis, Faktor, Ziel, Bezeichnung)
- [ ] 🏅-Badge in Mitarbeiter-Tabelle (UsersPage) bei aktiver Zuweisung
- [ ] Verknüpfung Payroll-Report ↔ Sondervertretungs-Seite

---

### Priorität 4 – Mobile & Kiosk

#### Android App (Flutter)
**Warum:** Mitarbeiter ohne PC-Zugang brauchen eine native App für Zeiterfassung unterwegs.

- [ ] Flutter-App `mobile/` im Monorepo
- [ ] Employee-only: Stempel In/Out/Pause, Tagesübersicht, Überstundenkonto
- [ ] Offline-Modus: Hive-Queue, Auto-Sync bei Netzwerkwiederkehr
- [ ] Direkt-APK (Sideloading, kein Play Store)
- [ ] Konfigurierbarer Server-URL beim ersten Start

---

### Priorität 5 – Integrationen & Compliance

#### LDAP-Sync (agent-09, geplant)
- [ ] Automatischer User-Sync aus Active Directory / OpenLDAP
- [ ] Mapping: `employeeNumber` → Personalnummer, `department` → Abteilung
- [ ] Konflikt-Handling: Personalnr.-Kollision → Fehler (kein Override)

#### CalDAV-Erweiterungen
- [ ] Urlaubs-Events automatisch in Nextcloud-Kalender schreiben (bei Genehmigung)
- [ ] Abwesenheits-Template mit Platzhalter `$personalnummer` und `$kuerzel`

#### DSGVO-Hilfsmittel
- [ ] Datenexport pro Mitarbeiter (Art. 20 DSGVO)
- [ ] Löschfristen-Konfiguration + automatische Anonymisierung alter Einträge

---

## 💡 Ideen-Backlog (nicht priorisiert)

| Idee | Notiz |
|---|---|
| Dienstplan-Modul | Schichtplanung mit Drag & Drop, Wochen-/Monatsansicht |
| Lohnabrechnung-Export | DATEV-Format, Steuerberater-CSV mit §3b-Stunden |
| Bereitschafts-Erfassung | Rufbereitschaft vs. Bereitschaftsdienst (25–95%-Quote) |
| Slack/Teams-Integration | Abwesenheits-Notifications, Genehmigungs-Workflow im Chat |
| Mehrsprachigkeit (i18n) | EN/FR/PL als erste Sprachen |
| Multi-Mandanten-Admin | SUPER_ADMIN-Übersicht aller Firmen + Nutzung-KPIs |
| Kiosk Anomalie-Detection | Frequenz-Threshold, Geo-Inkonsistenz, AuditLog-Alarm |

---

## Migrations-Übersicht

| Migration | Inhalt | Status |
|---|---|---|
| 0001–0016 | Auth, Users, Abwesenheiten, TOTP | ✅ deployed |
| 0018 | Kiosk-Geräte | ✅ deployed |
| 0019 | Manual-Entry-Berechtigung | ✅ deployed |
| 0020 | Personalnummer | ✅ deployed |
| 0021 | Kiosk-Security (mTLS-Vorstufe) | ✅ deployed |
| 0022 | Krankmeldung-Konfiguration | ✅ deployed |
| 0023 | Busylight-Token | ✅ deployed |
| 0024 | Row Level Security | ✅ deployed |
| 0025 | Kiosk NFC-UID | ✅ deployed |
| 0026 | Security-Fixes (LDAP TLS, TOTP-Länge) | ✅ deployed |
| 0027 | Mobile-Stamping | ✅ deployed |
| 0028 | FZA-Konfiguration (Overdraft, Warnschwelle) | ✅ deployed |
| 0029 | Sondervertretungs-Faktoren | ✅ deployed |
| **0030** | Kiosk-Härtung Ed25519 | 🔜 agent-08 |
