Benachrichtigungs-Vorlagen
Zweck
Vorlagen (NotificationTemplate) bestimmen den Inhalt einer Benachrichtigung pro Event-Typ, Kanal und Sprache. Subjekt und Body koennen Platzhalter wie {speamboxName}, {eventTypeName}, {contactName}, {timestamp}, {locationName} enthalten — werden zur Laufzeit aufgeloest.
Voraussetzungen
Berechtigungen (CASL)
| Action | Subject | Keycloak-Rolle |
|---|---|---|
view | FE_NotificationTemplate, NotificationTemplate | — |
create/update/delete | NotificationTemplate | APP_SPEAMCORE_CREATE/UPDATE/DELETE_NOTIFICATION_TEMPLATE |
view | NotificationEventType, NotificationChannel | APP_SPEAMCORE_VIEW_NOTIFICATION_EVENT_TYPE, NOTIFICATION_CHANNEL |
Schritt-für-Schritt-Anleitung
- Vorlagen (
/notification-templates) → + Neu. - Name vergeben.
- Event-Typ und Kanal wählen — die Kombination bestimmt, wann diese Vorlage greift.
- Sprache (
de-DE/en-US) wählen. - Subjekt und Body schreiben — Platzhalter wie
{speamboxName}werden in geschweiften Klammern markiert und live gehighlighted. - Status auf
active— Vorlage ist nun in der Resolution aktiv.

Toolbar (Detail-Seite)
Schlanke Toolbar oben rechts:
| Icon | Aktion (aria-label) | CASL | Wirkung |
|---|---|---|---|
| ← | Zurückgehen | — | Zurück zur Liste. |
| 🏠 | Zur Startseite gehen | — | Springt auf das Dashboard / /. |
| ⏮/◀/▶/⏭ | Pagination | — | Navigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung. |
Globale Floating-Drawer (links)
Wie auf jeder Detail-Seite verfuegbar — siehe Floating-Quickbar:
- KAL. (Mini-Kalender)
- ZEIT (Persoenliche Wochen-Arbeitszeit)
- ARBEIT (Eigene bevorstehende Aufträge)
UI-Elemente
Komponente: PlaceholderTemplate-Editor
Markdown-aehnlicher Editor mit Live-Highlighting der Placeholder. Autocompletion für {speamboxName}, {eventTypeName}, {contactName}, {timestamp}, {locationName}.
Felder und Eingaben
| Feldname | Pflicht | Datentyp | Wirkung beim Ausfuellen | Voraussetzung |
|---|---|---|---|---|
name | ja | String | Anzeige in Auswahllisten und in der Template-Resolution. | — |
notificationEventTypeId | nein | UUID | Verknuepft die Vorlage mit einem Event-Typ. null = generischer Default für alle Events. | view:NotificationEventType. |
notificationChannelId | nein | UUID | Verknuepft die Vorlage mit einem Kanal. null = generisch für alle Kanäle. | view:NotificationChannel. |
subject | nein | Placeholder-Template (single-line) | Betreff. Wird beim Versand mit Werten gefuellt. Sichtbar für E-Mail/SMS-Kanäle. | — |
body | nein | Placeholder-Template (multi-line) | Hauptinhalt. Wird beim Versand mit Werten gefuellt. | — |
language | ja | de-DE/en-US | Sprachvariante. Beim Versand wird die passende Locale ausgewaehlt; falls nicht vorhanden, faellt das System auf eine andere Locale zurück. | — |
status | nein | active/inactive | inactive blendet die Vorlage aus der Resolution aus. | — |
CRUD-Pattern (Standard)
Diese Sub-Route folgt dem Standard-CRUD-Pattern:
- + Neu öffnet ein Modal mit Eingabemaske oder erstellt direkt einen leeren Datensatz und navigiert auf den Detail.
- Detail-Seite verwendet Auto-Save: jede Änderung schreibt sofort via
PATCHin das BE. - Löschen ist Soft-Delete (paranoid) — Datensaetze sind in der Datenbank weiter vorhanden, aber gefiltert.
Spezielles Verhalten dieser Sub-Route ist im jeweiligen Notification-Cluster dokumentiert: siehe Notification-System Konzept.
Wiederverwendbare Konzepte
Verknuepfungen zu anderen Modulen
- NotificationEventType — Event-Stammdaten.
- NotificationChannel — Kanal-Stammdaten.
- NotificationLog — auswerten, welche Vorlage tatsaechlich gewählt wurde.
Häufige Fehler und Lösungen
| Fehler | Lösung |
|---|---|
| Vorlage greift nicht | status = inactive oder Unique-Constraint blockiert (es gibt bereits eine für die Kombination). |
| Falsche Sprache wird verwendet | language = en-US und Empfaenger-Locale ist de-DE — prüfen, ob eine de-DE-Vorlage existiert. |
| Placeholder bleibt unaufgeloest in Notification | Tippfehler im Placeholder-Namen — exakte Schreibweise prüfen. |
API/Schnittstellen
| Methode | Endpoint | Zweck | CASL |
|---|---|---|---|
GET | /api/notification-templates | Liste | view NotificationTemplate |
POST | /api/notification-templates | Anlegen | create NotificationTemplate |
PATCH | /api/notification-templates/:id | Ändern (invalidiert Cache async) | update NotificationTemplate |
DELETE | /api/notification-templates/:id | Soft-Delete | delete NotificationTemplate |
Versionshinweise
- 2026-04-29: Initiale Veroeffentlichung.