Zum Inhalt

Notifications Modul

Zweck

Das Notifications Modul bietet ein zentrales Benachrichtigungssystem für alle wichtigen Ereignisse: Schicht-Bewerbungen, Zeiterfassungs-Genehmigungen, Einladungen, System-Updates. Es unterstützt einstellbare Benachrichtigungstypen und E-Mail-Versand.

Verantwortlichkeiten

Was gehört zum Modul

  • Benachrichtigungen erstellen: Automatische Benachrichtigungen bei Events
  • Benachrichtigungen anzeigen: Übersicht aller Benachrichtigungen
  • Benachrichtigungen markieren: Als gelesen markieren
  • E-Mail-Versand: Optionale E-Mail-Benachrichtigungen
  • Benachrichtigungs-Typen: Verschiedene Typen (Info, Warning, Error, Success)

Was gehört nicht zum Modul

  • Event-Erstellung: Events werden von anderen Modulen erstellt
  • E-Mail-Konfiguration: Siehe Core E-Mail-Service

Implementierung

Backend- und Frontend-API sind modular aufgebaut; Details siehe interne Entwickler-Dokumentation.

Konfiguration

Entitlement

Das Modul ist ein Core-Modul und erfordert kein spezielles Entitlement. Es ist immer aktiv.

Entitlement-Key: Keiner (Core-Modul)

Environment Variables

Keine modulspezifischen ENV-Variablen erforderlich.

Defaults

  • Standard-Limit: 50 Benachrichtigungen
  • Maximales Limit: 200 Benachrichtigungen

Abhängigkeiten

Optionale Abhängigkeiten

Keine.

Core-Abhängigkeiten

Keine.

API-Endpoints

Authentifizierung

Alle Endpoints erfordern Authentifizierung. Zwei Methoden werden unterstützt:

  1. Firebase ID Token (Standard für Web-App)
  2. API-Token (für externe Nutzung)

Header: Authorization: Bearer <token>

Benachrichtigungen abrufen

GET /api/notifications?limit=50&unreadOnly=false

Lädt Benachrichtigungen des aktuellen Users.

Query-Parameter: - limit (optional): Maximale Anzahl (Standard: 50, Maximum: 200) - unreadOnly (optional): Nur ungelesene (Standard: false)

Response:

{
  "notifications": [
    {
      "id": "notif123",
      "type": "info",
      "title": "Neue Bewerbung",
      "message": "Max Mustermann hat sich auf Schicht #456 beworben",
      "read": false,
      "createdAt": "2024-01-15T10:00:00Z"
    }
  ],
  "count": 1
}

Ungelesene Anzahl abrufen

GET /api/notifications/unread-count

Gibt die Anzahl ungelesener Benachrichtigungen zurück.

Response:

{
  "count": 5
}

Als gelesen markieren

POST /api/notifications/:notificationId/read

Markiert eine Benachrichtigung als gelesen.

Alle als gelesen markieren

POST /api/notifications/read-all

Markiert alle Benachrichtigungen als gelesen.

Benachrichtigung löschen

DELETE /api/notifications/:notificationId

Löscht eine Benachrichtigung.

Wird dokumentiert: Detaillierte API-Endpunkt-Dokumentation folgt.

Firestore Collections

Notifications

Pfad: /tenants/{tenantId}/notifications/{notificationId}

{
  uid: string; // Empfänger UID
  type: 'info' | 'warning' | 'error' | 'success';
  title: string;
  message: string;
  read: boolean;
  link?: string; // Optional: Link zur zugehörigen Seite
  metadata?: Record<string, unknown>; // Zusätzliche Daten
  createdAt: Timestamp;
  readAt?: Timestamp;
}

Wird dokumentiert: Detaillierte Datenbank-Struktur folgt.

Fehlerfälle

HTTP-Status-Codes

  • 200 OK: Erfolgreich
  • 400 Bad Request: Validierungsfehler
  • 401 Unauthorized: Nicht authentifiziert
  • 403 Forbidden: Keine Berechtigung
  • 404 Not Found: Ressource nicht gefunden
  • 500 Internal Server Error: Server-Fehler

Fehlercodes

Wird dokumentiert: Detaillierte Fehlercodes folgen.

FAQ / Troubleshooting

Wird dokumentiert: Häufige Fragen und Lösungen folgen.