ceo-api/drizzle
valentinbvro 80e9ede875 feat: Sprint 2-3 -- Notifications Engine
Motorul NU trimite o notificare per eveniment. Decide daca merita notificat,
cui, ce severitate, daca se agrega, ce canal si cand.

- notifications / notification_preferences / notification_processed_events.
  Ultimul da idempotency: aceeasi regula nu proceseaza acelasi eveniment de
  doua ori (unique rule_id + event_id).
- Reguli in COD, nu in DB cu condition_expression evaluat dinamic. Un
  evaluator de expresii e o suprafata de atac si un limbaj in plus, fara ca
  nimeni sa administreze inca reguli per tenant. Contractul ramane acelasi
  cand vor migra in DB.
- Destinatarii se rezolva server-side din memberships, niciodata din payload.
  Implicit nu notificam actorul despre propria actiune.
- Deduplicare pe cheia tenant+recipient+categorie+entitate+versiune regula.
- Agregare: 47 de taskuri intr-o ora devin o notificare cu aggregated_count,
  nu 47 de notificari. Testul verifica invariantul ca fereastra de agregare
  <= fereastra de dedup, altfel s-ar crea una noua inainte sa se agrege.
- Quiet hours cu fereastra care poate traversa miezul noptii. CRITICAL le
  depaseste DOAR daca politica userului permite, nu implicit.
- Inbox: filtre (unread/action_required/critical/intelligence/system),
  mark-read, acknowledge (opreste escaladarea), dismiss, snooze.
- Preferinte per user+tenant cu UPSERT (NULLS NOT DISTINCT pe category, ca
  randul implicit "toate categoriile" sa fie unic).
2026-07-29 14:36:29 +02:00
..
meta feat: Sprint 2-3 -- Notifications Engine 2026-07-29 14:36:29 +02:00
0000_ancient_silver_surfer.sql feat: scaffold Business/Life/Intelligence/Trust Engine tables 2026-07-21 19:44:45 +02:00
0001_lovely_brood.sql feat: multi-tenant core -- session auth, RBAC, organizations, tasks, audit 2026-07-28 21:15:43 +02:00
0002_burly_nightcrawler.sql feat: Faza A2 -- intelligence proxy, saved segments, research briefs, briefing 2026-07-28 22:01:17 +02:00
0003_ai_gateway_requests.sql feat: AI Gateway -- Context Manifest, model routing, cost audit, guardrails 2026-07-28 22:34:36 +02:00
0004_platform_kernel.sql feat: Platform Kernel v1 -- workspaces, ExecutionContext, /v1/navigation, event envelope 2026-07-29 11:46:20 +02:00
0005_projection_kernel.sql feat: Sprint 1 -- Projection Kernel (read models pentru dashboard) 2026-07-29 12:03:34 +02:00
0006_notifications_engine.sql feat: Sprint 2-3 -- Notifications Engine 2026-07-29 14:36:29 +02:00