This website requires JavaScript.
fd752878b0
test: P1-Coverage für Scheduler-Idempotenz, Bradford-Fensterrand, FZA-Faktor+Kappung, Cross-Company-RLS
main
patrick and Claude Sonnet 5
2026-09-03 02:10:19 +02:00
9afc29a8bb
fix(redis): Timeouts für Async-Pool + Start-Health-Check-Log
patrick and Claude Sonnet 5
2026-09-03 01:58:33 +02:00
107cba99f9
fix(redis): INCR+EXPIRE atomar via Pipeline (MULTI/EXEC)
patrick and Claude Sonnet 5
2026-09-03 00:12:44 +02:00
56f6f16e27
fix(redis): Pool-Rollout vervollständigen + TOTP-Lockout fail-closed mit 503
patrick and Claude Sonnet 5
2026-09-03 00:09:35 +02:00
5ba5a99e02
docs: README erstellt, Debian statt Ubuntu korrigiert
patrick and Claude Sonnet 5
2026-09-03 00:03:06 +02:00
ac496a5f9b
fix(absences): POST /absences/ reicht warnings jetzt an den Client durch
patrick and Claude Sonnet 5
2026-09-02 23:54:02 +02:00
3cf396b972
fix(tests): Testdaten für Jahreswechsel-Regressionstest korrigieren
patrick and Claude Sonnet 5
2026-09-02 23:51:46 +02:00
548738c9ea
fix(absences): Feiertage über Jahreswechsel korrekt aus working_days rausrechnen
patrick and Claude Sonnet 5
2026-09-02 23:50:28 +02:00
dd044793c6
fix(tests): compare UUID objects not str in DATEV coverage test
patrick and Claude Sonnet 5
2026-09-02 23:34:12 +02:00
55d54e0ff0
fix(tests): expire_all() before DATEV bypass query to avoid stale identity map
patrick and Claude Sonnet 5
2026-09-02 23:32:02 +02:00
21b65087d3
fix(tests): re-set RLS bypass per transaction in coverage gap tests
patrick and Claude Sonnet 5
2026-09-02 23:31:20 +02:00
dc4982bb37
fix(tests): year-boundary + response-shape issues in coverage gap tests
patrick and Claude Sonnet 5
2026-09-02 23:30:35 +02:00
cbb5f467fe
test: gezielte Coverage-Tests für kritische Pfade in absence_service/report_service
patrick and Claude Sonnet 5
2026-09-02 23:28:34 +02:00
b7bec79284
fix(setup): nginx-Template im Installer auf Prod-Stand bringen
patrick and Claude Sonnet 5
2026-09-02 23:17:27 +02:00
aba0b53449
fix(docs): StaticFiles-Mount-Pfad korrigieren (static statt app/static)
patrick and Claude Sonnet 5
2026-09-02 23:12:48 +02:00
4e30c55b6c
fix(docs): Swagger-Assets nach backend/static/ verschoben (nginx-Alias)
patrick and Claude Sonnet 5
2026-09-02 23:12:28 +02:00
9f9dfb5be3
fix(docs): Swagger/ReDoc-Assets lokal statt von cdn.jsdelivr.net
patrick and Claude Sonnet 5
2026-09-02 23:11:08 +02:00
c1572c397d
docs(api): 7 fehlende Router nachgezogen
patrick and Claude Sonnet 5
2026-09-02 23:05:51 +02:00
9bdce25187
test(coverage): fail-under=50 Gate + XML-Report
patrick and Claude Sonnet 5
2026-09-02 22:52:42 +02:00
538cbb0437
test(coverage): pytest-cov einbauen (term-missing Report)
patrick and Claude Sonnet 5
2026-09-02 22:47:31 +02:00
ad0bc62b21
ci(frontend): Build-Job als Gate im Security-Workflow ergänzen
patrick and Claude Sonnet 5
2026-09-02 22:46:57 +02:00
c733ddfe40
fix(redis): gepoolten async-Redis-Client statt Connect/Close pro Request
patrick and Claude Sonnet 5
2026-09-02 22:29:08 +02:00
52ecd9e5ce
chore(routers): toten Router absence.py entfernen
patrick and Claude Sonnet 5
2026-09-02 22:27:24 +02:00
b8073fa133
docs(devlog): Sessions vom 2026-08-05 bis 2026-09-02 nachtragen
patrick and Claude Sonnet 5
2026-09-02 15:08:54 +02:00
81d58f720e
feat(kiosk): PC-Terminal-Frontend für NFC-Login + Stempeln
patrick and Claude Sonnet 5
2026-08-27 13:37:06 +02:00
21c7c0bd14
test(kiosk): E2E-Test für Login + Stempel-Flow, Cross-Device-Session-Check
patrick and Claude Sonnet 5
2026-08-27 13:34:39 +02:00
2ce363c422
feat(kiosk): Stempel-Endpunkte für Kiosk-Sessions (fehlten bisher komplett)
patrick and Claude Sonnet 5
2026-08-27 13:32:46 +02:00
3650da8022
fix(kiosk): NFC-Login verlangt Pflicht-PIN als Zweitfaktor (Security-Audit K-3)
patrick and Claude Sonnet 5
2026-08-27 13:24:19 +02:00
cfa707d8f9
fix(time): break_minutes DB-Default ergänzen + Retention-Tests korrigiert
patrick and Claude Sonnet 5
2026-08-27 09:06:59 +02:00
5a9e432a80
feat(dsgvo): Löschkonzept/Aufbewahrungsfristen (Auto-Purge)
patrick and Claude Sonnet 5
2026-08-27 09:04:27 +02:00
7166bbb5aa
fix(payouts): status-Spalte mit echtem DB-Default statt nur Python-Default
patrick and Claude Sonnet 5
2026-08-27 00:30:20 +02:00
456ca1526b
fix(security): RLS für special_assignments nachziehen (DSGVO)
patrick and Claude Sonnet 5
2026-08-27 00:20:00 +02:00
23f8e634d1
feat(dsgvo): Art. 15 Auskunftsrecht – strukturierter Datenexport pro User
patrick and Claude Sonnet 5
2026-08-07 08:19:15 +02:00
59a0305a75
feat(reports): DATEV-Monatsblatt-Button im Zeiterfassungs-Tab
patrick and Claude Sonnet 5
2026-08-06 22:25:45 +02:00
8a2f512112
fix(reports): DATEV-Export nutzt falschen FK-Namen (absence_type_id statt type_id)
patrick and Claude Sonnet 5
2026-08-06 22:20:50 +02:00
1dcc04ae07
feat(reports): DATEV-Monatsblatt-Export (Blanko-Vorlage) für Steuerberater
patrick and Claude Sonnet 5
2026-08-06 22:19:54 +02:00
f3ed234e56
feat(admin): SUPER_ADMIN TLS-Zertifikat-Status + Renewal-Trigger
patrick and Claude Sonnet 5
2026-08-05 20:29:47 +02:00
f354bddd1e
feat(tls): optionales Setup für interne CA vorbereitet
patrick and Claude Sonnet 5
2026-08-05 19:36:19 +02:00
6104a67c9e
feat(tls): optionales certbot-Setup vorbereitet (Option A)
patrick and Claude Sonnet 5
2026-08-05 19:34:25 +02:00
2046f6475b
fix(security): python-jose CVE-2024-33663 durch pyjwt ersetzt, Deps gepinnt
patrick and Claude Sonnet 5
2026-08-05 19:10:28 +02:00
7c24887ec1
fix(hours_payouts): RLS-Bypass-Falle bei mid-request commit
patrick and Claude Sonnet 5
2026-08-05 18:56:55 +02:00
eb8dace0fd
feat(overtime): Auszahlungs-Anträge durch Mitarbeiter (opt-in pro Firma)
patrick and Claude Opus 4.8
2026-07-08 22:43:26 +02:00
87806b4501
fix(deploy): server-update.sh re-exec nach git pull (Self-Edit-Falle)
patrick and Claude Opus 4.8
2026-07-08 16:47:58 +02:00
a772785add
fix(deploy): server-update.sh Health-Check mit Retry (Worker-Startzeit)
patrick and Claude Opus 4.8
2026-07-08 16:33:59 +02:00
8ae792fd90
chore(deploy): entkoppelte Self-Update-Skripte pro Server
patrick and Claude Opus 4.8
2026-07-08 16:29:43 +02:00
d13350b38b
feat(ical): abonnierbarer read-only Kalender-Feed pro Nutzer
patrick and Claude Opus 4.8
2026-07-08 16:12:05 +02:00
d27be740a0
fix(payouts): 500 in GET /hr/payouts – computed Felder als optional
patrick and Claude Opus 4.8
2026-06-23 22:35:40 +02:00
c497a14446
refactor(ui): Verwaltung-Dropdown aufgelöst – Berichte flach, Rest in /settings
patrick and Claude Opus 4.8
2026-06-23 22:27:51 +02:00
933d369dc4
feat(ui): Navigation neu strukturiert (flache Topbar + Verwaltung-Menü + /settings)
patrick and Claude Opus 4.8
2026-06-23 22:07:34 +02:00
c122ab6fd7
feat(dsgvo): Art. 17 Anonymisierung von Mitarbeiterkonten
patrick and Claude Opus 4.8
2026-06-23 14:31:14 +02:00
3034c6c55a
fix(security/dsgvo): RLS für hours_payouts nachgezogen (Mandantentrennung)
patrick and Claude Opus 4.8
2026-06-23 14:06:19 +02:00
2b74f95e68
fix(security): K-5 – LDAP/CalDAV/SMTP-Verschlüsselung auf zentralen Datenschlüssel
patrick and Claude Opus 4.8
2026-06-23 13:56:01 +02:00
408b2c4c7a
feat: agent-04 – Team-Dashboard für Manager/HR im Frontend angebunden
patrick and Claude Opus 4.8
2026-06-23 13:27:48 +02:00
6fcd6783ad
fix: AuditLogPage – React-key am Listen-Fragment (Konsolen-Warnung)
patrick and Claude Opus 4.8
2026-06-23 13:23:18 +02:00
eab41ede69
feat: agent-12 – Zwei-Stufen-Genehmigung für Abwesenheiten
patrick and Claude Opus 4.8
2026-06-23 13:17:32 +02:00
2f110df619
feat: agent-11 PR3 – Scheduler + Erinnerungs-Mails + Notification-Prefs
patrick and Claude Opus 4.8
2026-06-23 12:21:14 +02:00
e8bed43570
feat: agent-11 PR2 – Urlaubsanspruch (Verfall scharf, Pro-rata, Teilzeit)
patrick and Claude Opus 4.8
2026-06-23 12:03:42 +02:00
6fa66b8c13
feat: agent-11 PR1 – Vertretung, Storno-Re-Genehmigung, Kommentare
patrick and Claude Opus 4.8
2026-06-23 11:47:47 +02:00
be22a51805
docs: DEVLOG – agent-10 Reseller/Mandantenübersicht
patrick and Claude Opus 4.8
2026-06-23 01:44:48 +02:00
9e1ba2bd91
feat: Mandant/Reseller ohne E-Mail anlegbar (Temp-Passwort statt Einladung)
patrick and Claude Opus 4.8
2026-06-23 01:34:23 +02:00
fcda813ba6
feat: Reseller-Rolle + SUPER_ADMIN-Mandantenübersicht
patrick and Claude Opus 4.8
2026-06-23 01:15:51 +02:00
da4745013e
feat: QR-Stempeln als eigener Menüpunkt + Tablet-Link
patrick and Claude Opus 4.8
2026-06-02 22:10:48 +02:00
031d7e36f3
fix: QR-Stempel-Status korrekt – Status vor mid-request commit ermitteln
patrick and Claude Opus 4.8
2026-06-02 20:03:49 +02:00
994c9809aa
docs: DEVLOG für QR-Stempel-Feature
patrick and Claude Opus 4.8
2026-06-02 19:55:49 +02:00
707b73b0c5
feat: Statischer firmenweiter QR-Code für mobiles Ein-/Ausstempeln
patrick and Claude Opus 4.8
2026-06-02 15:58:38 +02:00
6261e572c5
fix: Redis-Lockout-Keys in Test-Setup bereinigen
patrick and Claude Sonnet 4.6
2026-05-26 13:17:48 +02:00
738e940268
fix: Refresh-Endpoint bevorzugt Body-Token über Cookie (Token-Rotation Test)
patrick and Claude Sonnet 4.6
2026-05-26 13:14:44 +02:00
b59c5ca52a
security: N-1 uvicorn proxy-headers + N-2 Token-Reuse-Detection + N-3 XSS-Audit + N-4 Token-URL-Fragment + N-5 pip-audit CI
patrick and Claude Sonnet 4.6
2026-05-26 12:55:41 +02:00
1bcb09a822
security: H-1 settings-Whitelist + H-5 UUID-Guard + H-6 DNS-Pinning + H-7 Heartbeat-Timing
patrick and Claude Sonnet 4.6
2026-05-26 11:35:18 +02:00
721d33a04c
security: M-2 HttpOnly-Cookie + M-4 TrustedHost-Warning + M-5 TOTP-Lockout + M-7 zentraler get_client_ip()
patrick and Claude Sonnet 4.6
2026-05-26 11:25:24 +02:00
9887a2a623
docs: DEVLOG aktualisiert
patrick and Claude Sonnet 4.6
2026-05-26 11:15:26 +02:00
4cce09521e
feat: FZA Einzelstunden + Security-Fixes (K-1–K-5, H-2–H-4, M-1/M-3/M-6)
patrick and Claude Sonnet 4.6
2026-05-26 11:13:42 +02:00
a17f71475f
chore: .claude/ aus Git-Tracking entfernen
patrick and Claude Sonnet 4.6
2026-05-26 10:42:04 +02:00
ead6e577a3
chore: CLAUDE.md aus Git-Tracking entfernen
patrick and Claude Sonnet 4.6
2026-05-26 10:41:01 +02:00
a64553e124
feat: Monatsansicht im /mobile Heute-Screen
patrick and Claude Sonnet 4.6
2026-05-25 22:56:04 +02:00
ecf4789c07
feat: Überstunden-Kappung + Jahresverfall pro Firma konfigurierbar
patrick and Claude Sonnet 4.6
2026-05-25 22:48:30 +02:00
3d62fc28d8
fix: Überstunden tages-weise berechnen statt Gesamtzeitraum
patrick and Claude Sonnet 4.6
2026-05-25 22:29:13 +02:00
7a28727344
feat: Stunden-Auszahlungen in /mobile Profil-Screen
patrick and Claude Sonnet 4.6
2026-05-25 22:22:08 +02:00
df4b66e3ec
feat: Stunden-Auszahlung Feature (/hr/payouts)
patrick and Claude Sonnet 4.6
2026-05-25 22:17:52 +02:00
6d5bbe27b2
fix: agent-08 Kiosk-Härtung + 24h-Zeiteintrag-Bug
patrick and Claude Sonnet 4.6
2026-05-25 01:42:08 +02:00
46d4a93ed4
docs: ROADMAP.md angelegt – alle Features in Planung
patrick and Claude Sonnet 4.6
2026-05-25 01:22:48 +02:00
d0930ad6c2
feat: Sondervertretungen als eigene HR-Seite (/hr/special-assignments)
patrick and Claude Sonnet 4.6
2026-05-25 01:13:03 +02:00
69e6313c47
fix: require_role in special_assignments router ohne extra Depends() wrapping
patrick and Claude Sonnet 4.6
2026-05-25 00:59:16 +02:00
02cea3f8e0
fix: migration 0029 enum DO-Block statt CREATE TYPE IF NOT EXISTS
patrick and Claude Sonnet 4.6
2026-05-25 00:58:00 +02:00
55a37aba3f
fix: migration 0029 idempotent (IF NOT EXISTS für Enum + Tabelle)
patrick and Claude Sonnet 4.6
2026-05-25 00:57:29 +02:00
fa61f1acef
feat: Sondervertretungs-Faktoren (special_assignments)
patrick and Claude Sonnet 4.6
2026-05-25 00:55:47 +02:00
aac9e9c559
fix: AuditLog bei FZA-Stornierung mit korrektem old_status und fza_hours_refunded-Flag
patrick and Claude Sonnet 4.6
2026-05-25 00:22:39 +02:00
2889c85e57
test: test_cancel_absence an neue 200-Response angepasst (vorher 204)
patrick and Claude Sonnet 4.6
2026-05-25 00:19:09 +02:00
5a8686935f
test: FZA tests korrigiert (can_manual_time_entry, TimeEntryWithWarnings, CalDAV race fix)
patrick and Claude Sonnet 4.6
2026-05-25 00:18:00 +02:00
3426c3337c
feat: Freizeitausgleich-Lücken geschlossen (Gap 1-3) + konfigurierbare Schwellwerte
patrick and Claude Sonnet 4.6
2026-05-25 00:08:03 +02:00
a70dfc1c3a
fix: ternäre Button-Kette in MobileStampScreen korrigiert
patrick and Claude Sonnet 4.6
2026-05-24 23:53:43 +02:00
66bf1b0686
feat: Admin-Toggle für mobile Zeiterfassung
patrick and Claude Sonnet 4.6
2026-05-24 23:52:46 +02:00
96a4e728d6
feat: Abwesenheiten-Screen in Mobile-App
patrick and Claude Sonnet 4.6
2026-05-24 23:31:00 +02:00
070f86e183
fix: mobile/tablet Geräteerkennung in LoginPage → Redirect zu /mobile/login
patrick and Claude Sonnet 4.6
2026-05-24 23:22:11 +02:00
299cc52d76
feat: mobile Login-Seite /mobile/login
patrick and Claude Sonnet 4.6
2026-05-24 21:17:32 +02:00
df2909aa78
fix: auto-refresh access token on 401 in API client
patrick and Claude Sonnet 4.6
2026-05-24 21:12:50 +02:00
ed37d7dca0
security: 9 Findings aus Security-Audit behoben (CRITICAL + HIGH + MEDIUM)
patrick and Claude Sonnet 4.6
2026-05-24 19:45:09 +02:00
98c2d69306
docs: CalDAV-Konfiguration und CALDAV_ALLOWED_CIDRS in deployment.md
patrick and Claude Sonnet 4.6
2026-05-24 13:04:20 +02:00
73029a0912
feat: CALDAV_ALLOWED_CIDRS Whitelist für interne CalDAV/Nextcloud-Server
patrick and Claude Sonnet 4.6
2026-05-24 12:53:22 +02:00
4d5dfe8244
feat: agent-02-kiosk Phase 2A - Auth endpoints (PIN/NFC/QR/List)
patrick and Claude Sonnet 4.6
2026-05-24 12:49:09 +02:00