mailer weekly notifier

This commit is contained in:
2026-08-11 22:04:11 +02:00
parent 3635820eb8
commit 0f16aa45dc
5 changed files with 253 additions and 0 deletions
+37
View File
@@ -14,6 +14,7 @@ Läuft als Docker Container, pollt periodisch einen privaten Google Calendar ICS
- Web-UI zur Anzeige anstehender Termine mit Suchfunktion
- REST API für programmsprachigen Zugriff auf Kalenderdaten
- Optionale tägliche E-Mail-Benachrichtigung um konfigurierte Uhrzeit
- Optionale wöchentliche Vorab-Info (z.B. freitags) mit Termine nach Suchbegriffen
[![UI](docs/screenshot_thumbnail.png)](docs/screenshot.png)
@@ -123,6 +124,33 @@ Sendet täglich eine HTML-Email mit den anstehenden Terminen. Wird aktiviert wen
**Hinweis:** Ganztagstermine werden nicht in der Benachrichtigung berücksichtigt.
### Optionale wöchentliche Vorab-Info
Sendet wöchentlich (standardmäßig freitags) eine HTML-Email mit Terminen, die auf konfigurierte Suchbegriffe passen. Zeitraum ist immer Samstag bis Freitag der nächsten Woche. Wird aktiviert wenn `WEEKLY_NOTIFY_ENABLED=true` und mindestens ein Suchbegriff gesetzt ist.
| Variable | Default | Beschreibung |
|----------|---------|--------------|
| `WEEKLY_NOTIFY_ENABLED` | `false` | Feature aktivieren |
| `WEEKLY_NOTIFY_DAY` | `5` | Wochentag (0=Mo, 1=Di, ..., 5=Fr) |
| `WEEKLY_NOTIFY_TIME` | `16` | Uhrzeit für Benachrichtigung (Stunde, 0-23) |
| `WEEKLY_NOTIFY_TIMEZONE` | `Europe/Berlin` | Zeitzone für die Benachrichtigung |
| `WEEKLY_NOTIFY_EMAIL` | - | Empfänger (Fallback: `NOTIFY_EMAIL`) |
| `WEEKLY_SEARCHWORDS` | - | Komma-separierte Suchbegriffe |
**Subject-Logik:**
- 1 Termin: `Vorab-Info: Termin am Fr, 15.08.`
- 2+ Termine: `Vorab-Info: 3 Termine naechste Woche`
**Beispiel:**
```bash
WEEKLY_NOTIFY_ENABLED=true
WEEKLY_NOTIFY_DAY=5
WEEKLY_NOTIFY_TIME=16
WEEKLY_SEARCHWORDS=Fussball,Arzttermine
```
**Hinweis:** Keine Email wenn keine Treffer für die Suchbegriffe im Zeitraum.
## Datenbank-Schema
Tabelle `calendar_events`:
@@ -155,6 +183,15 @@ Tabelle `daily_notification_log` (optional, für E-Mail-Benachrichtigung):
| `sent_at` | DATETIME | Zeitpunkt des Versands |
| `event_count` | INT | Anzahl Termine in der Email |
Tabelle `weekly_notification_log` (optional, für wöchentliche Vorab-Info):
| Spalte | Typ | Beschreibung |
|--------|-----|--------------|
| `id` | INT PK | Auto-Increment |
| `notify_date` | DATE | Datum der Benachrichtigung |
| `sent_at` | DATETIME | Zeitpunkt des Versands |
| `event_count` | INT | Anzahl Termine in der Email |
## Web-UI & API
Das Projekt enthält eine FastAPI-basierte Webanwendung die als separater Container (`calendar-api`) läuft und auf Port `8000` erreichbar ist.