bindbox-game/docs/优化抖音定时任务/TASK_优化抖音定时任务.md
2026-02-18 23:23:34 +08:00

200 lines
4.2 KiB
Markdown

# TASK - 优化抖音定时任务
## 任务依赖图
```mermaid
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 分钟