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.
13 lines
632 B
SQL
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';
|