diff --git a/apps/scheduler/call/choice/choice.py b/apps/scheduler/call/choice/choice.py index 8cab828889db4b0d97ff87318760adb507a9f3b1..01ac7106fbdae673d12488a49d831f1d7e7fc13d 100644 --- a/apps/scheduler/call/choice/choice.py +++ b/apps/scheduler/call/choice/choice.py @@ -113,7 +113,7 @@ class Choice(CoreCall, input_model=ChoiceInput, output_model=ChoiceOutput): valid_conditions.append(condition) # 如果所有条件都无效,抛出异常 - if not valid_conditions: + if not valid_conditions and not choice.is_default: msg = "分支没有有效条件" logger.warning(f"[Choice] 分支 {choice.branch_id} 条件处理失败: {msg}") continue diff --git a/apps/scheduler/call/choice/condition_handler.py b/apps/scheduler/call/choice/condition_handler.py index 7542f2944eedff72b820a79725d64b5ddeba5a11..03faf3c9d31d66d3745b4d9f1862ea1f3c7a96a7 100644 --- a/apps/scheduler/call/choice/condition_handler.py +++ b/apps/scheduler/call/choice/condition_handler.py @@ -77,10 +77,10 @@ class ConditionHandler(BaseModel): """处理条件""" default_branch = [c for c in choices if c.is_default] - for block_judgement in choices: + for block_judgement in choices[::-1]: results = [] if block_judgement.is_default: - continue + return default_branch[0].branch_id for condition in block_judgement.conditions: result = ConditionHandler._judge_condition(condition) results.append(result) @@ -91,10 +91,6 @@ class ConditionHandler(BaseModel): if final_result: return block_judgement.branch_id - - # 如果没有匹配的分支,选择默认分支 - if default_branch: - return default_branch[0].branch_id return "" @staticmethod