Zum Hauptinhalt springen

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

- Berechtigung `create:NotificationTemplate`. - Optional: passender `NotificationEventType` und `NotificationChannel`.

Berechtigungen (CASL)

ActionSubjectKeycloak-Rolle
viewFE_NotificationTemplate, NotificationTemplate
create/update/deleteNotificationTemplateAPP_SPEAMCORE_CREATE/UPDATE/DELETE_NOTIFICATION_TEMPLATE
viewNotificationEventType, NotificationChannelAPP_SPEAMCORE_VIEW_NOTIFICATION_EVENT_TYPE, NOTIFICATION_CHANNEL

Schritt-für-Schritt-Anleitung

  1. Vorlagen (/notification-templates) → + Neu.
  2. Name vergeben.
  3. Event-Typ und Kanal wählen — die Kombination bestimmt, wann diese Vorlage greift.
  4. Sprache (de-DE / en-US) wählen.
  5. Subjekt und Body schreiben — Platzhalter wie {speamboxName} werden in geschweiften Klammern markiert und live gehighlighted.
  6. Status auf active — Vorlage ist nun in der Resolution aktiv.
**Unique-Constraint:** Pro Kombination (`eventTypeId`, `channelId`, `language`) darf nur **eine** Vorlage existieren.

Listenansicht — notification-templates

Toolbar (Detail-Seite)

Schlanke Toolbar oben rechts:

IconAktion (aria-label)CASLWirkung
ZurückgehenZurück zur Liste.
🏠Zur Startseite gehenSpringt auf das Dashboard / /.
⏮/◀/▶/⏭PaginationNavigation durch die gefilterte Liste — Massen-Bearbeitung ohne Liste-Sprung.

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

FeldnamePflichtDatentypWirkung beim AusfuellenVoraussetzung
namejaStringAnzeige in Auswahllisten und in der Template-Resolution.
notificationEventTypeIdneinUUIDVerknuepft die Vorlage mit einem Event-Typ. null = generischer Default für alle Events.view:NotificationEventType.
notificationChannelIdneinUUIDVerknuepft die Vorlage mit einem Kanal. null = generisch für alle Kanäle.view:NotificationChannel.
subjectneinPlaceholder-Template (single-line)Betreff. Wird beim Versand mit Werten gefuellt. Sichtbar für E-Mail/SMS-Kanäle.
bodyneinPlaceholder-Template (multi-line)Hauptinhalt. Wird beim Versand mit Werten gefuellt.
languagejade-DE/en-USSprachvariante. Beim Versand wird die passende Locale ausgewaehlt; falls nicht vorhanden, faellt das System auf eine andere Locale zurück.
statusneinactive/inactiveinactive 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 PATCH in 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

FehlerLösung
Vorlage greift nichtstatus = inactive oder Unique-Constraint blockiert (es gibt bereits eine für die Kombination).
Falsche Sprache wird verwendetlanguage = en-US und Empfaenger-Locale ist de-DE — prüfen, ob eine de-DE-Vorlage existiert.
Placeholder bleibt unaufgeloest in NotificationTippfehler im Placeholder-Namen — exakte Schreibweise prüfen.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/notification-templatesListeview NotificationTemplate
POST/api/notification-templatesAnlegencreate NotificationTemplate
PATCH/api/notification-templates/:idÄndern (invalidiert Cache async)update NotificationTemplate
DELETE/api/notification-templates/:idSoft-Deletedelete NotificationTemplate

Versionshinweise

  • 2026-04-29: Initiale Veroeffentlichung.