Files
LabelChange-server/.trae/docs/BackgroundTasks/07-定时任务管理模块待办清单.md
2026-06-01 16:30:29 +08:00

12 KiB
Raw Blame History

定时任务管理模块 - 项目待办清单

📋 项目概述

项目名称: PDF标签缓存定时任务管理模块
优先级: 高
目标: 建立完整的定时任务管理系统,包括任务执行、监控、告警和控制面板
预期周期: 中期4-6周


🎯 核心目标

  • 完整的定时任务管理API
  • 后台任务执行监控
  • 定时任务配置管理
  • 任务执行日志和审计
  • 告警和异常处理
  • 管理后台Dashboard

📋 需求分析

当前系统现状

  • 已实现:

    • LabelPdfCacheBackgroundService - 后台服务主类
    • ProcessPendingTasksAsync() - 核心处理方法
    • 基本的5分钟定时执行
    • 三步处理流程(失效缓存、待处理任务、新订单)
    • 时间限制条件(>=2026-05-10
    • 基本的暂停/恢复功能BackgroundServiceManager
  • ⚠️ 部分实现:

    • 暂停/恢复API接口需要完整实现在LabelController
    • 基本的状态查询(需要增强)
  • 未实现:

    • 定时任务配置管理界面
    • 详细的执行日志记录
    • 任务执行历史查询
    • 告警和通知机制
    • 性能监控和分析
    • 错误重试策略可视化
    • 定时任务管理Dashboard
    • 任务调度的可视化配置

🔨 任务分解

阶段1: API层完善 (优先级: )

1.1 完整的控制接口

  • Task: 在LabelController中完整实现暂停/恢复API
    • POST /api/label/background-service/pause - 暂停定时任务
    • POST /api/label/background-service/resume - 恢复定时任务
    • GET /api/label/background-service/status - 获取定时任务状态
    • 返回详细的状态信息(运行状态、最后执行时间、下次执行时间等)
    • 预计工作量: 2小时
    • 相关文件: src/CONTROLLER/Controllers/LabelController.cs

1.2 配置管理接口

  • Task: 创建定时任务配置管理API
    • GET /api/label/background-service/config - 获取当前配置
    • POST /api/label/background-service/config - 更新配置
    • 支持配置项:
      • 执行间隔(分钟)
      • 批处理大小
      • 重试次数
      • 时间限制日期
      • 是否启用
    • 预计工作量: 4小时
    • 相关文件:
      • src/CONTROLLER/Controllers/LabelController.cs
      • src/BLL/Services/LabelPdfCacheService.cs

1.3 日志查询接口

  • Task: 实现执行日志查询API
    • GET /api/label/background-service/logs - 查询执行日志
    • 支持筛选条件:
      • 日期范围
      • 执行状态(成功/失败)
      • 关键词搜索
    • 分页支持
    • 预计工作量: 3小时
    • 相关文件:
      • src/CONTROLLER/Controllers/LabelController.cs
      • src/DAL/Repositories/LabelPdfCacheRepository.cs

阶段2: 数据存储层 (优先级: )

2.1 创建定时任务日志表

  • Task: 设计和创建 background_task_logs
    • 表结构:
      CREATE TABLE background_task_logs (
          id BIGINT PRIMARY KEY AUTO_INCREMENT,
          task_name VARCHAR(100),          -- 任务名称
          execution_time DATETIME,          -- 执行时间
          status TINYINT,                   -- 状态: 0=进行中, 1=成功, 2=失败
          processed_count INT,              -- 处理数量
          success_count INT,                -- 成功数
          error_count INT,                  -- 错误数
          duration_ms INT,                  -- 执行耗时(毫秒)
          error_message TEXT,               -- 错误信息
          created_at DATETIME,
          updated_at DATETIME,
          INDEX idx_execution_time (execution_time),
          INDEX idx_status (status)
      )
      
    • 预计工作量: 1小时
    • 相关文件: src/DB/Scripts/CreateBackgroundTaskLogsTable.sql

2.2 创建定时任务配置表

  • Task: 设计和创建 background_task_config
    • 表结构:
      CREATE TABLE background_task_config (
          id BIGINT PRIMARY KEY AUTO_INCREMENT,
          config_key VARCHAR(100) UNIQUE,   -- 配置键
          config_value VARCHAR(500),        -- 配置值
          description TEXT,                 -- 描述
          is_editable BOOLEAN,              -- 是否可编辑
          created_at DATETIME,
          updated_at DATETIME
      )
      
    • 预计工作量: 1小时
    • 相关文件: src/DB/Scripts/CreateBackgroundTaskConfigTable.sql

2.3 创建日志数据访问层

  • Task: 为日志表创建Repository
    • IBackgroundTaskLogRepository 接口
    • BackgroundTaskLogRepository 实现
    • 关键方法:
      • AddLogAsync() - 添加日志
      • GetLogsAsync() - 查询日志
      • GetLatestExecutionAsync() - 获取最后一次执行信息
    • 预计工作量: 3小时
    • 相关文件:
      • src/DAL/Interfaces/IBackgroundTaskLogRepository.cs
      • src/DAL/Repositories/BackgroundTaskLogRepository.cs

2.4 创建配置数据访问层

  • Task: 为配置表创建Repository
    • IBackgroundTaskConfigRepository 接口
    • BackgroundTaskConfigRepository 实现
    • 关键方法:
      • GetConfigAsync() - 获取配置
      • UpdateConfigAsync() - 更新配置
      • GetAllConfigsAsync() - 获取所有配置
    • 预计工作量: 2小时
    • 相关文件:
      • src/DAL/Interfaces/IBackgroundTaskConfigRepository.cs
      • src/DAL/Repositories/BackgroundTaskConfigRepository.cs

阶段3: 业务逻辑层 (优先级: )

3.1 任务执行日志记录

  • Task: 在LabelPdfCacheService中添加日志记录
    • ProcessPendingTasksAsync() 方法添加日志记录
      • 记录开始时间
      • 记录处理数量
      • 记录成功/失败数
      • 记录执行耗时
      • 记录错误信息
    • 创建 LogExecutionAsync() 辅助方法
    • 预计工作量: 2小时
    • 相关文件: src/BLL/Services/LabelPdfCacheService.cs

3.2 配置管理服务

  • Task: 创建配置管理服务
    • IBackgroundTaskConfigService 接口
    • BackgroundTaskConfigService 实现
    • 关键方法:
      • GetTaskIntervalAsync() - 获取执行间隔
      • GetBatchSizeAsync() - 获取批处理大小
      • GetRetryCountAsync() - 获取重试次数
      • GetCutoffDateAsync() - 获取时间截断日期
      • UpdateConfigAsync() - 更新配置
    • 配置缓存机制(内存缓存)
    • 预计工作量: 3小时
    • 相关文件:
      • src/BLL/Interfaces/IBackgroundTaskConfigService.cs
      • src/BLL/Services/BackgroundTaskConfigService.cs

3.3 任务执行统计服务

  • Task: 创建执行统计服务
    • 关键方法:
      • GetExecutionStatsAsync() - 获取执行统计
      • GetRecentExecutionsAsync() - 获取最近执行记录
      • GetFailureRateAsync() - 获取失败率
      • GetAverageDurationAsync() - 获取平均耗时
    • 预计工作量: 2小时
    • 相关文件: src/BLL/Services/LabelPdfCacheService.cs

3.4 动态配置加载

  • Task: 实现运行时动态配置
    • 定时刷新配置缓存(每分钟)
    • 配置变更事件通知
    • LabelPdfCacheBackgroundService 支持动态间隔
    • 预计工作量: 3小时
    • 相关文件:
      • src/CONTROLLER/BackgroundServices/LabelPdfCacheBackgroundService.cs
      • src/BLL/Services/BackgroundTaskConfigService.cs

阶段4: 控制器和API (优先级: )

4.1 扩展LabelController

  • Task: 添加定时任务管理相关API端点
    • 暂停/恢复/状态接口( 已规划)
    • 配置管理接口POST/GET
    • 日志查询接口
    • 执行统计接口
    • 手动触发接口
    • 预计工作量: 4小时
    • 相关文件: src/CONTROLLER/Controllers/LabelController.cs

4.2 API文档更新

  • Task: 更新API文档
    • 添加新接口文档
    • 请求/响应示例
    • 错误码说明
    • 使用场景说明
    • 预计工作量: 2小时
    • 相关文件: API_Documentation_zh.md

阶段5: 告警和监控 (优先级: )

5.1 告警机制

  • Task: 实现定时任务告警
    • 失败告警
    • 长时间未执行告警
    • 执行超时告警
    • 处理数量异常告警
    • 告警通知方式:
      • 邮件通知
      • 系统消息
      • Webhook回调
    • 预计工作量: 5小时
    • 相关文件:
      • src/BLL/Services/LabelPdfCacheService.cs
      • src/BLL/Services/AlertService.cs (新建)

5.2 性能监控

  • Task: 添加性能指标监控
    • 执行耗时分析
    • 处理速度分析
    • 失败率分析
    • 资源使用率监控
    • 预计工作量: 3小时
    • 相关文件: src/BLL/Services/PerformanceMetricsService.cs (新建)

阶段6: 管理后台 (优先级: )

6.1 Dashboard设计

  • Task: 创建定时任务管理Dashboard页面
    • 实时运行状态展示
    • 近期执行记录列表
    • 执行统计图表
    • 配置管理界面
    • 控制按钮(暂停/恢复/手动执行)
    • 预计工作量: 8小时前端
    • 相关文件: 前端项目

6.2 配置管理页面

  • Task: 创建配置管理界面
    • 执行间隔配置
    • 批处理大小配置
    • 重试策略配置
    • 告警规则配置
    • 配置历史记录
    • 预计工作量: 6小时前端

6.3 日志查询页面

  • Task: 创建日志查询界面
    • 日志列表
    • 高级筛选
    • 详情查看
    • 日志导出
    • 预计工作量: 4小时前端

阶段7: 测试和文档 (优先级: )

7.1 单元测试

  • Task: 编写定时任务相关单元测试
    • BackgroundTaskConfigService 测试
    • BackgroundTaskLogRepository 测试
    • LabelPdfCacheService 日志记录测试
    • 测试覆盖率 >= 80%
    • 预计工作量: 4小时
    • 相关文件: src/Tests/

7.2 集成测试

  • Task: 编写集成测试
    • API接口测试
    • 数据库操作测试
    • 定时任务执行测试
    • 预计工作量: 3小时
    • 相关文件: src/Tests/

7.3 文档完善

  • Task: 完善定时任务管理文档
    • 部署和配置文档
    • API使用指南
    • 故障排查指南
    • 性能优化指南
    • 预计工作量: 3小时
    • 相关文件: .trae/docs/BackgroundTasks/

7.4 用户手册

  • Task: 编写最终用户手册
    • 功能说明
    • 操作流程
    • 常见问题解答
    • 预计工作量: 2小时

📊 工作量统计

阶段 任务数 预计工作量 优先级
阶段1: API层完善 3 9小时
阶段2: 数据存储层 4 7小时
阶段3: 业务逻辑层 4 10小时
阶段4: 控制器和API 2 6小时
阶段5: 告警和监控 2 8小时
阶段6: 管理后台 3 18小时
阶段7: 测试和文档 4 12小时
总计 22 70小时 -

🔄 执行顺序

建议按以下顺序执行:

  1. 第1周: 阶段2 (数据存储层) + 阶段1 (API层)
  2. 第2周: 阶段3 (业务逻辑层)
  3. 第3周: 阶段4 (控制器) + 阶段7 (测试)
  4. 第4周: 阶段5 (告警监控)
  5. 第5-6周: 阶段6 (管理后台) + 文档完善

🎓 技术栈

  • 后端: ASP.NET Core, C#
  • 数据库: MySQL, SqlSugar ORM
  • 日志: Serilog, ILogger
  • 缓存: 内存缓存
  • 前端: Vue.js / React (待确定)
  • 图表: ECharts / Chart.js

验收标准

功能完整性

  • 所有API接口都已实现并测试通过
  • 定时任务配置可动态修改
  • 执行日志完整记录
  • 告警机制正常工作

性能要求

  • API响应时间 < 500ms
  • 日志查询 < 2s (1000条数据)
  • 内存占用 < 100MB

用户体验

  • Dashboard直观易用
  • 错误信息清晰易懂
  • 支持中文界面

文档完整性

  • API文档完整
  • 用户手册完整
  • 部署文档完整

🚀 后续计划

  • 考虑微服务化部署
  • 支持分布式定时任务
  • 任务执行链
  • 自适应调度算法
  • 支持Cron表达式配置

📞 联系方式

项目经理: TBD
技术主管: TBD
前端负责人: TBD


文档创建日期: 2026-05-14
最后更新: 2026-05-14
版本: 1.0
状态: 📋 待审批