# 2026-06-08 — 服务器批量任务后台执行(对齐脚本库) ## 摘要 服务器页的「修改分类、健康检查、检测目标路径、安装/升级/卸载 Agent」改为后台队列执行:点击后立即返回,顶栏显示进度条,完成后弹出结果摘要,与脚本库一致。 ## 动机 批量 SSH 操作耗时长,原先前端阻塞等待 HTTP 响应,对话框一直 loading,无法继续操作其他功能。 ## 涉及文件 ### 后端 - `server/application/server_batch_common.py` — 批量 SSH 共用 helper - `server/infrastructure/redis/server_batch_store.py` — Redis 任务状态(2h TTL) - `server/application/services/server_batch_service.py` — 后台 runner + WebSocket 进度 - `server/api/servers.py` — 批量端点返回 `BatchJobStarted`;新增 `GET /batch/jobs/{id}` - `server/api/schemas.py` — `BatchJobStarted` / `BatchJobStatus` ### 前端(本次补充) - `BatchAgentResultDialog` 不再 `persistent`;loading 文案改为「正在加载结果…」(仅查看详情时拉取结果,不再表示阻塞执行) - 顶栏进度条:服务器批量任务可点击查看进行中/已完成结果 - `submitServerBatchJob` 若 API 未返回 `job_id`(旧版同步接口)则明确报错 ## 与脚本库对齐的行为 | 操作 | 点击后 | |------|--------| | 修改分类 / 健康检查 / 检测路径 / 安装·升级·卸载 Agent | 立即 toast「已提交」+ 顶栏进度条,**不弹等待框** | | 执行结束 | 顶栏通知 +「查看详情」打开结果列表 | | 脚本库执行 | 同上(已有) | **未发现其他页面**仍使用 `BatchAgentResultDialog` 阻塞等待;仅 `App.vue` 在「查看详情」时打开该对话框。 ## 迁移 / 重启 - 无需 DB 迁移 - 需重启 API 并部署前端 ## 验证 ```bash bash scripts/local_verify.sh cd frontend && npm run build # 服务器页勾选子机 → 安装/升级/卸载 Agent → 应立即 toast + 顶栏进度 → 完成后可查看详情 ``` ## 生产部署(2026-06-08) 热更新至 `nexus-prod-nexus-1`(`docker cp` + `docker restart`): - 前端:`index-D4DsercP.js` / `ServersPage-Cj6_30Tm.js`(含 `upgrade-agent` / `uninstall-agent` 后台提交,无 `runBatchAgentOp`) - 后端:`server_batch_service.py` 等批量任务模块 - `web/agent/install.sh`(宝塔 Python / 并行安装 3.12) 验证: - `GET https://api.synaglobal.vip/health` → `ok` - `GET /app/index.html` → 新 bundle 哈希 - `GET /api/servers/batch/jobs/{id}` → 401(端点存在,需登录) **请强刷浏览器缓存(Ctrl+Shift+R)后再试批量升级/卸载 Agent。**