E-Mail-Benachrichtigung für neue Anträge (BL/Partei-Filter) #124
Labels
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: tobias/gwoe-antragspruefer#124
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Kontext
Aus #102 (dotty 2026-04-11): "E-Mail-Benachrichtigung bei neuen Antraegen eines BL / einer Partei — bei registrierten Nutzern haben wir ja eh eine Mailadresse. Bau das."
Registrierte Nutzer sollen eine tägliche oder event-basierte E-Mail bekommen, wenn neue Anträge zu ihrem Filter bewertet wurden.
Arbeitsschritte
email_subscriptions(user_id TEXT, bundesland TEXT NULL, partei TEXT NULL, frequency TEXT, last_sent TIMESTAMP)— beides NULL = allePOST /api/subscriptions(Abo anlegen),GET /api/subscriptions,DELETE /api/subscriptions/{id}last_sentpro Abo sammelt und Mail rendertAkzeptanzkriterien
Stand 2026-04-11 Abend — Fundament deployed, wartet auf SMTP-Credentials
✅ Deployed:
email_subscriptionsTabelle (DB-Migration automatisch beim Start)app/mail.py— Mail-Sending via stdlibsmtplib.SMTP_SSL, Daily-Digest-Runner, HMAC-Unsubscribe-TokenPOST /api/subscriptions(require_auth),GET /api/subscriptions,DELETE /api/subscriptions/{id},GET /unsubscribe/{id}/{token}(public, HMAC-validiert)scripts/run-digest.shfür host-cron⚠️ Wartet auf menschliche Aktion — SMTP-Credentials + Secret in .env
Bitte auf dem Server
/opt/gwoe-antragspruefer/.envergänzen:Danach:
⚠️ Wartet auf menschliche Aktion — Host-Cron installieren
Dann läuft jeden Morgen um 07:00 der Digest.
Manueller Test vor Cron-Install:
Offene Punkte in dieser Issue:
Cron installiert, läuft täglich 07:00:
SMTP.login()OK gegensmtp.1blu.de:465mit Keycloak-Credentials/var/log/gwoe-digest.logAkzeptanzkriterium: User kann jetzt Abo anlegen → bekommt am nächsten 7:00 die erste Digest-Mail.
Schließe, Restposten (UI-Flow für Abo-Anlage) ist bereits live laut letzter Session.