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>
192 lines
6.8 KiB
Markdown
192 lines
6.8 KiB
Markdown
# E-Mail-Templates
|
|
|
|
Das E-Mail-Templates-Modul verwaltet **Benachrichtigungs-Vorlagen** fuer alle Compliance-Prozesse:
|
|
DSR-Bestaetigung, Einwilligungsnachweise, Datenschutzverletzungen, Vendor-Management und mehr.
|
|
Es bietet einen vollstaendigen **Approval-Workflow** (Draft → Review → Approved → Published),
|
|
Variablen-Substitution und eine Vorschau-Funktion.
|
|
|
|
---
|
|
|
|
## Uebersicht
|
|
|
|
| Eigenschaft | Wert |
|
|
|-------------|------|
|
|
| **SDK-Route** | `/sdk/email-templates` |
|
|
| **Backend** | `backend-compliance:8002` |
|
|
| **Router-Prefix** | `/api/compliance/email-templates` |
|
|
| **Paket** | Betrieb (seq 4350) |
|
|
| **DB-Migration** | 027_email_templates.sql |
|
|
| **Tests** | 47 Tests (`test_email_template_routes.py`) |
|
|
| **Status** | 100% — Backend + Frontend |
|
|
|
|
---
|
|
|
|
## Template-Typen (20)
|
|
|
|
| Typ | Kategorie | Beschreibung |
|
|
|-----|-----------|--------------|
|
|
| `welcome` | Allgemein | Willkommens-E-Mail |
|
|
| `verification` | Allgemein | E-Mail-Verifizierung |
|
|
| `password_reset` | Allgemein | Passwort zuruecksetzen |
|
|
| `account_locked` | Sicherheit | Konto gesperrt |
|
|
| `consent_granted` | Einwilligung | Einwilligung erteilt |
|
|
| `consent_withdrawn` | Einwilligung | Einwilligung widerrufen |
|
|
| `consent_reminder` | Einwilligung | Einwilligungs-Erinnerung |
|
|
| `dsr_received` | DSR | Anfrage eingegangen |
|
|
| `dsr_processing` | DSR | Anfrage in Bearbeitung |
|
|
| `dsr_completed` | DSR | Anfrage abgeschlossen |
|
|
| `dsr_rejected` | DSR | Anfrage abgelehnt |
|
|
| `breach_notification` | Datenschutz | Datenschutzverletzung |
|
|
| `breach_authority` | Datenschutz | Meldung an Aufsichtsbehoerde |
|
|
| `vendor_assessment` | Vendor | Auftragsverarbeiter-Bewertung |
|
|
| `vendor_reminder` | Vendor | Auftragsverarbeiter-Erinnerung |
|
|
| `training_assigned` | Schulung | Schulung zugewiesen |
|
|
| `training_reminder` | Schulung | Schulungs-Erinnerung |
|
|
| `training_completed` | Schulung | Schulung abgeschlossen |
|
|
| `audit_scheduled` | Audit | Audit geplant |
|
|
| `audit_completed` | Audit | Audit abgeschlossen |
|
|
|
|
---
|
|
|
|
## Approval-Workflow
|
|
|
|
```mermaid
|
|
graph LR
|
|
A[draft] --> B[review]
|
|
B --> C[approved]
|
|
B --> D[rejected]
|
|
D --> A
|
|
C --> E[published]
|
|
```
|
|
|
|
- **Draft:** Vorlage wird erstellt/bearbeitet
|
|
- **Review:** Zur Pruefung eingereicht
|
|
- **Approved:** Von DSB/Compliance-Beauftragtem freigegeben
|
|
- **Published:** Aktiv im System — wird fuer E-Mail-Versand verwendet
|
|
- **Rejected:** Zurueck an Autor mit Begruendung
|
|
|
|
---
|
|
|
|
## API-Endpoints
|
|
|
|
### Template-Verwaltung
|
|
|
|
| Methode | Pfad | Beschreibung |
|
|
|---------|------|--------------|
|
|
| `GET` | `/email-templates/types` | Verfuegbare Template-Typen mit Variablen |
|
|
| `GET` | `/email-templates` | Alle Templates (mit letzter publizierter Version) |
|
|
| `POST` | `/email-templates` | Template erstellen |
|
|
| `GET` | `/email-templates/{id}` | Template-Detail |
|
|
| `GET` | `/email-templates/default/{type}` | Default-Content fuer einen Typ |
|
|
| `POST` | `/email-templates/initialize` | Default-Templates initialisieren (20 Typen) |
|
|
|
|
### Version-Management
|
|
|
|
| Methode | Pfad | Beschreibung |
|
|
|---------|------|--------------|
|
|
| `GET` | `/email-templates/{id}/versions` | Versionen eines Templates |
|
|
| `POST` | `/email-templates/versions` | Version erstellen |
|
|
| `POST` | `/email-templates/{id}/versions` | Version fuer Template erstellen |
|
|
| `GET` | `/email-templates/versions/{id}` | Version-Detail |
|
|
| `PUT` | `/email-templates/versions/{id}` | Draft aktualisieren |
|
|
|
|
### Workflow-Aktionen
|
|
|
|
| Methode | Pfad | Beschreibung |
|
|
|---------|------|--------------|
|
|
| `POST` | `/email-templates/versions/{id}/submit` | Zur Pruefung einreichen |
|
|
| `POST` | `/email-templates/versions/{id}/approve` | Genehmigen |
|
|
| `POST` | `/email-templates/versions/{id}/reject` | Ablehnen (mit Begruendung) |
|
|
| `POST` | `/email-templates/versions/{id}/publish` | Publizieren |
|
|
|
|
### Vorschau & Test
|
|
|
|
| Methode | Pfad | Beschreibung |
|
|
|---------|------|--------------|
|
|
| `POST` | `/email-templates/versions/{id}/preview` | Vorschau mit Test-Variablen |
|
|
| `POST` | `/email-templates/versions/{id}/send-test` | Test-E-Mail senden (Simulation) |
|
|
|
|
### Einstellungen & Logs
|
|
|
|
| Methode | Pfad | Beschreibung |
|
|
|---------|------|--------------|
|
|
| `GET` | `/email-templates/settings` | Globale Einstellungen (Branding) |
|
|
| `PUT` | `/email-templates/settings` | Einstellungen speichern |
|
|
| `GET` | `/email-templates/stats` | Statistiken (gesamt, publiziert, Entwuerfe) |
|
|
| `GET` | `/email-templates/logs` | Send-Logs (paginiert) |
|
|
|
|
---
|
|
|
|
## Variablen
|
|
|
|
Templates unterstuetzen **Mustache-Variablen** (`{{variable}}`), die beim Versand ersetzt werden:
|
|
|
|
| Variable | Beschreibung | Verfuegbar in |
|
|
|----------|--------------|---------------|
|
|
| `{{user_name}}` | Name des Empfaengers | Alle |
|
|
| `{{company_name}}` | Unternehmensname | Alle |
|
|
| `{{date}}` | Aktuelles Datum | Alle |
|
|
| `{{request_number}}` | DSR-Antragsnummer | DSR-Templates |
|
|
| `{{request_type}}` | Art der Anfrage | DSR-Templates |
|
|
| `{{deadline}}` | Bearbeitungsfrist | DSR-Templates |
|
|
| `{{document_title}}` | Dokumenttitel | Consent-Templates |
|
|
| `{{breach_description}}` | Vorfallbeschreibung | Breach-Templates |
|
|
| `{{training_title}}` | Schulungstitel | Training-Templates |
|
|
| `{{vendor_name}}` | Auftragsverarbeiter | Vendor-Templates |
|
|
| `{{portal_url}}` | Link zum Portal | DSR, Consent |
|
|
|
|
---
|
|
|
|
## DB-Tabellen (Migration 027)
|
|
|
|
| Tabelle | Beschreibung |
|
|
|---------|--------------|
|
|
| `compliance_email_templates` | Template-Definitionen (type, name, is_active) |
|
|
| `compliance_email_template_versions` | Versionierter Content (subject, body_html, body_text, status) |
|
|
| `compliance_email_template_approvals` | Approval-Workflow (approve/reject mit Kommentar) |
|
|
| `compliance_email_send_logs` | Audit-Trail gesendeter E-Mails |
|
|
| `compliance_email_template_settings` | Globale Einstellungen (Logo, Farben, Absender, Footer) |
|
|
|
|
---
|
|
|
|
## Datenmodell (Template-Version)
|
|
|
|
```json
|
|
{
|
|
"id": "uuid",
|
|
"template_id": "uuid",
|
|
"version_number": 2,
|
|
"subject": "Ihre Betroffenenanfrage {{request_number}}",
|
|
"body_html": "<h1>Sehr geehrte/r {{user_name}}</h1>...",
|
|
"body_text": "Sehr geehrte/r {{user_name}}...",
|
|
"language": "de",
|
|
"status": "published",
|
|
"created_by": "dsb@firma.de",
|
|
"created_at": "2026-03-05T10:00:00Z",
|
|
"published_at": "2026-03-05T14:00:00Z"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Frontend
|
|
|
|
**Route:** `/sdk/email-templates` | **Datei:** `app/(sdk)/sdk/email-templates/page.tsx`
|
|
|
|
**4 Tabs:**
|
|
|
|
1. **Templates** — Grid aller 20 Template-Typen mit Status-Badge und letzter Aenderung
|
|
2. **Editor** — Split-View: HTML-Editor + Live-Vorschau, klickbare Variablen-Chips
|
|
3. **Einstellungen** — Branding: Absender, Logo-URL, Primaerfarbe, Footer-Text
|
|
4. **Logs** — Tabelle mit Send-History (Empfaenger, Template-Typ, Status, Datum)
|
|
|
|
---
|
|
|
|
## Frontend-Proxy
|
|
|
|
| Frontend-Route | Ziel |
|
|
|----------------|------|
|
|
| `/api/sdk/v1/compliance/email-templates/*` | `backend:8002/api/compliance/email-templates/*` |
|
|
|
|
Nutzt den bestehenden Compliance-Catch-All-Proxy (`/api/sdk/v1/compliance/[[...path]]`).
|