3.1 KiB
Executable File
3.1 KiB
Executable File
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 # 奖励发放逻辑
现有定时任务
- FetchAndSyncOrders: 按用户同步订单 (每 5 分钟)
- SyncAllOrders: 全量订单同步 (每 5 分钟)
- GrantLivestreamPrizes: 直播奖品发放 (每 5 分钟)
- SyncRefundStatus: 退款状态同步 (每 5 分钟)
- GrantMinesweeperQualifications: 扫雷资格补发 (已禁用)
核心业务目标
- 同步最新订单: 及时获取抖店订单状态变更
- 按用户同步: 关联订单到已绑定用户
- 下发奖励: 自动发放游戏券、积分、直播奖品
需求理解
核心问题
- 代理 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- 发放奖品- 仅管理员可访问
验收标准
- ✅ 定时任务频率调整完成
- ✅ 移除 FetchAndSyncOrders 调用
- ✅ 管理后台接口实现并测试通过
- ✅ API 调用频率降低 80% 以上
- ✅ 直播奖品发放延迟 ≤ 5 分钟
- ✅ 用户前端体验无影响
- ✅ 编译通过,无语法错误
风险评估
- 低风险: 定时任务频率调整
- 低风险: 移除冗余逻辑
- 中风险: 新增管理接口 (需要权限控制)
疑问澄清
无疑问,需求明确。