From aef1c6772116bd7e92cb1787bd2a3571ad63ee37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=9E=E6=B3=95=E6=93=8D=E4=BD=9C?= Date: Fri, 24 Jul 2026 14:15:02 +0800 Subject: [PATCH] fix: return disabled auto-upgrade settings when strategy is missing (#39494) --- api/controllers/console/workspace/plugin.py | 12 +++----- .../console/workspace/test_plugin.py | 28 +++++++++++++++++++ 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/api/controllers/console/workspace/plugin.py b/api/controllers/console/workspace/plugin.py index 33a4f54e69b..98eb1192027 100644 --- a/api/controllers/console/workspace/plugin.py +++ b/api/controllers/console/workspace/plugin.py @@ -442,12 +442,10 @@ register_enum_models( ) -def _default_auto_upgrade_settings( - tenant_id: str, - category: TenantPluginAutoUpgradeCategory, -) -> AutoUpgradeSettingsResponse: +def _missing_auto_upgrade_settings(tenant_id: str) -> AutoUpgradeSettingsResponse: + """Represent a missing persisted strategy as effectively disabled.""" return { - "strategy_setting": PluginAutoUpgradeService.default_strategy_setting_for_category(category), + "strategy_setting": TenantPluginAutoUpgradeStrategySetting.DISABLED, "upgrade_time_of_day": PluginAutoUpgradeService.default_upgrade_time_of_day(tenant_id), "upgrade_mode": TenantPluginAutoUpgradeMode.EXCLUDE, "exclude_plugins": [], @@ -1135,9 +1133,7 @@ class PluginFetchAutoUpgradeApi(Resource): args = ParserAutoUpgradeFetch.model_validate(request.args.to_dict(flat=True)) auto_upgrade = PluginAutoUpgradeService.get_strategy(tenant_id, args.category, session=db.session()) auto_upgrade_dict = ( - _auto_upgrade_settings_to_dict(auto_upgrade) - if auto_upgrade - else _default_auto_upgrade_settings(tenant_id, args.category) + _auto_upgrade_settings_to_dict(auto_upgrade) if auto_upgrade else _missing_auto_upgrade_settings(tenant_id) ) return jsonable_encoder( diff --git a/api/tests/unit_tests/controllers/console/workspace/test_plugin.py b/api/tests/unit_tests/controllers/console/workspace/test_plugin.py index 889b4cb6c1a..0cb336cfea8 100644 --- a/api/tests/unit_tests/controllers/console/workspace/test_plugin.py +++ b/api/tests/unit_tests/controllers/console/workspace/test_plugin.py @@ -1343,6 +1343,34 @@ class TestPluginFetchAutoUpgradeApi: assert result["category"] == TenantPluginAutoUpgradeCategory.TOOL assert result["auto_upgrade"]["upgrade_time_of_day"] == 1 + def test_returns_disabled_settings_when_strategy_is_missing(self, app: Flask): + api = PluginFetchAutoUpgradeApi() + method = unwrap(api.get) + + with ( + app.test_request_context(f"/?category={TenantPluginAutoUpgradeCategory.MODEL.value}"), + patch( + "controllers.console.workspace.plugin.PluginAutoUpgradeService.get_strategy", + return_value=None, + ), + patch( + "controllers.console.workspace.plugin.PluginAutoUpgradeService.default_upgrade_time_of_day", + return_value=78300, + ), + ): + result = method(api, "t1") + + assert result == { + "category": TenantPluginAutoUpgradeCategory.MODEL, + "auto_upgrade": { + "strategy_setting": TenantPluginAutoUpgradeStrategySetting.DISABLED, + "upgrade_time_of_day": 78300, + "upgrade_mode": TenantPluginAutoUpgradeMode.EXCLUDE, + "exclude_plugins": [], + "include_plugins": [], + }, + } + class TestPluginAutoUpgradeExcludePluginApi: def test_success(self, app: Flask):