上传源代码版本
This commit is contained in:
406
.trae/docs/BackgroundTasks/07-定时任务管理模块待办清单.md
Normal file
406
.trae/docs/BackgroundTasks/07-定时任务管理模块待办清单.md
Normal file
@@ -0,0 +1,406 @@
|
||||
# 定时任务管理模块 - 项目待办清单
|
||||
|
||||
## 📋 项目概述
|
||||
|
||||
**项目名称**: 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
|
||||
**状态**: 📋 待审批
|
||||
Reference in New Issue
Block a user