200 lines
4.2 KiB
Markdown
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 分钟
|