Zum Hauptinhalt springen

Benachrichtigungs-Events

Zweck

Der Event-Stream (NotificationEvent) zeigt alle konkret ausgeloesten Events — z. B. wenn ein Auftrag auf finished wechselt oder eine Störung an einer SpeamBox auftritt. Die Liste ist read-only: Events entstehen automatisch durch Plattform-Aktivität. Ein Test-Dispatch-Modal erlaubt Administratoren, ein Event manuell zu erzeugen — z. B. zur Validierung einer Subscription-Konfiguration.

Voraussetzungen

- Berechtigung `view:NotificationEvent`. - Für Test-Dispatch zusaetzlich `create:NotificationEvent`.

Berechtigungen (CASL)

ActionSubjectWirkungKeycloak-Rolle
viewFE_NotificationEvent, NotificationEventStream lesbar
createNotificationEventTest-DispatchAPP_SPEAMCORE_CREATE_NOTIFICATION_EVENT

Schritt-für-Schritt-Anleitung

Stream lesen

  1. Events (/notification-events).
  2. Filter nach Status (pending, processed, failed).
  3. Tabellen-Spalten: Event-Typ, Status, Erzeugt am, ggf. SpeamBox.

Test-Event ausloesen

  1. Test-Dispatch klicken — Modal öffnet sich.
  2. Event-Typ, Channel und ggf. Empfaenger wählen.
  3. SendenPOST /api/notification-events erzeugt das Event und es laeuft durch das Subscription-Matching.
Test-Dispatch kann **echte Benachrichtigungen** ausloesen — prüfen Sie vor dem Klick, ob aktive Subscriptions existieren, die den Event aufnehmen.

Listenansicht — notification-events

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

Eingabefelder für Event-Typ, ggf. SpeamBox, Test-Payload. Loest beim Senden ein echtes Event aus, das alle aktiven Subscriptions durchlaeuft.

Felder und Eingaben

Read-only — keine direkten Eingaben pro Eintrag.

FeldnameDatentypWirkungVoraussetzung
notificationEventTypeIdUUID (read-only)Klassifizierung des Events.
speamboxIdUUID (read-only, nullable)Quell-Box, falls hardware-getriggert.
statuspending/processed/failedPhase der Verarbeitung. Wird vom Backend-Worker getriggert.
payloadJSON (read-only)Daten-Snapshot zum Event-Zeitpunkt.
createdAtDateTime (read-only)Zeitstempel der Aufnahme.

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 — Quelle der Klassifizierung.
  • NotificationSubscription — Empfaenger-Routing.
  • NotificationLog — Versand-Audit pro Event und Empfaenger.
  • SpeamBox — viele hardware-getriggerte Events haben einen speamboxId.

Häufige Fehler und Lösungen

FehlerLösung
Status bleibt auf pendingWorker laeuft nicht oder ist gestaut.
Event existiert, aber kein LogKeine aktive Subscription matcht.
Test-Dispatch erzeugt SpamVor dem Klick Subscriptions prüfen — ggf. testweise auf inactive setzen.

API/Schnittstellen

MethodeEndpointZweckCASL
GET/api/notification-eventsStream lesenview NotificationEvent
POST/api/notification-eventsTest-Dispatchcreate NotificationEvent

Versionshinweise

  • 2026-04-29: Initiale Veroeffentlichung.