优化864扫码后收口失败提示与启动任务重载
This commit is contained in:
6
main.py
6
main.py
@@ -154,7 +154,11 @@ def jobs(robot: Robot):
|
|||||||
# 系统级定时任务统一改为数据库驱动,不再在 main.py 里硬编码维护。
|
# 系统级定时任务统一改为数据库驱动,不再在 main.py 里硬编码维护。
|
||||||
# 这里保留入口,只负责按表配置重新加载,便于运行时刷新。
|
# 这里保留入口,只负责按表配置重新加载,便于运行时刷新。
|
||||||
if hasattr(robot, "system_job_loader") and robot.system_job_loader:
|
if hasattr(robot, "system_job_loader") and robot.system_job_loader:
|
||||||
robot.system_job_loader.reload_from_db()
|
# 启动阶段再次 reload 只需要同步最新数据库配置,不应重新触发漏执行补偿:
|
||||||
|
# 1. Robot.__init__ 里已经完成过一次注册;
|
||||||
|
# 2. 若这里使用默认参数再次 reload,会把启动期补偿又执行一遍,抵消前面的提速优化;
|
||||||
|
# 3. 因此这里显式关闭 startup compensation,保持启动路径轻量且幂等。
|
||||||
|
robot.system_job_loader.reload_from_db(run_startup_compensation=False)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,22 @@ class Server864RuntimeMixin:
|
|||||||
return f"{normalized} 请更换更高版本的 864 client/server 组合后再登录。"
|
return f"{normalized} 请更换更高版本的 864 client/server 组合后再登录。"
|
||||||
return normalized
|
return normalized
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _normalize_post_scan_failure_message(message: str) -> str:
|
||||||
|
"""把扫码成功后的收口阶段错误翻译成更接近真实原因的提示。"""
|
||||||
|
normalized = Server864RuntimeMixin._normalize_login_runtime_message(message)
|
||||||
|
if "该链接不存在" in normalized:
|
||||||
|
# 864 在扫码成功后如果 ManualAuth 失败,会直接把长连接停掉:
|
||||||
|
# 1. ABOT 随后再调 `GetInItStatus/GetProfile` 时,就只会看到“该链接不存在”;
|
||||||
|
# 2. 但这并不是根因,根因往往已经出现在服务端控制台,例如“当前客户端版本过低”;
|
||||||
|
# 3. 因此前端这里给出更贴近真实情况的兼容提示,帮助用户把注意力放到版本兼容上。
|
||||||
|
return (
|
||||||
|
"扫码成功后服务端登录收口失败,连接已被主动关闭。"
|
||||||
|
"这通常表示当前 864 client/server 版本组合不兼容;"
|
||||||
|
"若服务端日志已出现“当前客户端版本过低”,请升级到更高版本后再登录。"
|
||||||
|
)
|
||||||
|
return normalized
|
||||||
|
|
||||||
async def run_runtime(
|
async def run_runtime(
|
||||||
self,
|
self,
|
||||||
*,
|
*,
|
||||||
@@ -376,7 +392,7 @@ class Server864RuntimeMixin:
|
|||||||
logger=logger,
|
logger=logger,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_message = self._normalize_login_runtime_message(str(e))
|
error_message = self._normalize_post_scan_failure_message(str(e))
|
||||||
# 扫码成功后的收口阶段同样需要把异常同步给前端:
|
# 扫码成功后的收口阶段同样需要把异常同步给前端:
|
||||||
# 1. 这类错误往往发生在“state=2 之后但正式进入业务前”,最容易被误判成前端没刷新;
|
# 1. 这类错误往往发生在“state=2 之后但正式进入业务前”,最容易被误判成前端没刷新;
|
||||||
# 2. 例如当前用户遇到的“客户端版本过低”就是在这个阶段由服务端主动断开;
|
# 2. 例如当前用户遇到的“客户端版本过低”就是在这个阶段由服务端主动断开;
|
||||||
|
|||||||
Reference in New Issue
Block a user