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

4.2 KiB

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 分钟