Async Workflow #82

Merged
Lars merged 14 commits from develop into main 2026-04-13 11:58:01 +02:00
Showing only changes of commit e915d3fb13 - Show all commits

View File

@ -398,8 +398,26 @@ def execute_logic_node(
started_at = datetime.utcnow().isoformat()
try:
if not node.condition or not node.condition.expression:
error_msg = f"Logic node {node.id} has no condition/expression defined"
if not node.condition:
error_msg = f"Logic node {node.id} has no condition defined"
logger.error(error_msg)
return NodeExecutionState(
node_id=node.id,
status=NodeStatus.FAILED,
error=error_msg,
started_at=started_at,
completed_at=datetime.utcnow().isoformat()
)
# Handle both serialization formats:
# UI format: condition = {operands: [...], operator: "and"}
# Expected format: condition = {expression: {operands: [...], operator: "and"}}
if hasattr(node.condition, 'operator') and hasattr(node.condition, 'operands'):
expression = node.condition # UI format (direct)
elif hasattr(node.condition, 'expression'):
expression = node.condition.expression # Expected format (wrapped)
else:
error_msg = f"Logic node {node.id} has invalid condition structure (missing operator/operands)"
logger.error(error_msg)
return NodeExecutionState(
node_id=node.id,
@ -410,7 +428,7 @@ def execute_logic_node(
)
# 1. Evaluiere Bedingung
result, error = evaluate_logic_expression(node.condition.expression, context)
result, error = evaluate_logic_expression(expression, context)
if error:
# Fehler bei Evaluation → Fallback anwenden