# 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: ```mermaid 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: 1. **Organisation** (4 Fragen): Branche, Mitarbeiterzahl, Geschaeftsmodell, Website 2. **Datenkategorien** (5 Fragen): HR, Buchhaltung, Vertraege, Marketing, Video 3. **Systeme** (4 Fragen): Cloud, Backup, ERP/CRM, Zutrittskontrolle 4. **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, Schulungsnachweise - `data-buchhaltung = true` → Buchhaltungsbelege, Rechnungen, Steuererklaerungen - `data-vertraege = true` → Vertraege, Geschaeftsbriefe, Kundenstammdaten, Kundenreklamationen, Lieferantenbewertungen - `data-marketing = true` → Newsletter, CRM-Kontakthistorie, Cookie-Consent, Social-Media-Daten - `sys-zutritt = true` → Zutrittsprotokolle - `sys-cloud = true` → E-Mail-Archivierung - `special-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-website` - `data-hr`, `data-buchhaltung`, `data-vertraege`, `data-marketing`, `data-video` - `sys-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: 1. **Vollstaendigkeit:** Alle Datenobjekte mit Loeschfristen, Rechtsgrundlagen und Methoden dokumentiert 2. **Nachvollziehbarkeit:** Aenderungshistorie mit Versionsnummern und Autoren 3. **Aktualitaet:** Definiertes Pruefintervall mit automatischer Ueberfaelligkeits-Erkennung 4. **Verantwortlichkeit:** Rollenmatrix mit klaren Zustaendigkeiten 5. **Cross-Referenz:** Verknuepfung mit VVT (Art. 30 DSGVO) 6. **Compliance-Nachweis:** Automatisierte 11-Punkt-Pruefung mit Score und Befundprotokoll 7. **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+) |