VVT: Master library tables (7 catalogs), 500+ seed entries, process templates with instantiation, library API endpoints + 18 tests. Loeschfristen: Baseline catalog, compliance checks, profiling engine, HTML document generator, MkDocs documentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
14 KiB
Loeschfristen — Loeschkonzept (Art. 5/17/30 DSGVO)
Uebersicht
Das Loeschfristen-Modul implementiert ein vollstaendiges, auditfaehiges Loeschkonzept gemaess DSGVO Art. 5 Abs. 1 lit. e (Speicherbegrenzung), Art. 17 (Recht auf Loeschung) und Art. 30 (Dokumentation der Loeschfristen im VVT).
Kernfunktionen:
- 3-Level-Loeschlogik (Zweckende → Aufbewahrungspflicht → Legal Hold)
- 25 vordefinierte Baseline-Templates fuer gaengige Datenobjekte
- 4-Schritt-Profiling-Wizard zur automatischen Policy-Generierung
- 11 automatisierte Compliance-Checks
- Druckfertiges Loeschkonzept-Dokument mit 11 Sektionen
- JSON/CSV/Markdown-Export
3-Level Loeschlogik
Die Loeschung personenbezogener Daten folgt einer dreistufigen Priorisierung:
graph TD
A[Daten erhoben] --> B{Zweck erfuellt?}
B -->|Ja| C{Aufbewahrungspflicht?}
B -->|Nein| D[Weiter speichern]
C -->|Ja| E{Frist abgelaufen?}
C -->|Nein| F{Legal Hold?}
E -->|Ja| F
E -->|Nein| G[Aufbewahren bis Fristende]
F -->|Ja| H[Speichern bis Legal Hold endet]
F -->|Nein| I[Loeschung durchfuehren]
| Level | Trigger | Beschreibung |
|---|---|---|
| 1 | Zweckende | Daten werden geloescht, wenn der Verarbeitungszweck entfaellt |
| 2 | Aufbewahrungspflicht | Gesetzliche Aufbewahrungsfristen verlaengern die Speicherung |
| 3 | Legal Hold | Aktive Legal Holds setzen die Loeschung aus |
Frontend — 5-Tab-Aufbau
Tab 1: Uebersicht
Statistik-Dashboard mit Filterung und Suche:
- Gesamtanzahl Policies, Status-Verteilung, ueberfaellige Pruefungen
- Suche nach Datenobjekt, Tags und Status
- Schnellaktionen: Bearbeiten, Klonen, Archivieren
Tab 2: Editor
Vollstaendiges Bearbeitungsformular mit 35+ Feldern:
- Stammdaten (Datenobjekt, Beschreibung, Betroffenengruppen, Datenkategorien)
- 3-Level-Loeschlogik (Trigger, Aufbewahrungstreiber, Frist, Startereignis)
- Loeschmethode und -details
- Speicherorte (Typ, Provider, Backup-Kennzeichnung)
- Legal Hold Management (Hinzufuegen, Aktivieren, Aufheben)
- Verantwortlichkeiten und VVT-Verknuepfung
- Status-Workflow (Entwurf → Aktiv → Pruefung erforderlich → Archiviert)
Tab 3: Generator
4-Schritt-Profiling-Wizard mit 16 Fragen:
- Organisation (4 Fragen): Branche, Mitarbeiterzahl, Geschaeftsmodell, Website
- Datenkategorien (5 Fragen): HR, Buchhaltung, Vertraege, Marketing, Video
- Systeme (4 Fragen): Cloud, Backup, ERP/CRM, Zutrittskontrolle
- Spezielle Anforderungen (3 Fragen): Legal Hold, Langzeitarchivierung, Gesundheitsdaten
Der Wizard generiert automatisch passende Policies aus dem Baseline-Katalog.
Tab 4: Export & Compliance
- JSON-Export: Vollstaendiger Policy-Export als JSON
- CSV-Export: Excel-kompatibel mit BOM und Semikolon-Trennung
- Compliance-Bericht: Markdown-formatierter Bericht mit Score und Empfehlungen
- 11 Compliance-Checks: Automatisierte Pruefung aller Policies
Tab 5: Loeschkonzept-Dokument
Druckfertiges Loeschkonzept mit 11 Sektionen:
| # | Sektion | Inhalt |
|---|---|---|
| 0 | Deckblatt | Organisation, DSB, Version, Datum |
| — | Inhaltsverzeichnis | Auto-generiert |
| 1 | Ziel und Zweck | DSGVO Art. 5/17/30 Bezug |
| 2 | Geltungsbereich | Systeme, Speicherorte |
| 3 | Grundprinzipien | 5 Kernprinzipien |
| 4 | Loeschregeln-Uebersicht | Tabelle aller Policies |
| 5 | Detaillierte Loeschregeln | Pro Policy: Alle Felder |
| 6 | VVT-Verknuepfung | Cross-Referenz-Tabelle |
| 7 | Legal Hold Verfahren | Prozedur + aktive Holds |
| 8 | Verantwortlichkeiten | Rollenmatrix |
| 9 | Pruef-/Revisionszyklus | Review-Zeitplan |
| 10 | Compliance-Status | Score, Issues |
| 11 | Aenderungshistorie | Versionstabelle |
Ausgabe: HTML-Download oder PDF-Druck via Browser.
Backend API (7 Endpoints)
| Methode | Pfad | Beschreibung |
|---|---|---|
GET |
/api/v1/compliance/loeschfristen |
Alle Policies abrufen (mit Pagination) |
POST |
/api/v1/compliance/loeschfristen |
Neue Policy erstellen |
GET |
/api/v1/compliance/loeschfristen/{id} |
Einzelne Policy abrufen |
PUT |
/api/v1/compliance/loeschfristen/{id} |
Policy aktualisieren |
DELETE |
/api/v1/compliance/loeschfristen/{id} |
Policy loeschen |
GET |
/api/v1/compliance/loeschfristen/stats |
Statistik-Uebersicht |
PATCH |
/api/v1/compliance/loeschfristen/{id}/status |
Status aendern |
Datenbank-Schema
Tabelle: compliance_loeschfristen
| Spalte | Typ | Beschreibung |
|---|---|---|
id |
UUID (PK) | Datenbank-ID |
tenant_id |
UUID | Mandant |
project_id |
UUID | Projekt |
policy_id |
VARCHAR | Display-ID (LF-2026-001) |
data_object_name |
VARCHAR | Datenobjekt |
description |
TEXT | Beschreibung |
affected_groups |
JSONB | Betroffenengruppen |
data_categories |
JSONB | Datenkategorien |
primary_purpose |
TEXT | Verarbeitungszweck |
deletion_trigger |
VARCHAR | Loeschtrigger |
retention_driver |
VARCHAR | Aufbewahrungstreiber |
retention_driver_detail |
TEXT | Detail zum Treiber |
retention_duration |
INTEGER | Aufbewahrungsdauer |
retention_unit |
VARCHAR | Einheit (DAYS/MONTHS/YEARS) |
retention_description |
TEXT | Beschreibung der Frist |
start_event |
VARCHAR | Startereignis |
has_active_legal_hold |
BOOLEAN | Legal Hold aktiv? |
legal_holds |
JSONB | Legal Holds (Array) |
storage_locations |
JSONB | Speicherorte (Array) |
deletion_method |
VARCHAR | Loeschmethode |
deletion_method_detail |
TEXT | Detail zur Methode |
responsible_role |
VARCHAR | Verantwortliche Rolle |
responsible_person |
VARCHAR | Verantwortliche Person |
release_process |
TEXT | Freigabeprozess |
linked_vvt_activity_ids |
JSONB | VVT-Verknuepfungen |
status |
VARCHAR | Status |
last_review_date |
TIMESTAMP | Letzte Pruefung |
next_review_date |
TIMESTAMP | Naechste Pruefung |
review_interval |
VARCHAR | Pruefintervall |
tags |
JSONB | Tags |
created_at |
TIMESTAMP | Erstellt am |
updated_at |
TIMESTAMP | Geaendert am |
Migration: backend-compliance/migrations/017_loeschfristen.sql
Baseline-Katalog (25 Templates)
| # | Template-ID | Datenobjekt | Treiber | Frist | Trigger |
|---|---|---|---|---|---|
| 1 | personal-akten |
Personalakten | AO 147 | 10 Jahre | Aufbewahrungspflicht |
| 2 | buchhaltungsbelege |
Buchhaltungsbelege | HGB 257 | 10 Jahre | Aufbewahrungspflicht |
| 3 | rechnungen |
Rechnungen | UStG 14b | 10 Jahre | Aufbewahrungspflicht |
| 4 | geschaeftsbriefe |
Geschaeftsbriefe | HGB 257 | 6 Jahre | Aufbewahrungspflicht |
| 5 | bewerbungsunterlagen |
Bewerbungsunterlagen | AGG 15 | 6 Monate | Aufbewahrungspflicht |
| 6 | kundenstammdaten |
Kundenstammdaten | BGB 195 | 3 Jahre | Aufbewahrungspflicht |
| 7 | newsletter-einwilligungen |
Newsletter-Einwilligungen | — | Bis Widerruf | Zweckende |
| 8 | webserver-logs |
Webserver-Logs | BSIG | 7 Tage | Aufbewahrungspflicht |
| 9 | videoueberwachung |
Videoueberwachung | BDSG 35 | 2 Tage | Aufbewahrungspflicht |
| 10 | gehaltsabrechnungen |
Gehaltsabrechnungen | AO 147 | 10 Jahre | Aufbewahrungspflicht |
| 11 | vertraege |
Vertraege | HGB 257 | 10 Jahre | Aufbewahrungspflicht |
| 12 | zeiterfassung |
Zeiterfassungsdaten | ArbZG 16 | 2 Jahre | Aufbewahrungspflicht |
| 13 | krankmeldungen |
Krankmeldungen | BGB 195 | 3 Jahre | Aufbewahrungspflicht |
| 14 | steuererklaerungen |
Steuererklaerungen | AO 147 | 10 Jahre | Aufbewahrungspflicht |
| 15 | protokolle-gesellschafter |
Gesellschafterprotokolle | HGB 257 | 10 Jahre | Aufbewahrungspflicht |
| 16 | crm-kontakthistorie |
CRM-Kontakthistorie | BGB 195 | 3 Jahre | Aufbewahrungspflicht |
| 17 | backup-daten |
Backup-Daten | BSIG | 90 Tage | Aufbewahrungspflicht |
| 18 | cookie-consent-logs |
Cookie-Consent-Nachweise | BGB 195 | 3 Jahre | Aufbewahrungspflicht |
| 19 | email-archivierung |
E-Mail-Archivierung | HGB 257 | 6 Jahre | Aufbewahrungspflicht |
| 20 | zutrittsprotokolle |
Zutrittsprotokolle | BSIG | 90 Tage | Aufbewahrungspflicht |
| 21 | schulungsnachweise |
Schulungsnachweise | Individuell | 3 Jahre | Aufbewahrungspflicht |
| 22 | betriebsarzt-doku |
Betriebsarzt-Dokumentation | Individuell | 40 Jahre | Aufbewahrungspflicht |
| 23 | kundenreklamationen |
Kundenreklamationen | BGB 195 | 3 Jahre | Aufbewahrungspflicht |
| 24 | lieferantenbewertungen |
Lieferantenbewertungen | HGB 257 | 6 Jahre | Aufbewahrungspflicht |
| 25 | social-media-daten |
Social-Media-Marketingdaten | — | Bis Zweckende | Zweckende |
9 Aufbewahrungstreiber
| Treiber | Gesetz | Standard-Frist | Beschreibung |
|---|---|---|---|
AO_147 |
147 AO | 10 Jahre | Steuerrelevante Unterlagen |
HGB_257 |
257 HGB | 10/6 Jahre | Handelsbuecher, -briefe |
USTG_14B |
14b UStG | 10 Jahre | Rechnungen |
BGB_195 |
195 BGB | 3 Jahre | Regelmaessige Verjaehrung |
ARBZG_16 |
16 Abs. 2 ArbZG | 2 Jahre | Arbeitszeitaufzeichnungen |
AGG_15 |
15 Abs. 4 AGG | 6 Monate | Entschaedigungsansprueche |
BDSG_35 |
35 BDSG / Art. 17 DSGVO | Unverzueglich | Zweckwegfall |
BSIG |
BSIG / IT-SiG 2.0 | 90 Tage | Sicherheitslogs |
CUSTOM |
Individuell | — | Benutzerdefiniert |
6 Loeschmethoden
| Methode | Beschreibung |
|---|---|
AUTO_DELETE |
Automatische Loeschung durch System-Job |
MANUAL_REVIEW_DELETE |
Manuelle Pruefung vor Loeschung |
ANONYMIZATION |
Anonymisierung (Statistik bleibt erhalten) |
AGGREGATION |
Statistische Verdichtung |
CRYPTO_ERASE |
Kryptographische Loeschung (Key Destruction) |
PHYSICAL_DESTROY |
Physische Vernichtung (DIN 66399) |
Profiling Wizard (4 Schritte, 16 Fragen)
Der Profiling-Wizard generiert automatisch passende Loeschrichtlinien basierend auf dem Unternehmensprofil.
| Schritt | Titel | Fragen | Inhalt |
|---|---|---|---|
| 1 | Organisation | 4 | Branche, Groesse, Geschaeftsmodell, Website |
| 2 | Datenkategorien | 5 | HR, Buchhaltung, Vertraege, Marketing, Video |
| 3 | Systeme & Infrastruktur | 4 | Cloud, Backup, ERP/CRM, Zutrittskontrolle |
| 4 | Spezielle Anforderungen | 3 | Legal Hold, Archivierung, Gesundheitsdaten |
Regelbeispiele:
data-hr = true→ Personalakten, Gehaltsabrechnungen, Zeiterfassung, Bewerbungen, Krankmeldungen, Schulungsnachweisedata-buchhaltung = true→ Buchhaltungsbelege, Rechnungen, Steuererklaerungendata-vertraege = true→ Vertraege, Geschaeftsbriefe, Kundenstammdaten, Kundenreklamationen, Lieferantenbewertungendata-marketing = true→ Newsletter, CRM-Kontakthistorie, Cookie-Consent, Social-Media-Datensys-zutritt = true→ Zutrittsprotokollesys-cloud = true→ E-Mail-Archivierungspecial-gesundheit = true→ Krankmeldungen, Betriebsarzt-Dokumentation
Compliance Checker (11 Pruefungen)
| # | Check-Typ | Schweregrad | Ausloeser |
|---|---|---|---|
| 1 | MISSING_TRIGGER |
HIGH | Policy ohne Loeschtrigger |
| 2 | MISSING_LEGAL_BASIS |
HIGH | Aufbewahrungspflicht ohne Rechtsgrundlage |
| 3 | OVERDUE_REVIEW |
MEDIUM | Ueberfaellige Pruefung |
| 4 | NO_RESPONSIBLE |
MEDIUM | Keine Verantwortliche Person/Rolle |
| 5 | LEGAL_HOLD_CONFLICT |
CRITICAL | Legal Hold + Auto-Delete aktiv |
| 6 | STALE_DRAFT |
LOW | Entwurf aelter als 90 Tage |
| 7 | UNCOVERED_VVT_CATEGORY |
MEDIUM | VVT-Datenkategorie ohne Loeschfrist |
| 8 | MISSING_DELETION_METHOD |
MEDIUM | Aktive Policy ohne Loeschmethoden-Detail |
| 9 | MISSING_STORAGE_LOCATIONS |
MEDIUM | Aktive Policy ohne Speicherorte |
| 10 | EXCESSIVE_RETENTION |
HIGH | Frist > 2x gesetzliches Maximum |
| 11 | MISSING_DATA_CATEGORIES |
LOW | Nicht-Entwurf ohne Datenkategorien |
Score-Berechnung: 100 - (CRITICAL*15 + HIGH*10 + MEDIUM*5 + LOW*2)
Cross-Modul-Integration
VVT-Verknuepfung
Jede Loeschregel kann mit Verarbeitungstaetigkeiten aus dem VVT verknuepft werden (linked_vvt_activity_ids). Das Loeschkonzept-Dokument generiert automatisch eine Cross-Referenz-Tabelle (Sektion 6).
Scope Engine Prefill
Der Profiling-Wizard kann Antworten aus der Compliance Scope Engine uebernehmen. 12 Fragen werden automatisch vorausgefuellt:
org-branche,org-mitarbeiter,org-geschaeftsmodell,org-websitedata-hr,data-buchhaltung,data-vertraege,data-marketing,data-videosys-cloud,sys-erp
Document Generator Template
Das Loeschkonzept kann als eigenstaendiges Template im Document Generator genutzt werden (Template-Typ: loeschkonzept).
Audit-Faehigkeit
Das Loeschkonzept erfuellt folgende Audit-Kriterien:
- Vollstaendigkeit: Alle Datenobjekte mit Loeschfristen, Rechtsgrundlagen und Methoden dokumentiert
- Nachvollziehbarkeit: Aenderungshistorie mit Versionsnummern und Autoren
- Aktualitaet: Definiertes Pruefintervall mit automatischer Ueberfaelligkeits-Erkennung
- Verantwortlichkeit: Rollenmatrix mit klaren Zustaendigkeiten
- Cross-Referenz: Verknuepfung mit VVT (Art. 30 DSGVO)
- Compliance-Nachweis: Automatisierte 11-Punkt-Pruefung mit Score und Befundprotokoll
- Druckfertigkeit: PDF-taugliches Dokument mit Deckblatt, Inhaltsverzeichnis und rechtlichen Verweisen
Datei-Uebersicht
| Datei | Beschreibung |
|---|---|
admin-compliance/app/sdk/loeschfristen/page.tsx |
Frontend-Seite (5 Tabs) |
admin-compliance/lib/sdk/loeschfristen-types.ts |
TypeScript-Typen und Konstanten |
admin-compliance/lib/sdk/loeschfristen-baseline-catalog.ts |
25 Baseline-Templates |
admin-compliance/lib/sdk/loeschfristen-profiling.ts |
4-Schritt-Profiling-Wizard |
admin-compliance/lib/sdk/loeschfristen-compliance.ts |
11 Compliance-Checks |
admin-compliance/lib/sdk/loeschfristen-export.ts |
JSON/CSV/Markdown-Export |
admin-compliance/lib/sdk/loeschfristen-document.ts |
Loeschkonzept-Dokument-Generator |
backend-compliance/compliance/api/loeschfristen_routes.py |
Backend API-Routen |
backend-compliance/compliance/db/loeschfristen_models.py |
SQLAlchemy-Modelle |
backend-compliance/migrations/017_loeschfristen.sql |
Datenbank-Migration |
backend-compliance/tests/test_loeschfristen_routes.py |
Backend-Tests (58+) |