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

104 lines
3.1 KiB
Markdown

# 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. ✅ 编译通过,无语法错误
## 风险评估
- **低风险**: 定时任务频率调整
- **低风险**: 移除冗余逻辑
- **中风险**: 新增管理接口 (需要权限控制)
## 疑问澄清
无疑问,需求明确。