Zum Inhalt

Alert-Verlauf und Versandprotokoll

ID: PA-004 · Service: push-alerts · Status: 🟢 aktiv · Use Case: UC-PA-006


Alle gesendeten, fehlgeschlagenen und übersprungenen Push-Nachrichten werden in der alert_history Tabelle protokolliert. Der Benutzer kann die letzten 30 Tage im Frontend einsehen.


Typ

functional

Speicherung

Tabelle: alert_history

Felder

Feld Wert
ID serial PK
Rule Id FK → alert_rules (null bei ad-hoc Versand)
User Id FK → users
Trigger Key varchar (z.B. "lunch_missing_order", "manual_reminder")
Titel varchar (Kopie des Titels zum Versandzeitpunkt)
Sent At timestamptz
Status enum (sent / failed / skipped)
Error text (Fehlermeldung bei status=failed, sonst null)

Retention: 30 Tage (ältere Einträge werden täglich bereinigt)

Fehlerbehandlung

Push Endpoint Gone

Feld Wert
Beschreibung Browser hat Subscription entzogen (HTTP 410 vom Push-Service)
Aktion Subscription in push_subscriptions deaktivieren (active=false)
History Status failed

Push Service Unreachable

Feld Wert
Beschreibung Browser Push Service antwortet nicht (Timeout / 5xx)
Aktion Retry nach 15 Minuten, max. 3 Versuche
History Status failed nach letztem Versuch

No Active Subscription

Feld Wert
Beschreibung Benutzer hat keine aktive Subscription
Aktion Kein Versand, Eintrag mit status=skipped
History Status skipped

API

Endpoints

Eintrag 1

Methode: GET

Path: /api/alerts/history

Beschreibung: Alert-Verlauf des eingeloggten Benutzers (letzte 30 Tage)

Auth: required

Query Params
Feld Wert
Limit int (default 50, max 200)
Status string (optional: sent / failed / skipped)
Response Fields
  • id
  • trigger_key
  • title
  • sent_at
  • status
  • error

Frontend

Darstellung

  • Chronologische Liste (neueste zuerst)
  • Status-Badge (grün = sent, rot = failed, grau = skipped)
  • Titel der Nachricht
  • Versandzeitpunkt (relativ: "vor 2 Stunden")
  • Fehlertext bei failed (aufklappbar)

Abnahmekriterien

  • [ ] Jeder Versandversuch wird protokolliert (auch skipped / failed)
  • [ ] Verlauf zeigt die letzten 30 Tage
  • [ ] Status failed ist erkennbar und enthält Fehlerdetails
  • [ ] Einträge älter als 30 Tage werden automatisch gelöscht

Depends On

  • PA-001
  • PA-002
  • PA-003

Changelog

Eintrag 1

Version: 1.0

Changes: Initiale Version