Files
Nexus/docs/changelog/2026-06-08-server-batch-job-persist.md
T
Nexus Agent 08a0157c95 feat: 调度表单重构、登录门控、批量任务与页面缓存对齐
调度页执行周期可视化/单次执行/分类选机/推送源对齐;登录 IP 门控与无缝导航;
服务器批量后台任务、执行记录、凭据合并、各页激活刷新与错误提示修复。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 11:17:21 +08:00

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__.pyServerBatchJob
  • server/infrastructure/database/server_batch_job_repo.py
  • server/application/services/server_batch_service.py — 创建/落库/审计 JSON
  • server/api/servers.pyGET /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}