# 定时任务管理模块 - 项目待办清单 ## 📋 项目概述 **项目名称**: 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` 表 - 表结构: ```sql 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` 表 - 表结构: ```sql 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 **状态**: 📋 待审批