4.2 KiB
Executable File
4.2 KiB
Executable File
TASK - 优化抖音定时任务
任务依赖图
graph TD
T1[Task 1: 修改定时任务调度器] --> T3[Task 3: 测试定时任务]
T2[Task 2: 新增管理后台接口] --> T4[Task 4: 测试管理接口]
T3 --> T5[Task 5: 集成测试]
T4 --> T5
T5 --> T6[Task 6: 文档更新]
原子任务列表
Task 1: 修改定时任务调度器
文件: internal/service/douyin/scheduler.go
输入契约:
- 前置依赖: 无
- 输入数据: 现有 scheduler.go 代码
- 环境依赖: Go 1.24 编译环境
输出契约:
- 输出数据: 修改后的 scheduler.go
- 交付物:
- 移除
FetchAndSyncOrders调用 - 改为多定时器模式 (5分钟/1小时/2小时)
- 移除
- 验收标准:
- 编译通过
- 定时器逻辑正确
- 日志输出清晰
实现约束:
- 使用
time.NewTicker - 使用
select多路复用 - 保持现有日志格式
依赖关系:
- 后置任务: Task 3
- 并行任务: Task 2
Task 2: 新增管理后台接口
文件: internal/api/admin/douyin_admin.go (新建)
输入契约:
- 前置依赖: 无
- 输入数据:
douyin.Service接口定义 - 环境依赖: 现有 admin 中间件
输出契约:
- 输出数据: 新文件 douyin_admin.go
- 交付物:
ManualSyncAll接口ManualSyncRefund接口ManualGrantPrizes接口
- 验收标准:
- 编译通过
- 接口返回正确的 JSON
- 权限控制生效
实现约束:
- 复用现有
core.HandlerFunc模式 - 使用现有 admin 权限中间件
- 返回统一的响应格式
依赖关系:
- 后置任务: Task 4
- 并行任务: Task 1
Task 3: 测试定时任务
文件: 手动测试
输入契约:
- 前置依赖: Task 1 完成
- 输入数据: 修改后的 scheduler.go
- 环境依赖: 运行中的服务
输出契约:
- 输出数据: 测试报告
- 交付物:
- 验证 5 分钟定时器触发
- 验证 1 小时定时器触发
- 验证 2 小时定时器触发
- 验收标准:
- 日志显示正确的触发时间
- 各任务独立执行
- 无 panic 或错误
实现约束:
- 观察日志输出
- 可缩短定时器间隔加速测试
依赖关系:
- 前置任务: Task 1
- 后置任务: Task 5
Task 4: 测试管理接口
文件: 使用 curl 或 Postman
输入契约:
- 前置依赖: Task 2 完成
- 输入数据: 管理员 token
- 环境依赖: 运行中的服务
输出契约:
- 输出数据: 测试报告
- 交付物:
- 验证
/sync-all接口 - 验证
/sync-refund接口 - 验证
/grant-prizes接口
- 验证
- 验收标准:
- 返回正确的 JSON 响应
- 无权限时返回 401/403
- 数据库数据正确更新
实现约束:
- 使用真实的管理员 token
- 检查数据库变更
依赖关系:
- 前置任务: Task 2
- 后置任务: Task 5
Task 5: 集成测试
文件: 整体功能验证
输入契约:
- 前置依赖: Task 3, Task 4 完成
- 输入数据: 完整系统
- 环境依赖: 运行中的服务 + 数据库
输出契约:
- 输出数据: 集成测试报告
- 交付物:
- 验证定时任务与手动触发不冲突
- 验证前端按需同步仍正常
- 验证 API 调用频率降低
- 验收标准:
- 所有功能正常
- 无数据丢失
- 性能符合预期
实现约束:
- 运行至少 2 小时观察
- 监控日志和数据库
依赖关系:
- 前置任务: Task 3, Task 4
- 后置任务: Task 6
Task 6: 文档更新
文件: README 或运维文档
输入契约:
- 前置依赖: Task 5 完成
- 输入数据: 测试结果
- 环境依赖: 无
输出契约:
- 输出数据: 更新后的文档
- 交付物:
- 定时任务说明
- 管理接口使用指南
- 性能优化效果
- 验收标准:
- 文档清晰易懂
- 包含示例代码
实现约束:
- Markdown 格式
- 包含 API 示例
依赖关系:
- 前置任务: Task 5
- 后置任务: 无
复杂度评估
| 任务 | 复杂度 | 预计时间 | 风险等级 |
|---|---|---|---|
| Task 1 | 中 | 15 分钟 | 低 |
| Task 2 | 中 | 20 分钟 | 中 |
| Task 3 | 低 | 10 分钟 | 低 |
| Task 4 | 低 | 10 分钟 | 低 |
| Task 5 | 中 | 30 分钟 | 中 |
| Task 6 | 低 | 10 分钟 | 低 |
总计: 约 95 分钟