feat(notifications): täglicher Lauf über SMTP und Apprise
- Kanäle SMTP (HTML-Mail mit Logos als CID-Anhang) und Apprise, beide blockierenden Bibliotheken laufen in einem Thread - Vier Anlässe: Fälligkeiten im Vorlauf, Kündigungsfristen in drei Stufen, überschrittene Budgets je Monat, Vertragsverlängerungen im Folgemonat - APScheduler im Anwendungsprozess, täglich 07:00 Europe/Berlin, räumt zugleich abgelaufene Sitzungen auf - Duplikatsschutz über den Zieltag statt den Versandtag; fehlgeschlagener Versand wird beim nächsten Lauf erneut versucht - Endpunkte für Regeln, Protokoll, Testversand und sofortigen Lauf - Einstellungsseite mit Einrichtungsstand, Regelpflege und Protokoll - 25 neue Backend-Tests (260 gesamt), 9 neue Frontend-Tests (74 gesamt) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014e7t8UpmoVNMtWivY5LiSH
This commit is contained in:
@@ -96,6 +96,21 @@ die Versionierung folgt [Semantic Versioning](https://semver.org/lang/de/).
|
||||
Serienpaar aus (bei Deuteranopie nicht unterscheidbar) und bleibt den
|
||||
Vorzeichen im Text vorbehalten.
|
||||
|
||||
- Benachrichtigungen über SMTP (HTML-Mail mit eingebetteten Firmenlogos) und
|
||||
Apprise, gesteuert über Regeln je Anlass und Kanal.
|
||||
- Vier Anlässe: bald fällige Posten, Kündigungsfristen (30, 14 und 7 Tage vor
|
||||
dem Termin), überschrittene Budgets und anstehende Vertragsverlängerungen.
|
||||
- APScheduler-Job täglich um 07:00 `Europe/Berlin`, der zugleich abgelaufene
|
||||
Sitzungen aufräumt; verpasste Läufe werden einmal nachgeholt.
|
||||
- Duplikatsschutz über `(rule_id, ref_type, ref_id, Zieltag)`. Maßgeblich ist der
|
||||
Zieltag des Ereignisses, nicht der Versandtag – ein zweiter Lauf am selben oder
|
||||
am nächsten Tag erzeugt keine zweite Nachricht. Ein fehlgeschlagener Versand
|
||||
wird beim nächsten Lauf erneut versucht.
|
||||
- `POST /api/notifications/test` verschickt eine Testnachricht über beide Kanäle,
|
||||
`POST /api/notifications/run` führt einen Lauf sofort aus.
|
||||
- Benachrichtigungen sind in den Einstellungen pflegbar, samt Einrichtungsstand
|
||||
der Kanäle und Versandprotokoll.
|
||||
|
||||
### Geändert
|
||||
|
||||
- `SECRET_KEY` muss mindestens 32 Zeichen lang sein (Vorgabe von HS256); in
|
||||
|
||||
Reference in New Issue
Block a user