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 6111ba9011a69598785c5843b600770ec7e6b677..6f10f2c82884ff5b267131cfb1573d829d0b7a4d 100644 --- a/apps/scheduler/call/choice/condition_handler.py +++ b/apps/scheduler/call/choice/condition_handler.py @@ -75,12 +75,11 @@ class ConditionHandler(BaseModel): @staticmethod def handler(choices: list[ChoiceBranch]) -> str: """处理条件""" - 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 block_judgement.branch_id for condition in block_judgement.conditions: result = ConditionHandler._judge_condition(condition) if result is not None: @@ -96,9 +95,6 @@ class ConditionHandler(BaseModel): if final_result: return block_judgement.branch_id - # 如果没有匹配的分支,选择默认分支 - if default_branch: - return default_branch[0].branch_id return "" @staticmethod