# 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]]`).
