From c95593fcbacc34db8bf14896a5005303f2d905bd Mon Sep 17 00:00:00 2001 From: webjoin111 <455457521@qq.com> Date: Sun, 29 Jun 2025 13:50:00 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E4=BF=AE=E5=A4=8Dpyright?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scheduler_admin/command.py | 43 ++++++++++++++++--- zhenxun/utils/manager/schedule_manager.py | 13 +++++- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/zhenxun/builtin_plugins/scheduler_admin/command.py b/zhenxun/builtin_plugins/scheduler_admin/command.py index 683e70fd..08a085fb 100644 --- a/zhenxun/builtin_plugins/scheduler_admin/command.py +++ b/zhenxun/builtin_plugins/scheduler_admin/command.py @@ -501,8 +501,23 @@ async def _( ) try: - validated_model = params_model.model_validate(raw_kwargs) - job_kwargs = validated_model.model_dump() + model_validate = getattr(params_model, "model_validate", None) + if not model_validate: + await schedule_cmd.finish( + f"插件 '{plugin_name}' 的参数模型不支持验证。" + ) + return + + validated_model = model_validate(raw_kwargs) + + model_dump = getattr(validated_model, "model_dump", None) + if not model_dump: + await schedule_cmd.finish( + f"插件 '{plugin_name}' 的参数模型不支持导出。" + ) + return + + job_kwargs = model_dump() except ValidationError as e: errors = [f" - {err['loc'][0]}: {err['msg']}" for err in e.errors()] error_str = "\n".join(errors) @@ -740,8 +755,23 @@ async def _( ) try: - validated_model = params_model.model_validate(raw_kwargs) - job_kwargs = validated_model.model_dump(exclude_unset=True) + model_validate = getattr(params_model, "model_validate", None) + if not model_validate: + await schedule_cmd.finish( + f"插件 '{schedule.plugin_name}' 的参数模型不支持验证。" + ) + return + + validated_model = model_validate(raw_kwargs) + + model_dump = getattr(validated_model, "model_dump", None) + if not model_dump: + await schedule_cmd.finish( + f"插件 '{schedule.plugin_name}' 的参数模型不支持导出。" + ) + return + + job_kwargs = model_dump(exclude_unset=True) except ValidationError as e: errors = [f" - {err['loc'][0]}: {err['msg']}" for err in e.errors()] error_str = "\n".join(errors) @@ -773,10 +803,11 @@ async def _(): message_parts.append(f"{i}. {plugin_name} - ⚠️ 参数模型配置错误") continue - if params_model.model_fields: + model_fields = getattr(params_model, "model_fields", None) + if model_fields: param_info = ", ".join( f"{field_name}({_get_type_name(field_info.annotation)})" - for field_name, field_info in params_model.model_fields.items() + for field_name, field_info in model_fields.items() ) message_parts.append(f"{i}. {plugin_name} - 参数: {param_info}") else: diff --git a/zhenxun/utils/manager/schedule_manager.py b/zhenxun/utils/manager/schedule_manager.py index 757fe39b..67621701 100644 --- a/zhenxun/utils/manager/schedule_manager.py +++ b/zhenxun/utils/manager/schedule_manager.py @@ -236,8 +236,17 @@ class SchedulerManager: return False, f"插件 '{plugin_name}' 的参数模型配置错误" try: - validated_model = params_model.model_validate(job_kwargs) - return True, validated_model.model_dump() + model_validate = getattr(params_model, "model_validate", None) + if not model_validate: + return False, f"插件 '{plugin_name}' 的参数模型不支持验证" + + validated_model = model_validate(job_kwargs) + + model_dump = getattr(validated_model, "model_dump", None) + if not model_dump: + return False, f"插件 '{plugin_name}' 的参数模型不支持导出" + + return True, model_dump() except ValidationError as e: errors = [f" - {err['loc'][0]}: {err['msg']}" for err in e.errors()] error_str = "\n".join(errors)