feat: Sondervertretungs-Faktoren (special_assignments)

- Neues Model SpecialAssignment mit AssignmentMode (fza|payroll|both)
- CRUD-Endpunkte unter /users/{id}/special-assignments
- Payroll-Report: GET /reports/special-assignments/payroll?year=&month=
- Migration 0029: special_assignments Tabelle + btree_gist Overlap-Constraint
- _recalculate_overtime_balance berücksichtigt FZA-Faktoren
- Frontend: Sondervertretungs-Zeiträume im UsersPage Edit-Modal
- Frontend: ReportsPage neuer Tab 'Sondervertretungen' mit Payroll-Tabelle + CSV-Export

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-25 00:55:47 +02:00
parent 1170e59e49
commit d60349df67
12 changed files with 837 additions and 39 deletions
+57
View File
@@ -1185,3 +1185,60 @@ Keine Commits in dieser Session.
- frontend/src/pages/mobile/MobileStampScreen.tsx | 2 --
---
## 2026-05-24 23:58 00:19 (20m)
**Beschreibung:** Claude Code Session
**Projekt:** timemaster
### Commits
- f70736f test: test_cancel_absence an neue 200-Response angepasst (vorher 204)
- fd382e3 test: FZA tests korrigiert (can_manual_time_entry, TimeEntryWithWarnings, CalDAV race fix)
- 3450029 feat: Freizeitausgleich-Lücken geschlossen (Gap 1-3) + konfigurierbare Schwellwerte
### Geänderte Dateien
- backend/tests/test_absences.py | 3 ++-
---
## 2026-05-25 00:21 00:22 (1m)
**Beschreibung:** Claude Code Session
**Projekt:** timemaster
### Commits
- 1170e59 fix: AuditLog bei FZA-Stornierung mit korrektem old_status und fza_hours_refunded-Flag
### Geänderte Dateien
- backend/app/services/absence_service.py | 5 ++++-
---
## 2026-05-25 00:26 00:29 (3m)
**Beschreibung:** Claude Code Session
**Projekt:** timemaster
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- backend/app/services/absence_service.py | 5 ++++-
---
## 2026-05-25 00:33 00:39 (6m)
**Beschreibung:** Claude Code Session
**Projekt:** timemaster
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- backend/app/services/absence_service.py | 5 ++++-
---
## 2026-05-25 00:42 00:43 (1m)
**Beschreibung:** Claude Code Session
**Projekt:** timemaster
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- backend/app/services/absence_service.py | 5 ++++-
---