spec.md 2.5 KB

定时任务告警权限审计

status: complete created: 2026-07-19 complexity: 🟡中等 parent: code-copilot/changes/定时任务优化/spec.md version: V6 dependency: 定时任务可靠性加固、定时任务运维日志监控 ui-baseline: code-copilot/changes/定时任务优化/ui-reference.md

1. 目标

在日志和执行摘要稳定后增加最终失败通知、细粒度资源权限和管理写操作审计。本版本不包含 Webhook、任务模板或开放 API。

2. 功能范围

  • 最终失败后通过消息中心发送站内信或邮件,重试过程中不重复告警。
  • 告警对象支持指定平台用户和邮件地址,配置由管理端维护。
  • 新增、编辑、删除、启停、立即执行、同步重试和日志清理写操作审计。
  • 管理接口从统一 ApiPermissionIgnore + assertAdmin 迁移到基础资源权限。
  • Service 对受保护任务、危险执行目标和日志敏感字段继续二次校验。
  • 权限区分配置查询、配置修改、启停、立即执行、同步、日志查询、导出、清理和敏感详情。

3. 明确不做

  • 不开放任意 Webhook;Webhook 必须等待定时任务出站安全。
  • 不创建 MES 角色模板、任务模板或普通租户自助任务。
  • 不开放外部 Token 或开放 API。
  • 不发送任务参数、Token、完整响应或堆栈。

4. 数据和资源

  • sys_job_config 增加 alarm_enabled、alarm_channels、alarm_recipient_user_ids。
  • 创建 system:jobConfig:* 和 system:jobLog:* 基础权限及对应 API 资源。
  • 所有新增资源和字典 tenant_id=1,并使用 NOT EXISTS。
  • 不创建固定业务角色,只提供可分配权限资源。

5. 告警与审计规则

  • 只有最终 FAILED 执行触发一次告警。
  • 告警包含任务名、任务组、执行 ID、失败时间、安全摘要和详情入口。
  • 消息中心不可用不得改变任务执行结果,但必须记录结构化 ERROR 和告警失败指标。
  • 操作审计记录安全裁剪后的关键前后值,不记录任务参数和敏感执行结果。

6. 验收标准

  • 不同资源权限可以区分配置、执行、日志查看和敏感详情。
  • 重试后最终成功不告警,最终失败只告警一次。
  • 消息发送失败不覆盖任务执行状态。
  • 所有管理写操作均能查询到操作审计。

7. 确认门禁

  • 确认首期告警只支持站内信和邮件。
  • 确认只创建权限资源,不创建 MES 角色模板。
  • 确认本版本不开放 Webhook。