diff --git a/admin/dashboard/blueprints/robot.py b/admin/dashboard/blueprints/robot.py index 652b134..e102a83 100644 --- a/admin/dashboard/blueprints/robot.py +++ b/admin/dashboard/blueprints/robot.py @@ -492,7 +492,11 @@ def api_switch_login_qr_mode(): result = robot.switch_server_864_login_entry( login_qr_api=login_qr_api, login_way=login_way or None, - do_logout=True, + # 切换二维码模式只调整后续登录入口,不主动踢掉服务端当前在线会话: + # 1. 用户已经明确要求“服务端已登录时,除非手动执行,否则不要做 logout”; + # 2. 这里改为仅重启本地 provider 线程,让 ABOT 重新接管当前会话或等待下次手动退出后再使用新模式; + # 3. 真正的远端退出动作只保留在 `/api/logout_864`,语义更清晰。 + do_logout=False, ) return jsonify({ "success": True, diff --git a/robot.py b/robot.py index 0b5b022..65c78a0 100644 --- a/robot.py +++ b/robot.py @@ -975,6 +975,10 @@ class Robot: # 2. 用户真正关心的是“后台能否尽快切到新的二维码入口”; # 3. 因此这里记录日志后继续向下执行重启流程。 self.LOG.warning(f"切换 864 登录入口前执行退出请求失败,继续重启登录流程: {e}") + # `do_logout=False` 时只重启 ABOT 本地 provider,不会主动登出远端在线账号: + # 1. 这样切换二维码模式不会误把当前服务端现有会话踢下线; + # 2. 若远端本来就已在线,新的 provider 线程会优先尝试接管现有登录态; + # 3. 真正的远端退出只保留给手动点击“退出864登录”的显式动作。 self.ipad_config["login_qr_api"] = normalized_login_qr_api self.ipad_config["login_way"] = normalized_login_way