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