Commit Graph

  • 2a61864e75 docs: ADR für recipientEmail in BullMQ-Jobs (Finding 2 — Redis-PII) main Joachim Hummel 2026-04-17 17:51:55 +00:00
  • 0a81894283 feat: DOI-Anmeldung, Bestätigung und Löschungs-API (Findings 3+4) Joachim Hummel 2026-04-17 17:51:25 +00:00
  • 4174b33016 feat: Subscriber-Repository mit Double-Opt-In und Consent-Tracking (Finding 3) Joachim Hummel 2026-04-17 17:37:30 +00:00
  • 9b6e9d8383 migration: subscribers-Tabelle mit DOI-Feldern und Consent-Tracking (Finding 3) Joachim Hummel 2026-04-17 17:36:25 +00:00
  • ee83705527 fix: Suppression-Check nutzt SHA256-Hash statt Klartext-E-Mail (Finding 1) Joachim Hummel 2026-04-17 17:36:11 +00:00
  • e5db71ead1 fix: Bug 1+2+3 — SQL Cross-Join, PATCH 404 vs 400, API-Test-Skip Joachim Hummel 2026-04-17 17:34:18 +00:00
  • ca0c65352e fix: DSGVO-Findings 5+7+6 — Tenant-Guard, APP_URL-Pflichtcheck, Constraint-Migration Joachim Hummel 2026-04-17 16:42:50 +00:00
  • 25889a5419 fix: Rollback auf draft bei Versand-Fehlern, Fehlermeldung updateCampaign Joachim Hummel 2026-04-17 13:50:21 +00:00
  • 889bfad085 fix: API Routes — Ergebnisprüfung, Suppression-Check vor Enqueue, Bulk-Enqueue, Status-Codes, Draft-Guard Joachim Hummel 2026-04-17 13:44:42 +00:00
  • e2f2ce6a56 feat: API Routes — Campaign CRUD, sofortiger Versand, Zeitplan Joachim Hummel 2026-04-17 13:39:46 +00:00
  • e49552236d fix: safeInsertEvent verhindert Doppelversand, Union-Typ für eventType, Privacy-Tests ergänzt Joachim Hummel 2026-04-17 12:13:31 +00:00
  • 8bf143735e feat: BullMQ Worker — Suppression-Check vor SMTP, ClickHouse-Event-Insert, RFC-8058-Header Joachim Hummel 2026-04-17 12:09:04 +00:00
  • 5340e76630 fix: Typ-Generic in checkSuppression, SMTP_PASS Fallback, Logging-Test prüft console.error, tenantId-Fehler-Test Joachim Hummel 2026-04-17 10:53:56 +00:00
  • a60b08876c feat: Suppression-Check (normalisiert, parametrisiert) und SMTP-Client mit RFC-8058-Header Joachim Hummel 2026-04-17 10:51:26 +00:00
  • 5b24c9f129 fix: DI statt Singleton, Queue-Name email-send (BullMQ v5 kein Doppelpunkt), err bei fehlender Job-ID Joachim Hummel 2026-04-17 10:36:04 +00:00
  • 7baeb004c6 feat: BullMQ email:send Queue — enqueueEmailSend mit maxAttempts 3, exponentielles Backoff Joachim Hummel 2026-04-17 10:32:40 +00:00
  • 4a54d31bd0 fix: updateCampaignStatus überschreibt keine bestehenden Scheduling-Daten, fehlende Tests ergänzt Joachim Hummel 2026-04-17 09:55:45 +00:00
  • 4245a1fbde feat: Campaign Repository — CRUD mit Tenant-Isolation und Result-Pattern Joachim Hummel 2026-04-17 09:52:55 +00:00
  • c4d3c348c1 fix: CREATE OR REPLACE TRIGGER (idempotent), FK-Indizes für campaign_recipients und campaign_triggers Joachim Hummel 2026-04-17 08:59:38 +00:00
  • 5a144e0ce4 feat: Migrationen für campaigns-Tabellen (PostgreSQL) und email_events (ClickHouse) Joachim Hummel 2026-04-17 08:57:37 +00:00
  • 3c3088e66b fix: execute mit optionalen Params, release(error) bei reset-Fehler, Tests ergänzt Joachim Hummel 2026-04-17 08:35:31 +00:00
  • 4f739f7b1e fix: release() absichern, DATABASE_URL Startup-Check, execute-Test hinzugefügt Joachim Hummel 2026-04-17 08:33:07 +00:00
  • c01befa477 fix: Einzelner shared Pool, finally-Block verschluckt nicht Original-Fehler, Pool-Error-Handler Joachim Hummel 2026-04-17 08:30:57 +00:00
  • cdfdd025d2 fix: Pool-Connection-Isolation in withTenant, SQL-Injection-Schutz, ClickHouse env-var-Check Joachim Hummel 2026-04-17 08:28:21 +00:00
  • ad0febe2cf fix: QueryResultRow-Constraint für db.query<T> unter TypeScript strict Joachim Hummel 2026-04-17 08:24:15 +00:00
  • 506197623a feat: PostgreSQL withTenant-Helper und ClickHouse-Client Joachim Hummel 2026-04-17 08:20:25 +00:00
  • 7c7fc23b8c chore: CLAUDE.md, PROMPT.md und Planungs-Docs hinzufügen Joachim Hummel 2026-04-17 08:17:18 +00:00
  • 689fbac795 fix: TriggerType-Typisierung, z.infer-Exporte, fehlende Tests für Result und hashEmail Joachim Hummel 2026-04-17 08:15:13 +00:00
  • b63ce058a0 feat: Projekt-Scaffold + Core Utilities — Result Pattern, hashEmail, Zod-Schemas, Campaign-Typen Joachim Hummel 2026-04-17 08:11:54 +00:00