08a0157c95
调度页执行周期可视化/单次执行/分类选机/推送源对齐;登录 IP 门控与无缝导航; 服务器批量后台任务、执行记录、凭据合并、各页激活刷新与错误提示修复。 Co-authored-by: Cursor <cursoragent@cursor.com>
1.4 KiB
1.4 KiB
2026-06-08 — 服务器批量任务结果持久化
摘要
批量任务(安装/升级/卸载 Agent、健康检查等)完成后写入 MySQL server_batch_jobs,审计日志带 job_id 与失败摘要;GET /batch/jobs/{id} Redis 过期后仍可从库读取。
动机
原先结果仅存 Redis(2h TTL),关闭通知后无法回看;审计只有「0/1 成功」摘要,无逐台失败原因,与脚本库 script_executions 不对齐。
涉及文件
server/domain/models/__init__.py—ServerBatchJob表server/infrastructure/database/server_batch_job_repo.pyserver/application/services/server_batch_service.py— 创建/落库/审计 JSONserver/api/servers.py—GET /batch/jobs列表frontend/src/pages/AuditPage.vue— 「查看结果」按钮frontend/src/utils/auditBatchDetail.ts
迁移 / 重启
- 新表由
create_all自动创建(重启 API 后首次访问) - 历史 Redis-only 任务无法补录
验证
pytest tests/test_server_batch_job_persist.py -q
# 批量安装 Agent → 审计日志 → 查看结果 → 逐台 stdout/error
# GET /api/servers/batch/jobs?limit=10
查看入口
| 时机 | 入口 |
|---|---|
| 任务刚完成 | 顶栏通知 → 查看详情 |
| 进行中 | 顶栏进度条(可点击) |
| 事后 | 审计日志 → 批量操作行 → 查看结果 |
| API | GET /api/servers/batch/jobs/{job_id} |