08a0157c95
调度页执行周期可视化/单次执行/分类选机/推送源对齐;登录 IP 门控与无缝导航; 服务器批量后台任务、执行记录、凭据合并、各页激活刷新与错误提示修复。 Co-authored-by: Cursor <cursoragent@cursor.com>
2.6 KiB
2.6 KiB
2026-06-08 — 服务器批量任务后台执行(对齐脚本库)
摘要
服务器页的「修改分类、健康检查、检测目标路径、安装/升级/卸载 Agent」改为后台队列执行:点击后立即返回,顶栏显示进度条,完成后弹出结果摘要,与脚本库一致。
动机
批量 SSH 操作耗时长,原先前端阻塞等待 HTTP 响应,对话框一直 loading,无法继续操作其他功能。
涉及文件
后端
server/application/server_batch_common.py— 批量 SSH 共用 helperserver/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 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→okGET /app/index.html→ 新 bundle 哈希GET /api/servers/batch/jobs/{id}→ 401(端点存在,需登录)
请强刷浏览器缓存(Ctrl+Shift+R)后再试批量升级/卸载 Agent。