Files
breakpilot-compliance/docs-src/services/sdk-modules/dsr.md
Benjamin Admin 451616b10e
All checks were successful
CI / go-lint (push) Has been skipped
CI / python-lint (push) Has been skipped
CI / nodejs-lint (push) Has been skipped
CI / test-go-ai-compliance (push) Successful in 48s
CI / test-python-backend-compliance (push) Successful in 42s
CI / test-python-document-crawler (push) Successful in 24s
CI / test-python-dsms-gateway (push) Successful in 21s
docs: MkDocs-Dokumentation fuer DSR, E-Mail-Templates, Banner Consent
- Neue Seiten: dsr.md, email-templates.md, banner-consent.md
- rechtliche-texte.md: User-Consents & Cookie-Kategorien (Migration 028) ergaenzt
- mkdocs.yml: 3 neue Nav-Eintraege unter SDK Module

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 08:22:38 +01:00

174 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DSR — Betroffenenrechte (Art. 1521 DSGVO)
Das DSR-Modul verwaltet **Data Subject Requests** (Betroffenenanfragen) gemaess DSGVO Art. 1521.
Es ersetzt den bisherigen Proxy zum consent-service durch eine native Python/FastAPI-Implementierung
mit eigenem Datenmodell, Status-Workflow, Fristen-Management und Kommunikations-Tracking.
---
## Uebersicht
| Eigenschaft | Wert |
|-------------|------|
| **SDK-Route** | `/sdk/dsr` |
| **Backend** | `backend-compliance:8002` |
| **Router-Prefix** | `/api/compliance/dsr` |
| **Rechtsgrundlage** | Art. 1521, Art. 12 Abs. 3 DSGVO |
| **DB-Migration** | 026_dsr.sql |
| **Tests** | 50 Tests (`test_dsr_routes.py`) |
| **Status** | 100% — native Implementierung |
---
## Anfragetypen
| Typ | DSGVO-Artikel | Beschreibung |
|-----|--------------|--------------|
| `access` | Art. 15 | Auskunftsrecht |
| `rectification` | Art. 16 | Berichtigungsrecht |
| `erasure` | Art. 17 | Recht auf Loeschung |
| `restriction` | Art. 18 | Recht auf Einschraenkung |
| `portability` | Art. 20 | Recht auf Datenuebertragbarkeit |
| `objection` | Art. 21 | Widerspruchsrecht |
---
## Status-Workflow
```mermaid
graph LR
A[new] --> B[in_review]
B --> C[identity_verification]
C --> D[processing]
D --> E[completed]
D --> F[rejected]
B --> F
A --> G[cancelled]
D --> H[extended]
H --> D
```
- **Frist:** 30 Tage ab Eingang (Art. 12 Abs. 3)
- **Verlaengerung:** Einmalig um weitere 60 Tage moeglich (mit Begruendung)
- **Identitaetspruefung:** Pflicht vor Bearbeitung (Art. 12 Abs. 6)
---
## API-Endpoints
### DSR-Verwaltung
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| `POST` | `/dsr` | DSR erstellen (auto request_number, 30-Tage Deadline) |
| `GET` | `/dsr` | DSRs auflisten (Filter: status, type, assigned_to, priority, overdue, search, date-range) |
| `GET` | `/dsr/stats` | Dashboard-Statistiken (offen, ueberfaellig, avg. Bearbeitungszeit) |
| `GET` | `/dsr/{id}` | DSR-Detail |
| `PUT` | `/dsr/{id}` | DSR aktualisieren |
| `DELETE` | `/dsr/{id}` | DSR loeschen |
### Status-Aktionen
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| `POST` | `/dsr/{id}/status` | Status aendern (mit Kommentar) |
| `POST` | `/dsr/{id}/verify-identity` | Identitaet verifizieren (method + verified_by) |
| `POST` | `/dsr/{id}/assign` | Bearbeiter zuweisen |
| `POST` | `/dsr/{id}/extend` | Frist verlaengern (+60 Tage, mit Begruendung) |
| `POST` | `/dsr/{id}/complete` | Abschliessen (mit Zusammenfassung) |
| `POST` | `/dsr/{id}/reject` | Ablehnen (mit Begruendung) |
### Kommunikation & History
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| `GET` | `/dsr/{id}/history` | Status-Audit-Trail |
| `GET` | `/dsr/{id}/communications` | Kommunikations-Log |
| `POST` | `/dsr/{id}/communicate` | Nachricht senden (email/portal/phone) |
### Art. 17(3) Ausnahmen-Pruefung
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| `GET` | `/dsr/{id}/exception-checks` | Ausnahmen-Checks abrufen |
| `POST` | `/dsr/{id}/exception-checks/init` | 6 Standard-Checks initialisieren |
| `PUT` | `/dsr/{id}/exception-checks/{checkId}` | Einzelnen Check aktualisieren |
Die 6 Standard-Ausnahmen (Art. 17 Abs. 3 DSGVO):
1. Ausuebung der Meinungs- und Informationsfreiheit
2. Erfuellung rechtlicher Verpflichtungen
3. Gruende des oeffentlichen Interesses (Gesundheit)
4. Archivzwecke im oeffentlichen Interesse
5. Geltendmachung/Ausuebung/Verteidigung von Rechtsanspruechen
6. Statistische Zwecke (§ 27 BDSG)
### Template-Verwaltung
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| `GET` | `/dsr/templates` | Alle Kommunikationsvorlagen |
| `GET` | `/dsr/templates/published` | Publizierte Vorlagen (Filter: request_type, language) |
| `GET` | `/dsr/templates/{id}/versions` | Versionen einer Vorlage |
| `POST` | `/dsr/templates/{id}/versions` | Neue Version erstellen |
| `PUT` | `/dsr/template-versions/{id}/publish` | Version publizieren |
### Fristen-Verarbeitung
| Methode | Pfad | Beschreibung |
|---------|------|--------------|
| `POST` | `/dsr/deadlines/process` | Ueberfaellige DSRs markieren (Batch-Job) |
---
## DB-Tabellen (Migration 026)
| Tabelle | Beschreibung |
|---------|--------------|
| `compliance_dsr_requests` | Haupttabelle (26+ Spalten, inkl. request_number Sequence) |
| `compliance_dsr_status_history` | Immutabler Status-Audit-Trail |
| `compliance_dsr_communications` | E-Mail/Portal-Kommunikation |
| `compliance_dsr_templates` | Kommunikationsvorlagen |
| `compliance_dsr_template_versions` | Versionierte Template-Inhalte |
| `compliance_dsr_exception_checks` | Art. 17(3) Ausnahmen-Pruefungen |
**Sequence:** `compliance_dsr_request_number_seq` — Generiert fortlaufende Antragsnummern (`DSR-2026-000001`).
---
## Datenmodell (DSR-Anfrage)
```json
{
"id": "uuid",
"tenant_id": "uuid",
"request_number": "DSR-2026-000001",
"request_type": "erasure",
"status": "processing",
"priority": "high",
"subject_name": "Max Mustermann",
"subject_email": "max@beispiel.de",
"description": "Bitte alle personenbezogenen Daten loeschen",
"assigned_to": "dsb@firma.de",
"deadline": "2026-04-04T00:00:00Z",
"identity_verified": true,
"identity_verification_method": "id_card",
"created_at": "2026-03-05T10:00:00Z"
}
```
---
## Frontend-Proxy
Das DSR-Frontend nutzt den bestehenden Compliance-Catch-All-Proxy:
| Frontend-Route | Ziel |
|----------------|------|
| `/api/sdk/v1/compliance/dsr/*` | `backend:8002/api/compliance/dsr/*` |
!!! info "Migration vom consent-service"
Vor der Migration wurden DSR-Anfragen ueber `dsr_api.py` und `dsr_admin_api.py` als Proxy
an den Go consent-service weitergeleitet. Diese Proxy-Dateien wurden entfernt.
Alle DSR-Daten liegen jetzt nativ in der Compliance-Datenbank.