From 2c976f4d4853417e79f87a6425e62a526a0f06d1 Mon Sep 17 00:00:00 2001 From: SmartUp Developer Date: Thu, 2 Jul 2026 23:06:38 +0800 Subject: [PATCH] fix: add active check post account platform update to prevent silent ignore by remote backend --- backend/app/routers/websites.py | 10 ++++++++++ backend/test_organize_groups.py | 6 +++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/backend/app/routers/websites.py b/backend/app/routers/websites.py index e242570..51c030f 100644 --- a/backend/app/routers/websites.py +++ b/backend/app/routers/websites.py @@ -1825,6 +1825,16 @@ def organize_website_groups( if "group_ids" in update_payload: remote_acc["group_ids"] = new_group_ids if "platform" in update_payload: + # 主动核对防线:防止子站忽略 platform 修改而发生静默失败 + fresh_accs = c.list_accounts() or [] + fresh_acc = next((a for a in fresh_accs if str(c.extract_id(a)) == str(old_account_id)), None) + if fresh_acc: + remote_account_map[str(old_account_id)] = fresh_acc + new_platform = fresh_acc.get("platform") + if str(new_platform).lower() != str(platform).lower(): + raise WebsiteError( + f"远端账号不支持修改平台属性,尝试将平台从 {remote_platform} 修改为 {platform} 失败" + ) remote_acc["platform"] = platform msg_parts = [] diff --git a/backend/test_organize_groups.py b/backend/test_organize_groups.py index a8111b5..127b6f7 100644 --- a/backend/test_organize_groups.py +++ b/backend/test_organize_groups.py @@ -541,6 +541,7 @@ def test_organize_groups_corrects_mismatched_platform_instead_of_recreating(db_s updated_accounts = [] create_called = False + mock_platform = "openai" class MockClient: def __init__(self, **kwargs): pass @@ -554,7 +555,7 @@ def test_organize_groups_corrects_mismatched_platform_instead_of_recreating(db_s "id": "ACC-G1", "name": "SmartUp-G1", "group_ids": ["TG1"], - "platform": "openai", + "platform": mock_platform, } ] def extract_id(self, val): @@ -564,7 +565,10 @@ def test_organize_groups_corrects_mismatched_platform_instead_of_recreating(db_s create_called = True return {"id": "NEW-ACC", "name": body["name"], "group_ids": body["group_ids"]} def update_account(self, account_id, body): + nonlocal mock_platform updated_accounts.append((account_id, body)) + if "platform" in body: + mock_platform = body["platform"] return {"id": account_id, "platform": body.get("platform")} monkeypatch.setattr("app.routers.websites.Sub2ApiWebsiteClient", MockClient)