d60349df67
- 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>
1245 lines
32 KiB
Markdown
1245 lines
32 KiB
Markdown
# TimeMaster – Dev Log
|
||
|
||
## 2026-03-28 21:59 – 22:02 (3m)
|
||
**Beschreibung:** Projekte-Feature entfernen, Timetrack einbauen
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-03-28 21:59 – 22:02 (3m)
|
||
**Beschreibung:** Projekte-Feature entfernen, Timetrack einbauen
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-03-28 21:59 – 22:02 (3m)
|
||
**Beschreibung:** Projekte-Feature entfernen, Timetrack einbauen
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-03-28 22:22 – 22:22 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-03-28 22:24 – 22:25 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 14:31 – 19:45 (5h 14m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** archivmail
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 19:46 – 19:47 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 19:49 – 19:49 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 19:52 – 19:52 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 19:54 – 19:56 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 19:58 – 20:00 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:06 – 20:06 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:06 – 20:08 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:11 – 20:11 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:12 – 20:12 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:12 – 20:12 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:14 – 20:14 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:15 – 20:15 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:17 – 20:17 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:19 – 20:22 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:38 – 20:38 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:39 – 20:39 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 20:46 – 20:50 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 21:05 – 21:08 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 21:09 – 21:13 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 21:17 – 21:18 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-04-06 21:27 – 21:31 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:06 – 17:07 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:10 – 17:11 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:20 – 17:20 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:27 – 17:27 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:31 – 17:32 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:39 – 17:40 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:41 – 17:44 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:47 – 17:49 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 17:57 – 17:58 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 18:18 – 18:19 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 18:27 – 18:32 (5m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 19:50 – 19:52 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 19:52 – 19:53 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-05 22:43 – 10:21 (11h 37m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 17:20 – 17:34 (14m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 17:34 – 17:35 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 22:47 – 22:51 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 22:54 – 22:55 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 23:00 – 23:00 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-06 23:00 – 23:10 (9m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-23 19:20 – 19:21 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-23 20:02 – 20:03 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
- 1fedd68 Initial commit – TimeMaster Zeiterfassung & HR-Tool
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-23 20:08 – 20:09 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
Keine Änderungen ermittelbar.
|
||
|
||
---
|
||
## 2026-05-23 20:11 – 20:12 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 39a0e37 .gitignore und DEVLOG aktualisieren
|
||
|
||
### Geänderte Dateien
|
||
- .gitignore | 4 ++++
|
||
- DEVLOG.md | 22 ++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-23 20:33 – 21:07 (34m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- fbc04bc agent-07 phase 2: fix test isolation + CSV import UI
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 12 ++
|
||
- backend/app/services/user_import_service.py | 6 +-
|
||
- backend/tests/conftest.py | 10 +-
|
||
- backend/tests/test_personnel_number.py | 27 ++--
|
||
- frontend/src/pages/UsersPage.tsx | 186 +++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-23 21:07 – 21:08 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 12 ++
|
||
- backend/app/services/user_import_service.py | 6 +-
|
||
- backend/tests/conftest.py | 10 +-
|
||
- backend/tests/test_personnel_number.py | 27 ++--
|
||
- frontend/src/pages/UsersPage.tsx | 186 +++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-23 21:08 – 21:08 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 12 ++
|
||
- backend/app/services/user_import_service.py | 6 +-
|
||
- backend/tests/conftest.py | 10 +-
|
||
- backend/tests/test_personnel_number.py | 27 ++--
|
||
- frontend/src/pages/UsersPage.tsx | 186 +++++++++++++++++++++++++++-
|
||
|
||
---
|
||
## 2026-05-23 21:09 – 21:16 (7m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 8e5e76d add deployment updater scripts
|
||
|
||
### Geänderte Dateien
|
||
- scripts/check_migrations.sh | 344 +++++++++++++++
|
||
- update.sh | 1007 ++++++++++++++++++++-----------------------
|
||
|
||
---
|
||
## 2026-05-23 21:23 – 21:31 (8m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 3dfcff3 update.sh: switch backend sync to git pull instead of rsync
|
||
|
||
### Geänderte Dateien
|
||
- update.sh | 53 +++++++++++++++++++++++------------------------------
|
||
|
||
---
|
||
## 2026-05-23 21:47 – 21:48 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- update.sh | 53 +++++++++++++++++++++++------------------------------
|
||
|
||
---
|
||
## 2026-05-23 21:51 – 21:58 (7m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 6d4b8a9 agent-rls: PostgreSQL Row Level Security für Mandanten-Isolation
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 79 ++++++++
|
||
- backend/app/core/database.py | 6 +
|
||
- backend/app/core/dependencies.py | 18 ++
|
||
- backend/migrations/env.py | 4 +
|
||
- .../migrations/versions/0024_row_level_security.py | 208 +++++++++++++++++++++
|
||
- backend/tests/conftest.py | 4 +
|
||
|
||
---
|
||
## 2026-05-23 22:00 – 22:35 (34m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- dd3e069 fix: router db.refresh() nach commit bricht RLS-Kontext
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 16 ++
|
||
- backend/app/routers/absences.py | 10 -
|
||
- backend/app/routers/caldav.py | 2 -
|
||
- backend/app/routers/kiosk.py | 3 -
|
||
- backend/app/routers/ldap.py | 2 -
|
||
- backend/app/routers/projects.py | 2 -
|
||
- backend/app/routers/smtp.py | 1 -
|
||
- backend/app/routers/time_entries.py | 10 -
|
||
- backend/migrations/env.py | 4 -
|
||
- .../migrations/versions/0024_row_level_security.py | 223 +++++----------------
|
||
- backend/tests/conftest.py | 48 +++++
|
||
- backend/tests/test_rls.py | 190 ++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-23 22:43 – 22:52 (9m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
- eb12280 fix: 8 pre-existing Test-Fehler behoben
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/absence_service.py | 3 ++-
|
||
- backend/tests/test_absences.py | 30 +++++++++++++++++++++++++-----
|
||
- backend/tests/test_reports.py | 2 +-
|
||
- backend/tests/test_time.py | 25 ++++++++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-23 23:08 – 23:08 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/absence_service.py | 3 ++-
|
||
- backend/tests/test_absences.py | 30 +++++++++++++++++++++++++-----
|
||
- backend/tests/test_reports.py | 2 +-
|
||
- backend/tests/test_time.py | 25 ++++++++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-23 23:12 – 10:21 (11h 09m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/services/absence_service.py | 3 ++-
|
||
- backend/tests/test_absences.py | 30 +++++++++++++++++++++++++-----
|
||
- backend/tests/test_reports.py | 2 +-
|
||
- backend/tests/test_time.py | 25 ++++++++++++++++++++++---
|
||
|
||
---
|
||
## 2026-05-24 10:26 – 11:29 (1h 03m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- ada1b51 docs: vollständige Projektdokumentation hinzugefügt
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:43 – 11:43 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:46 – 11:47 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:48 – 11:49 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:51 – 11:51 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:54 – 11:55 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:55 – 11:56 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 11:57 – 11:57 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 64 +++
|
||
- docs/api.md | 1375 ++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
- docs/architecture.md | 461 +++++++++++++++++
|
||
- docs/deployment.md | 429 ++++++++++++++++
|
||
- docs/development.md | 531 +++++++++++++++++++
|
||
- frontend/DEVLOG.md | 22 +
|
||
|
||
---
|
||
## 2026-05-24 12:03 – 12:03 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 128 +++++++
|
||
- backend/app/routers/absence.py | 159 +++++++++
|
||
- backend/app/routers/absence_service.py | 615 ++++++++++++++++++++++++++++++++
|
||
- backend/requirements.txt | 1 +
|
||
- backend/tests/test_reports.py | 44 +++
|
||
- frontend/src/pages/TimeTrackingPage.tsx | 521 +++++++++++++++++++--------
|
||
|
||
---
|
||
## 2026-05-24 12:04 – 12:08 (4m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 981bde3 feat(kiosk): Migration 0021 – Ed25519-Auth, Status-Enum, Heartbeat, IP-Whitelist
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/company.py | 5 +
|
||
- backend/app/models/kiosk_device.py | 47 ++++++-
|
||
- backend/migrations/versions/0021_kiosk_security.py | 143 +++++++++++++++++++++
|
||
- .../migrations/versions/0022_sick_note_config.py | 2 +-
|
||
|
||
---
|
||
## 2026-05-24 12:09 – 12:11 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/company.py | 5 +
|
||
- backend/app/models/kiosk_device.py | 47 ++++++-
|
||
- backend/migrations/versions/0021_kiosk_security.py | 143 +++++++++++++++++++++
|
||
- .../migrations/versions/0022_sick_note_config.py | 2 +-
|
||
|
||
---
|
||
## 2026-05-24 12:13 – 12:13 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/models/company.py | 5 +
|
||
- backend/app/models/kiosk_device.py | 47 ++++++-
|
||
- backend/migrations/versions/0021_kiosk_security.py | 143 +++++++++++++++++++++
|
||
- .../migrations/versions/0022_sick_note_config.py | 2 +-
|
||
|
||
---
|
||
## 2026-05-24 12:17 – 12:19 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 58 ++++
|
||
- backend/app/core/kiosk_security.py | 233 ++++++++++++++
|
||
- backend/app/routers/kiosk.py | 119 +++++--
|
||
- backend/app/schemas/kiosk.py | 70 ++++-
|
||
- backend/app/services/kiosk_service.py | 138 ++++++---
|
||
- backend/cli.py | 529 ++++++++++++++++++++++++++++++++
|
||
- backend/requirements.txt | 2 +
|
||
- frontend/DEVLOG.md | 16 +
|
||
- frontend/src/components/Layout.tsx | 71 ++++-
|
||
- frontend/src/pages/KioskDevicesPage.tsx | 412 +++++++++++++++++--------
|
||
|
||
---
|
||
## 2026-05-24 12:37 – 12:47 (10m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** frontend
|
||
|
||
### Commits
|
||
- 094863f feat: agent-02-kiosk Phase 1 - NFC UID migration + session service
|
||
- 1db7164 fix(security): SSRF-Schutz für CalDAV-URLs
|
||
|
||
### Geänderte Dateien
|
||
- backend/app/core/redis.py | 28 ++++++
|
||
- backend/app/models/user.py | 3 +
|
||
- backend/app/services/kiosk_session_service.py | 114 ++++++++++++++++++++++
|
||
- backend/migrations/versions/0025_kiosk_nfc_uid.py | 36 +++++++
|
||
- frontend/DEVLOG.md | 51 ++++++++++
|
||
|
||
---
|
||
## 2026-05-24 12:48 – 12:49 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 30828c6 feat: agent-02-kiosk Phase 2A - Auth endpoints (PIN/NFC/QR/List)
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 16 +++
|
||
- backend/app/routers/kiosk.py | 130 ++++++++++++++++++-
|
||
- backend/app/schemas/kiosk_auth.py | 38 ++++++
|
||
- backend/app/services/kiosk_auth_service.py | 195 +++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 12:52 – 12:53 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 7e19311 feat: CALDAV_ALLOWED_CIDRS Whitelist für interne CalDAV/Nextcloud-Server
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 ++++++++++++++
|
||
- backend/app/core/config.py | 6 ++++++
|
||
- backend/app/services/caldav_service.py | 29 +++++++++++++++++++++++++++--
|
||
|
||
---
|
||
## 2026-05-24 12:55 – 12:56 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 ++++++++++++++
|
||
- backend/app/core/config.py | 6 ++++++
|
||
- backend/app/services/caldav_service.py | 29 +++++++++++++++++++++++++++--
|
||
|
||
---
|
||
## 2026-05-24 12:57 – 12:58 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 ++++++++++++++
|
||
- backend/app/core/config.py | 6 ++++++
|
||
- backend/app/services/caldav_service.py | 29 +++++++++++++++++++++++++++--
|
||
|
||
---
|
||
## 2026-05-24 13:01 – 13:01 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 14 ++++++++++++++
|
||
- backend/app/core/config.py | 6 ++++++
|
||
- backend/app/services/caldav_service.py | 29 +++++++++++++++++++++++++++--
|
||
|
||
---
|
||
## 2026-05-24 13:03 – 13:04 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- a639de1 docs: CalDAV-Konfiguration und CALDAV_ALLOWED_CIDRS in deployment.md
|
||
|
||
### Geänderte Dateien
|
||
- docs/deployment.md | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 13:15 – 19:45 (6h 29m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 62c4e74 security: 9 Findings aus Security-Audit behoben (CRITICAL + HIGH + MEDIUM)
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 63 ++++++++++++++++++++
|
||
- backend/app/core/crypto.py | 42 +++++++++++++
|
||
- backend/app/core/kiosk_security.py | 37 ++++++++----
|
||
- backend/app/main.py | 18 ++++--
|
||
- backend/app/models/ldap_config.py | 2 +-
|
||
- backend/app/models/user.py | 2 +-
|
||
- backend/app/routers/auth.py | 51 +++++++++++++---
|
||
- backend/app/routers/import_kimai.py | 17 +++++-
|
||
- backend/app/routers/users.py | 20 ++++++-
|
||
- backend/app/services/auth_service.py | 13 ++++-
|
||
- backend/app/services/caldav_service.py | 17 ++++++
|
||
- backend/migrations/versions/0026_security_fixes.py | 68 ++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 19:53 – 20:58 (1h 05m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 63 ++++++++++++++++++++
|
||
- backend/app/core/crypto.py | 42 +++++++++++++
|
||
- backend/app/core/kiosk_security.py | 37 ++++++++----
|
||
- backend/app/main.py | 18 ++++--
|
||
- backend/app/models/ldap_config.py | 2 +-
|
||
- backend/app/models/user.py | 2 +-
|
||
- backend/app/routers/auth.py | 51 +++++++++++++---
|
||
- backend/app/routers/import_kimai.py | 17 +++++-
|
||
- backend/app/routers/users.py | 20 ++++++-
|
||
- backend/app/services/auth_service.py | 13 ++++-
|
||
- backend/app/services/caldav_service.py | 17 ++++++
|
||
- backend/migrations/versions/0026_security_fixes.py | 68 ++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 21:00 – 21:05 (5m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 63 ++++++++++++++++++++
|
||
- backend/app/core/crypto.py | 42 +++++++++++++
|
||
- backend/app/core/kiosk_security.py | 37 ++++++++----
|
||
- backend/app/main.py | 18 ++++--
|
||
- backend/app/models/ldap_config.py | 2 +-
|
||
- backend/app/models/user.py | 2 +-
|
||
- backend/app/routers/auth.py | 51 +++++++++++++---
|
||
- backend/app/routers/import_kimai.py | 17 +++++-
|
||
- backend/app/routers/users.py | 20 ++++++-
|
||
- backend/app/services/auth_service.py | 13 ++++-
|
||
- backend/app/services/caldav_service.py | 17 ++++++
|
||
- backend/migrations/versions/0026_security_fixes.py | 68 ++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 21:09 – 21:12 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 8a04525 fix: auto-refresh access token on 401 in API client
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/api/client.ts | 56 ++++++++++++++++++++++++++++++++++++++++++++++
|
||
|
||
---
|
||
## 2026-05-24 21:15 – 21:17 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- edb1568 feat: mobile Login-Seite /mobile/login
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 77 ++++++
|
||
- frontend/src/App.tsx | 4 +
|
||
- frontend/src/pages/mobile/MobileBottomNav.tsx | 69 +++++
|
||
- frontend/src/pages/mobile/MobileLoginPage.tsx | 195 ++++++++++++++
|
||
- frontend/src/pages/mobile/MobilePage.tsx | 75 ++++++
|
||
- frontend/src/pages/mobile/MobileProfileScreen.tsx | 124 +++++++++
|
||
- frontend/src/pages/mobile/MobileStampScreen.tsx | 310 ++++++++++++++++++++++
|
||
- frontend/src/pages/mobile/MobileTodayScreen.tsx | 146 ++++++++++
|
||
|
||
---
|
||
## 2026-05-24 23:21 – 23:22 (1m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 4a1dec7 fix: mobile/tablet Geräteerkennung in LoginPage → Redirect zu /mobile/login
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/pages/LoginPage.tsx | 11 +++++++++--
|
||
|
||
---
|
||
## 2026-05-24 23:23 – 23:23 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/pages/LoginPage.tsx | 11 +++++++++--
|
||
|
||
---
|
||
## 2026-05-24 23:28 – 23:31 (2m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 22be68e feat: Abwesenheiten-Screen in Mobile-App
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 40 +++
|
||
- frontend/src/pages/mobile/MobileAbsencesScreen.tsx | 370 +++++++++++++++++++++
|
||
- frontend/src/pages/mobile/MobileBottomNav.tsx | 16 +-
|
||
- frontend/src/pages/mobile/MobilePage.tsx | 17 +-
|
||
|
||
---
|
||
## 2026-05-24 23:33 – 23:33 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- DEVLOG.md | 40 +++
|
||
- frontend/src/pages/mobile/MobileAbsencesScreen.tsx | 370 +++++++++++++++++++++
|
||
- frontend/src/pages/mobile/MobileBottomNav.tsx | 16 +-
|
||
- frontend/src/pages/mobile/MobilePage.tsx | 17 +-
|
||
|
||
---
|
||
## 2026-05-24 23:50 – 23:54 (3m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
- 0ba16bb fix: ternäre Button-Kette in MobileStampScreen korrigiert
|
||
- c8804ef feat: Admin-Toggle für mobile Zeiterfassung
|
||
|
||
### Geänderte Dateien
|
||
- frontend/src/pages/mobile/MobileStampScreen.tsx | 2 --
|
||
|
||
---
|
||
## 2026-05-24 23:55 – 23:55 (0m)
|
||
**Beschreibung:** Claude Code Session
|
||
**Projekt:** timemaster
|
||
|
||
### Commits
|
||
Keine Commits in dieser Session.
|
||
|
||
### Geänderte Dateien
|
||
- 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 ++++-
|
||
|
||
---
|