# 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.
