feat: add email notification system (Brevo SMTP + N8N daily digest)

- Add core notification service: types, email-service (nodemailer/Brevo SMTP), notification-service (digest builder, preference CRUD, HTML renderer)
- Add API routes: POST /api/notifications/digest (N8N cron, Bearer auth), GET/PUT /api/notifications/preferences (session auth)
- Add NotificationPreferences UI component (Bell button + dialog with per-type toggles) in Registratura toolbar
- Add 7 Brevo SMTP env vars to docker-compose.yml
- Update CLAUDE.md, ROADMAP.md, DATA-MODEL.md, SYSTEM-ARCHITECTURE.md, CONFIGURATION.md, DOCKER-DEPLOYMENT.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
AI Assistant
2026-03-11 01:12:36 +02:00
parent 6941074106
commit 974d06fff8
17 changed files with 998 additions and 14 deletions
+12 -3
View File
@@ -32,7 +32,7 @@
| # | Module | Version | Status | Remaining Gaps | Future Enhancements |
| --- | ------------------ | ------- | --------- | --------------------------------------------------- | ------------------------------------------------- |
| 1 | Registratura | 0.4.0 | HARDENING | Legal deadline workflow gaps, chain logic | Workflow automation, email integration, OCR |
| 1 | Registratura | 0.5.0 | HARDENING | | Workflow automation, OCR, print/PDF export |
| 2 | Email Signature | 0.1.0 | COMPLETE | US/SDT addresses may need update | AD sync, branding packs, promo banners |
| 3 | Word XML | 0.1.0 | COMPLETE | — | Schema validator, visual mapper |
| 4 | Digital Signatures | 0.1.0 | COMPLETE | — | Permission layers, document insertion |
@@ -826,9 +826,18 @@ Env vars (hardcoded in docker-compose.yml for Portainer CE):
---
### 8.03 `[STANDARD]` Notification System
### 8.03 `[STANDARD]` Notification System (2026-03-11)
**What:** Bell icon in header. Deadline alerts, overdue warnings, tacit approval triggers.
**What:** Email notification system with daily digest via Brevo SMTP + N8N cron.
**Implemented:**
- Brevo SMTP relay (nodemailer, port 587 STARTTLS)
- Daily digest email: urgent deadlines, overdue deadlines, expiring documents
- Per-user notification preferences (3 types + global opt-out) stored in KeyValueStore
- API routes: POST `/api/notifications/digest` (N8N Bearer auth), GET/PUT `/api/notifications/preferences` (session auth)
- UI: Bell button "Notificari" in Registratura toolbar → dialog with toggles
- HTML email: inline-styled tables, color-coded rows (red/yellow/blue), per-company grouping
- N8N cron: `0 8 * * 1-5` (weekdays 8:00)
**Files:** `src/core/notifications/`, `src/app/api/notifications/`, `components/notification-preferences.tsx`
---