33 lines
1.1 KiB
Markdown
33 lines
1.1 KiB
Markdown
|
|
# Notification-Strategie
|
|||
|
|
|
|||
|
|
## Ereignisse
|
|||
|
|
|
|||
|
|
Die folgenden Ereignisse sind in der Anwendung definiert:
|
|||
|
|
|
|||
|
|
1. **Neues Angebot** – Ein neues Angebot wurde erstellt.
|
|||
|
|
2. **Gegenangebot** – Ein Gegenangebot wurde eingereicht.
|
|||
|
|
3. **Deal** – Ein Deal wurde abgeschlossen.
|
|||
|
|
4. **Bewertungsfenster** – Das Bewertungsfenster (2-14 Tage) für ein Angebot ist geöffnet.
|
|||
|
|
|
|||
|
|
## Notification-Queue/Dispatcher-Schnittstelle
|
|||
|
|
|
|||
|
|
Das Backend muss einen klaren Hook pro Kernereignis haben, um Benachrichtigungen zu versenden. Die Schnittstelle zur Notification-Queue wird wie folgt definiert:
|
|||
|
|
|
|||
|
|
```ts
|
|||
|
|
interface NotificationEvent {
|
|||
|
|
type: 'offer' | 'counter-offer' | 'deal' | 'review-window';
|
|||
|
|
payload: any;
|
|||
|
|
userId: string;
|
|||
|
|
timestamp: Date;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
interface NotificationDispatcher {
|
|||
|
|
dispatch(event: NotificationEvent): Promise<void>;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Retry- und Dedupe-Regeln
|
|||
|
|
|
|||
|
|
- **Retry**: Bei einem Fehler beim Versand einer Benachrichtigung wird ein Retry-Mechanismus mit exponentiellem Backoff verwendet.
|
|||
|
|
- **Dedupe**: Jede Benachrichtigung wird einmalig pro Nutzer und Ereignis versendet, um Duplikate zu vermeiden.
|