docs: MkDocs-Dokumentation fuer DSR, E-Mail-Templates, Banner Consent
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
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
- 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>
This commit is contained in:
173
docs-src/services/sdk-modules/dsr.md
Normal file
173
docs-src/services/sdk-modules/dsr.md
Normal file
@@ -0,0 +1,173 @@
|
||||
# DSR — Betroffenenrechte (Art. 15–21 DSGVO)
|
||||
|
||||
Das DSR-Modul verwaltet **Data Subject Requests** (Betroffenenanfragen) gemaess DSGVO Art. 15–21.
|
||||
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. 15–21, 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.
|
||||
Reference in New Issue
Block a user