32 lines
1.1 KiB
Markdown
32 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.
|