From 36b0e9b2bd6472758fa9409edfb9cbe64c24e7f3 Mon Sep 17 00:00:00 2001 From: zxstty Date: Mon, 28 Jul 2025 16:42:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=97=A0=E9=89=B4=E6=9D=83=E7=94=A8=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/main.py | 16 ++++++++ .../call/choice/condition_handler.py | 41 ++++++++++--------- apps/schemas/request_data.py | 1 + 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/apps/main.py b/apps/main.py index c26e5e471..17d4abb42 100644 --- a/apps/main.py +++ b/apps/main.py @@ -83,12 +83,28 @@ logging.basicConfig( ) +async def add_no_auth_user() -> None: + """ + 添加无认证用户 + """ + from apps.common.mongo import MongoDB + from apps.schemas.collection import User + mongo = MongoDB() + user_collection = mongo.get_collection("user") + await user_collection.insert_one(User( + _id=Config().get_config().no_auth.user_sub, + is_admin=True, + ).model_dump(by_alias=True)) + + async def init_resources() -> None: """初始化必要资源""" WordsCheck() await LanceDB().init() await Pool.init() TokenCalculator() + if Config().get_config().no_auth.enable: + await add_no_auth_user() # 运行 if __name__ == "__main__": diff --git a/apps/scheduler/call/choice/condition_handler.py b/apps/scheduler/call/choice/condition_handler.py index 7542f2944..6111ba901 100644 --- a/apps/scheduler/call/choice/condition_handler.py +++ b/apps/scheduler/call/choice/condition_handler.py @@ -83,7 +83,11 @@ class ConditionHandler(BaseModel): continue for condition in block_judgement.conditions: result = ConditionHandler._judge_condition(condition) - results.append(result) + if result is not None: + results.append(result) + if not results: + logger.warning(f"[Choice] 分支 {block_judgement.branch_id} 条件处理失败: 没有有效的条件") + continue if block_judgement.logic == Logic.AND: final_result = all(results) elif block_judgement.logic == Logic.OR: @@ -118,7 +122,7 @@ class ConditionHandler(BaseModel): if value_type == Type.STRING: result = ConditionHandler._judge_string_condition(left, operate, right) elif value_type == Type.NUMBER: - result = ConditionHandler._judge_int_condition(left, operate, right) + result = ConditionHandler._judge_number_condition(left, operate, right) elif value_type == Type.BOOL: result = ConditionHandler._judge_bool_condition(left, operate, right) elif value_type == Type.LIST: @@ -126,9 +130,9 @@ class ConditionHandler(BaseModel): elif value_type == Type.DICT: result = ConditionHandler._judge_dict_condition(left, operate, right) else: - logger.error("不支持的数据类型: %s", value_type) msg = f"不支持的数据类型: {value_type}" - raise ValueError(msg) + logger.error(f"[Choice] 条件处理失败: {msg}") + return None return result @staticmethod @@ -147,11 +151,10 @@ class ConditionHandler(BaseModel): """ left_value = left.value if not isinstance(left_value, str): - logger.error("左值不是字符串类型: %s", left_value) - msg = "左值必须是字符串类型" - raise TypeError(msg) + msg = f"左值必须是字符串类型 ({left_value})" + logger.warning(msg) + return None right_value = right.value - result = False if operate == StringOperate.EQUAL: return left_value == right_value elif operate == StringOperate.NOT_EQUAL: @@ -195,9 +198,9 @@ class ConditionHandler(BaseModel): """ left_value = left.value if not isinstance(left_value, (int, float)): - logger.error("左值不是数字类型: %s", left_value) - msg = "左值必须是数字类型" - raise TypeError(msg) + msg = f"左值必须是数字类型 ({left_value})" + logger.warning(msg) + return None right_value = right.value if operate == NumberOperate.EQUAL: return left_value == right_value @@ -229,9 +232,9 @@ class ConditionHandler(BaseModel): """ left_value = left.value if not isinstance(left_value, bool): - logger.error("左值不是布尔类型: %s", left_value) msg = "左值必须是布尔类型" - raise TypeError(msg) + logger.warning(msg) + return None right_value = right.value if operate == BoolOperate.EQUAL: return left_value == right_value @@ -259,9 +262,9 @@ class ConditionHandler(BaseModel): """ left_value = left.value if not isinstance(left_value, list): - logger.error("左值不是列表类型: %s", left_value) - msg = "左值必须是列表类型" - raise TypeError(msg) + msg = f"左值必须是列表类型 ({left_value})" + logger.warning(msg) + return None right_value = right.value if operate == ListOperate.EQUAL: return left_value == right_value @@ -299,9 +302,9 @@ class ConditionHandler(BaseModel): """ left_value = left.value if not isinstance(left_value, dict): - logger.error("左值不是字典类型: %s", left_value) - msg = "左值必须是字典类型" - raise TypeError(msg) + msg = f"左值必须是字典类型 ({left_value})" + logger.warning(msg) + return None right_value = right.value if operate == DictOperate.EQUAL: return left_value == right_value diff --git a/apps/schemas/request_data.py b/apps/schemas/request_data.py index a3a8848c3..af0d4a010 100644 --- a/apps/schemas/request_data.py +++ b/apps/schemas/request_data.py @@ -107,6 +107,7 @@ class ActiveMCPServiceRequest(BaseModel): """POST /api/mcp/{serviceId} 请求数据结构""" active: bool = Field(description="是否激活mcp服务") + mcp_env: dict[str, Any] | None = Field(default=None, description="MCP服务环境变量", alias="mcpEnv") class UpdateServiceRequest(BaseModel): -- Gitee