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