synops/migrations/021_orchestration_trigger_index.sql
vegard 26f03ef21d Trigger-evaluering i portvokteren (oppgave 24.2)
Ved node/edge-events fra PG LISTEN/NOTIFY evaluerer portvokteren nå
om noen orchestration-noder matcher triggeren. Implementert som non-blocking
async task som ikke blokkerer WebSocket-flyten.

Ny modul orchestration_trigger.rs:
- Mapper NOTIFY-events til trigger-typer (node.created, edge.created)
- Effektiv lookup via funksjonell B-tree-indeks på metadata->trigger->event
- Evaluerer observes-edges (eksplisitt) vs conditions (implisitt)
- Betingelser: node_kind, edge_type, has_trait, has_tag (AND-logikk)
- Legger matchende orkestreringer i jobbkøen som "orchestrate"-jobb

Ny migration 021: indeks for trigger-event lookup på orchestration-noder.
Jobbkø-dispatcher håndterer "orchestrate" med placeholder (24.3 implementerer utførelse).

Verifisert: content-node trigrer matching orchestration, communication-node hoppes over.
2026-03-18 16:53:59 +00:00

13 lines
632 B
SQL

-- Migration 021: Indeks for effektiv trigger-lookup på orchestration-noder.
--
-- Portvokteren trenger å finne alle orchestration-noder som matcher et
-- gitt trigger-event (f.eks. "node.created") raskt ved hver NOTIFY.
-- Denne indeksen gjør det til en B-tree-lookup i stedet for full tabellscan.
--
-- Ref: docs/concepts/orkestrering.md § 5 "Strukturert trigger"
-- Funksjonell indeks: trekker ut trigger.event fra metadata-JSONB,
-- begrenset til orchestration-noder.
CREATE INDEX IF NOT EXISTS idx_nodes_orchestration_trigger_event
ON nodes ((metadata -> 'trigger' ->> 'event'))
WHERE node_kind = 'orchestration';