feat(dsgvo): Löschkonzept/Aufbewahrungsfristen (Auto-Purge)
Neuer retention_service.py: Lohn-/zeitrelevante Daten (time_entries, hours_payouts) werden nach konfigurierbarer Frist gelöscht (company.settings.retention_lohn_years, Default 10 Jahre). Technische Tabellen mit fester Frist: audit_logs (3 Jahre), abgelaufene sessions/password_resets (sofort). Täglicher Scheduler-Job (03:00 Uhr, Redis-Tageslock analog Reminder-Jobs) plus manuelle Trigger: POST /companies/me/run-retention-purge (COMPANY_ADMIN/HR, nur eigene Firma) und POST /admin/run-retention-purge (SUPER_ADMIN, global inkl. technischer Tabellen). Letzter offener Punkt aus dem DSGVO-Löschkonzept (Art. 15/17 bereits erledigt). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Gis16MnuwkYcivLrSxK1pD
This commit is contained in:
@@ -13,12 +13,14 @@ class CompanySettingsUpdate(BaseModel):
|
||||
|
||||
Nur bekannte Top-Level-Keys sind erlaubt (extra="forbid").
|
||||
Derzeit genutzte Keys: carryover_expires_month, carryover_expires_day
|
||||
(gelesen in absences.py für Resturlaub-Verfall-Berechnung).
|
||||
(gelesen in absences.py für Resturlaub-Verfall-Berechnung), retention_lohn_years
|
||||
(gelesen in retention_service.py für Aufbewahrungsfrist Zeiterfassung/Auszahlungen).
|
||||
"""
|
||||
model_config = ConfigDict(extra="forbid")
|
||||
|
||||
carryover_expires_month: int | None = Field(None, ge=1, le=12)
|
||||
carryover_expires_day: int | None = Field(None, ge=1, le=31)
|
||||
retention_lohn_years: int | None = Field(None, ge=1, le=30)
|
||||
|
||||
|
||||
class CompanyOut(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user