定时任务运维日志监控
status: complete
created: 2026-07-19
completed: 2026-07-20
complexity: 🟡中等
parent: code-copilot/changes/定时任务优化/spec.md
version: V5
revision: V5.1 complete
dependency: 定时任务可靠性加固、定时任务并发重试治理
ui-baseline: code-copilot/changes/定时任务优化/ui-reference.md
1. 目标
在执行生命周期稳定后补齐日志查询、详情、导出、留存和轻量运维摘要。本版本不发送告警,也不改造权限模型。
2. 功能范围
3. 明确不做
- 不发送站内信、邮件或 Webhook。
- 不移除当前超级管理员控制边界。
- 不增加资源权限、角色模板或操作审计。
- 不建设复杂 BI 大盘或实时流式监控。
4. 数据变更
- sys_job_config 增加 consecutive_failures。
- 为 sys_job_log 增加状态/来源/时间组合索引。
- 创建 sys_job_log_export 导出配置,显式排除敏感字段。
- 不增加告警渠道、收件人或 Webhook 字段。
5. 接口
| 接口 |
说明 |
| GET /job/log/page |
组合筛选 |
| GET /job/log/:id |
安全详情 |
| POST /job/log/export |
按系统导出配置导出 |
| GET /job/config/:id/overview |
任务执行摘要 |
| GET /job/monitor/summary |
近 24 小时轻量监控 |
6. 验收标准
- 前端时间范围与 Mapper XML SQL 条件一致。
- 导出文件不包含 jobParam、完整 result 或 exceptionMsg。
- 任务概览和 24 小时摘要与日志聚合结果一致。
- 留存清理只物理删除超期日志,不影响任务配置。
7. 确认门禁
8. 实施结果
- 迁移
V1.0.44__add_job_log_observability.sql 增加连续失败计数、日志组合索引、触发来源字典和安全导出配置,并完成存量计数回填。
- 日志列表、详情和导出分别使用
JobLogVO、JobLogDetailVO 和 JobLogExportVO,不向前端或导出文件暴露 jobParam、完整 result 或 exceptionMsg。
- 连续失败计数遵循
FAILED 递增、SUCCESS 清零、SKIPPED 不变,且只在日志终态更新成功后变更。
- 增加任务概览和近 24 小时监控接口;前端完成组合筛选、详情弹窗、安全导出、最近执行记录和监控摘要。
- 日志留存仍使用专用物理清理 SQL,并明确排除运行中日志;未增加告警、权限、Webhook 或数据库分区能力。
9. 验收结论
- V5 定向后端测试 15/15、Job 模块 94/94、前端定向测试 16/16、Admin Reactor 42/42 均通过。
- Mapper XML、Flyway placeholder、冲突标记、定向 ESLint、前端生产构建和
git diff --check 通过。
- 生产预览入口在桌面和窄屏均返回 200,未发现脚本异常或静态资源失败;因本轮按边界未启动 MySQL、Redis 和 Admin,应用停在初始化加载态,未执行已登录任务页和真实接口联调。
- 开发环境仍需验收 Flyway 实跑、鉴权接口数据、导出文件内容和真实聚合结果;这些环境项不扩展 V5 的实现范围。
10. V5.1 运行日志界面优化
- 保持现有日志查询、详情、导出、权限和后端协议不变,只调整前端信息架构与样式。
- 单任务概览收敛为任务身份、最近状态、下次执行、连续失败和最近执行序列,不重复堆叠标题卡片。
- 筛选与执行记录合并为一个稳定工作区;主列表移除执行器、结束时间等技术字段,默认聚焦任务、状态与来源、开始时间、耗时和重试。
- 支持点击有权限的日志行查看详情;详情从居中大弹窗改为右侧抽屉,按执行概览、时间线、结果/异常摘要和技术信息分层。
- 技术字段默认折叠;桌面与窄屏均不得出现操作遮挡、关键状态截断或不必要的横向滚动。
实施结论
- 日志筛选和数据表已合并为单一记录工作区;单任务上下文隐藏重复任务列,主列表只保留状态/来源、开始时间、耗时、重试和详情入口。
- 日志行在具备详情权限时支持鼠标和键盘进入详情;开始时间按开始、触发、计划时间顺序回退。
- 详情已改为右侧抽屉,结果/异常保持安全摘要,执行器、执行实例和流程实例移入默认折叠的技术信息。
- 目标 Vitest
5/5、目标 ESLint、前端生产构建和静态空白检查通过;浏览器自动化因当前沙箱禁止 Chromium MachPort 注册而未执行真实截图验收。