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

3.1 KiB

ALIGNMENT - 优化抖音定时任务

原始需求

由于抖音 API 被风控,系统使用代理 IP 导致请求速度很慢。需要优化定时任务,在保证功能不丢失的前提下降低 API 调用频率和成本。

项目上下文分析

现有技术栈

  • 语言: Go 1.24
  • 框架: Gin
  • 数据库: MySQL (GORM)
  • 定时任务: 原生 goroutine + time.Sleep
  • 外部 API: 抖音开放平台订单接口

现有架构

internal/service/douyin/
├── scheduler.go        # 定时任务调度器
├── order_sync.go       # 订单同步逻辑
└── reward_dispatcher.go # 奖励发放逻辑

现有定时任务

  1. FetchAndSyncOrders: 按用户同步订单 (每 5 分钟)
  2. SyncAllOrders: 全量订单同步 (每 5 分钟)
  3. GrantLivestreamPrizes: 直播奖品发放 (每 5 分钟)
  4. SyncRefundStatus: 退款状态同步 (每 5 分钟)
  5. GrantMinesweeperQualifications: 扫雷资格补发 (已禁用)

核心业务目标

  1. 同步最新订单: 及时获取抖店订单状态变更
  2. 按用户同步: 关联订单到已绑定用户
  3. 下发奖励: 自动发放游戏券、积分、直播奖品

需求理解

核心问题

  • 代理 IP 请求慢 (每次 API 调用可能需要 10-60 秒)
  • 每 5 分钟执行 4 个任务,频繁调用抖音 API
  • 存在功能重复 (FetchAndSyncOrders 和 SyncAllOrders)

优化目标

  • 降低 API 调用频率 80%+
  • 保持核心功能完整性
  • 支持手动触发同步
  • 用户体验不受影响

边界确认

包含范围:

  • 调整定时任务执行频率
  • 移除冗余的同步逻辑
  • 新增管理后台手动同步接口
  • 保留前端按需同步 (已有 5 秒限流)

不包含范围:

  • 不修改抖音 API 调用逻辑
  • 不修改奖励发放逻辑
  • 不修改数据库结构

技术方案 (方案 3: 混合模式)

定时任务调整

原频率 (每 5 分钟):
- FetchAndSyncOrders (按用户)
- SyncAllOrders (全量)
- GrantLivestreamPrizes (直播)
- SyncRefundStatus (退款)

新频率:
- SyncAllOrders: 每 1 小时 (降低 92%)
- GrantLivestreamPrizes: 每 5 分钟 (保持)
- SyncRefundStatus: 每 2 小时 (降低 96%)
- 移除 FetchAndSyncOrders (冗余)

前端按需同步 (已有)

  • GET /api/public/livestream/{access_code}/pending-orders
  • 内部调用 SyncAllOrders (5 秒限流)
  • 用户主动刷新时触发

管理后台手动触发 (新增)

  • POST /api/admin/douyin/sync-all - 全量同步
  • POST /api/admin/douyin/sync-refund - 退款同步
  • POST /api/admin/douyin/grant-prizes - 发放奖品
  • 仅管理员可访问

验收标准

  1. 定时任务频率调整完成
  2. 移除 FetchAndSyncOrders 调用
  3. 管理后台接口实现并测试通过
  4. API 调用频率降低 80% 以上
  5. 直播奖品发放延迟 ≤ 5 分钟
  6. 用户前端体验无影响
  7. 编译通过,无语法错误

风险评估

  • 低风险: 定时任务频率调整
  • 低风险: 移除冗余逻辑
  • 中风险: 新增管理接口 (需要权限控制)

疑问澄清

无疑问,需求明确。