上传源代码版本

This commit is contained in:
Im-Jenisson
2026-06-01 16:30:29 +08:00
commit b2a9b7d3c2
462 changed files with 104365 additions and 0 deletions

View 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
**状态**: 📋 待审批