fix: AI 控制台切页/刷新不丢——①EventSource onerror 不再误 endRun(断网/后台节流/瞬时抖动都会触发 onerror 而后端任务仍在跑;EventSource 自动重连 + 服务端队列保留积压事件,重连后补发,连接彻底关闭才提示可刷新恢复);②页面刷新恢复:GET /api/agent/run 增加 run_id/answer/error/history,前端 restoreAgentView 渲染历史轮次、running 时自动重订阅事件流、done/error 展示结果——切走再回来任务与对话都在
This commit is contained in:
+11
-3
@@ -541,16 +541,24 @@ def agent_run():
|
||||
@bp.route("/api/agent/run", methods=["GET"])
|
||||
@admin_required
|
||||
def agent_run_status():
|
||||
"""当前 Agent 运行状态(多窗口/多人可见):idle / running + 任务摘要。
|
||||
"""当前 Agent 运行状态(多窗口/页面刷新恢复用):
|
||||
idle/running/done + run_id + 最终答案 + 会话历史。
|
||||
|
||||
前端轮询它同步「运行中」状态(换浏览器/他人启动的任务也能看到并停止)。
|
||||
前端刷新后据此:渲染历史轮次、running 时重新订阅事件流(服务端队列
|
||||
保留积压事件,重连后补发)、done 时展示最终答案。
|
||||
"""
|
||||
with _lock:
|
||||
hist = [{"role": h.get("role"), "content": (h.get("content") or "")[:4000]}
|
||||
for h in (_run.get("history") or [])]
|
||||
return jsonify({"ok": True,
|
||||
"state": _run.get("state", "idle"),
|
||||
"run_id": _run.get("id") or "",
|
||||
"prompt": _run.get("prompt", ""),
|
||||
"serial": _run.get("serial", ""),
|
||||
"started": _run.get("started", "")})
|
||||
"started": _run.get("started", ""),
|
||||
"answer": (_run.get("answer") or "")[:4000],
|
||||
"error": (_run.get("error") or "")[:400],
|
||||
"history": hist[-16:]})
|
||||
|
||||
|
||||
@bp.route("/api/agent/devices")
|
||||
|
||||
Reference in New Issue
Block a user