124 lines
4.1 KiB
SQL
124 lines
4.1 KiB
SQL
-- Phase 4 E2E Test: Branching + Join Workflow
|
|
-- Test workflow mit 2 parallelen Pfaden, die wieder zusammengeführt werden
|
|
|
|
-- 1. Insert workflow definition
|
|
INSERT INTO workflow_definitions (
|
|
id,
|
|
name,
|
|
description,
|
|
graph,
|
|
active,
|
|
created_by
|
|
) VALUES (
|
|
'phase4-join-test',
|
|
'Phase 4 Join Test Workflow',
|
|
'Test workflow with branching and join node',
|
|
'{
|
|
"nodes": [
|
|
{
|
|
"id": "start",
|
|
"type": "start",
|
|
"position": {"x": 100, "y": 100}
|
|
},
|
|
{
|
|
"id": "body_analysis",
|
|
"type": "analysis",
|
|
"prompt_slug": "body",
|
|
"position": {"x": 100, "y": 200},
|
|
"question_augmentations": [
|
|
{
|
|
"id": "relevanz",
|
|
"type": "relevanz",
|
|
"question": "Ist eine Gewichtsveränderung relevant?",
|
|
"answer_spectrum": ["ja", "nein", "unklar"]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "decision_logic",
|
|
"type": "logic",
|
|
"position": {"x": 100, "y": 300},
|
|
"condition": {
|
|
"type": "if",
|
|
"expression": {
|
|
"operator": "eq",
|
|
"ref": "body_analysis.relevanz",
|
|
"value": "ja"
|
|
}
|
|
},
|
|
"fallback": {
|
|
"strategy": "default_path"
|
|
}
|
|
},
|
|
{
|
|
"id": "path_a_nutrition",
|
|
"type": "analysis",
|
|
"prompt_slug": "nutrition",
|
|
"position": {"x": 50, "y": 400},
|
|
"question_augmentations": [
|
|
{
|
|
"id": "prioritaet",
|
|
"type": "prioritaet",
|
|
"question": "Wie wichtig ist Ernährungsoptimierung?",
|
|
"answer_spectrum": ["hoch", "mittel", "niedrig", "unklar"]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "path_b_activity",
|
|
"type": "analysis",
|
|
"prompt_slug": "activity",
|
|
"position": {"x": 150, "y": 400},
|
|
"question_augmentations": [
|
|
{
|
|
"id": "prioritaet",
|
|
"type": "prioritaet",
|
|
"question": "Wie wichtig ist Trainingsoptimierung?",
|
|
"answer_spectrum": ["hoch", "mittel", "niedrig", "unklar"]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "join_consolidation",
|
|
"type": "join",
|
|
"position": {"x": 100, "y": 500},
|
|
"join_strategy": "best_effort",
|
|
"skip_handling": "ignore_skipped"
|
|
},
|
|
{
|
|
"id": "end",
|
|
"type": "end",
|
|
"position": {"x": 100, "y": 600}
|
|
}
|
|
],
|
|
"edges": [
|
|
{"id": "e1", "from_node": "start", "to_node": "body_analysis"},
|
|
{"id": "e2", "from_node": "body_analysis", "to_node": "decision_logic"},
|
|
{"id": "e3", "from_node": "decision_logic", "to_node": "path_a_nutrition", "label": "then"},
|
|
{"id": "e4", "from_node": "decision_logic", "to_node": "path_b_activity", "label": "else"},
|
|
{"id": "e5", "from_node": "path_a_nutrition", "to_node": "join_consolidation"},
|
|
{"id": "e6", "from_node": "path_b_activity", "to_node": "join_consolidation"},
|
|
{"id": "e7", "from_node": "join_consolidation", "to_node": "end"}
|
|
]
|
|
}'::jsonb,
|
|
true,
|
|
'test-user'
|
|
);
|
|
|
|
-- 2. Verify workflow was created
|
|
SELECT
|
|
id,
|
|
name,
|
|
active,
|
|
jsonb_array_length(graph->'nodes') as node_count,
|
|
jsonb_array_length(graph->'edges') as edge_count
|
|
FROM workflow_definitions
|
|
WHERE id = 'phase4-join-test';
|
|
|
|
-- Expected result:
|
|
-- id: phase4-join-test
|
|
-- name: Phase 4 Join Test Workflow
|
|
-- active: true
|
|
-- node_count: 7
|
|
-- edge_count: 7
|