Files
2026-05-25 01:22:48 +02:00

140 lines
5.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TimeMaster Roadmap
> Stand: Mai 2026 · Deployed: Dev `.137` · Prod `.164`
---
## ✅ Fertiggestellt
| Feature | Migration | Deployed |
|---|---|---|
| Auth, JWT, Rollen (5 Stufen), TOTP/2FA | 00010016 | ✅ |
| Zeiterfassung (Stempel, Pausen, Genehmigung) | 0002 | ✅ |
| Abwesenheiten (Urlaub, Genehmigung, Kalender) | 00030016 | ✅ |
| Urlaubskonto (Grundurlaub, Sondertage, Resturlaub) | 00030016 | ✅ |
| 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 25
- [ ] `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 (2595%-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 |
|---|---|---|
| 00010016 | 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 |