ceo-api/drizzle/meta/_journal.json
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

55 lines
No EOL
1.1 KiB
JSON

{
"version": "7",
"dialect": "postgresql",
"entries": [
{
"idx": 0,
"version": "7",
"when": 1784655760242,
"tag": "0000_ancient_silver_surfer",
"breakpoints": true
},
{
"idx": 1,
"version": "7",
"when": 1785264962186,
"tag": "0001_lovely_brood",
"breakpoints": true
},
{
"idx": 2,
"version": "7",
"when": 1785268609839,
"tag": "0002_burly_nightcrawler",
"breakpoints": true
},
{
"idx": 3,
"version": "7",
"when": 1785270653404,
"tag": "0003_ai_gateway_requests",
"breakpoints": true
},
{
"idx": 4,
"version": "7",
"when": 1785318305227,
"tag": "0004_platform_kernel",
"breakpoints": true
},
{
"idx": 5,
"version": "7",
"when": 1785319371761,
"tag": "0005_projection_kernel",
"breakpoints": true
},
{
"idx": 6,
"version": "7",
"when": 1785328533134,
"tag": "0006_notifications_engine",
"breakpoints": true
}
]
}