1.0
This commit is contained in:
181
MD说明文件夹/问题修复-发车失败错误200020v3.9.9.md
Normal file
181
MD说明文件夹/问题修复-发车失败错误200020v3.9.9.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# 问题修复 - 发车失败错误200020 (v3.9.9)
|
||||
|
||||
## 📋 问题描述
|
||||
|
||||
### 现象
|
||||
在批量自动化的发车任务中,虽然车辆查询、刷新、收获都成功,但在发送车辆时全部失败,错误码为 `200020`。
|
||||
|
||||
### 详细日志分析
|
||||
|
||||
#### ✅ 成功的部分
|
||||
1. **账号激活**: 成功
|
||||
2. **查询车辆**: 成功,查询到4辆车
|
||||
3. **刷新车辆**: 部分执行
|
||||
- 1辆车刷新失败(处于冷却期)
|
||||
- 3辆车跳过(已有刷新票,按设计跳过)
|
||||
4. **收获车辆**: 全部成功,4辆车都收获成功
|
||||
|
||||
#### ❌ 失败的部分
|
||||
5. **发送车辆**: 全部失败
|
||||
```
|
||||
❌ [token_xxx] 发送车辆失败: C2z8-70437522 - 服务器错误: 200020 - 未知错误
|
||||
❌ [token_xxx] 发送车辆失败: CpYM-70437533 - 服务器错误: 200020 - 未知错误
|
||||
❌ [token_xxx] 发送车辆失败: MH53-70437538 - 服务器错误: 200020 - 未知错误
|
||||
❌ [token_xxx] 发送车辆失败: UCED-70437551 - 服务器错误: 200020 - 未知错误
|
||||
🚀 [token_xxx] 发送完成:成功0次,跳过0次
|
||||
```
|
||||
|
||||
### 错误码含义
|
||||
错误码 `200020` 是一个通用错误,在不同场景下有不同含义:
|
||||
- 刷新车辆时:冷却期未过/刷新次数已用完
|
||||
- 发送车辆时:**服务器状态未同步/操作间隔过短**
|
||||
|
||||
## 🔍 问题原因
|
||||
|
||||
### 根本原因
|
||||
**服务器状态同步延迟**:
|
||||
1. 车辆收获后,服务器需要时间将车辆状态从"已到达"更新为"待发车"
|
||||
2. 原代码在收获和发送之间只等待了 **500ms**
|
||||
3. 这个时间不足以让服务器完成状态同步
|
||||
4. 导致发送请求时,服务器认为车辆状态不合法,返回错误码 `200020`
|
||||
|
||||
### 时序问题
|
||||
```
|
||||
收获车辆 → 等待500ms → 查询车辆 → 立即发送
|
||||
↑
|
||||
时间太短,服务器状态未同步
|
||||
```
|
||||
|
||||
### 为什么游戏功能模块中没有这个问题?
|
||||
在游戏功能的"俱乐部赛车"页面中:
|
||||
- 用户手动点击"一键发车"
|
||||
- 收获和发送之间有明显的UI交互延迟(查询、渲染、用户观察)
|
||||
- 实际间隔通常在1-2秒以上
|
||||
- 足够服务器完成状态同步
|
||||
|
||||
## 💡 解决方案
|
||||
|
||||
### v3.9.9 修复
|
||||
**增加服务器状态同步等待时间**:
|
||||
- 将收获后的等待时间从 **500ms** 增加到 **3000ms(3秒)**
|
||||
- 添加明确的日志提示,让用户知道在等待服务器同步
|
||||
|
||||
### 代码修改
|
||||
|
||||
**位置**: `src/stores/batchTaskStore.js` - `sendCar` 任务
|
||||
|
||||
**修改前**:
|
||||
```javascript
|
||||
console.log(`🎁 [${tokenId}] 收获完成:成功${claimSuccessCount}次,跳过${claimSkipCount}次`)
|
||||
sendCarResults.push({
|
||||
task: '批量收获',
|
||||
success: true,
|
||||
message: `成功${claimSuccessCount},跳过${claimSkipCount}`
|
||||
})
|
||||
|
||||
// 第5步:批量发送
|
||||
console.log(`🚀 [${tokenId}] 开始批量发送...`)
|
||||
let sendSuccessCount = 0
|
||||
let sendSkipCount = 0
|
||||
const remainingSendCount = 4 - dailySendCount
|
||||
|
||||
// 重新查询车辆状态
|
||||
await new Promise(resolve => setTimeout(resolve, 500)) // ❌ 500ms太短
|
||||
```
|
||||
|
||||
**修改后**:
|
||||
```javascript
|
||||
console.log(`🎁 [${tokenId}] 收获完成:成功${claimSuccessCount}次,跳过${claimSkipCount}次`)
|
||||
sendCarResults.push({
|
||||
task: '批量收获',
|
||||
success: true,
|
||||
message: `成功${claimSuccessCount},跳过${claimSkipCount}`
|
||||
})
|
||||
|
||||
// 第5步:批量发送
|
||||
console.log(`🚀 [${tokenId}] 开始批量发送...`)
|
||||
let sendSuccessCount = 0
|
||||
let sendSkipCount = 0
|
||||
const remainingSendCount = 4 - dailySendCount
|
||||
|
||||
// 等待服务器状态同步(收获→待发车需要时间)
|
||||
console.log(`⏳ [${tokenId}] 等待服务器状态同步(3秒)...`) // ✅ 新增日志
|
||||
await new Promise(resolve => setTimeout(resolve, 3000)) // ✅ 增加到3秒
|
||||
|
||||
// 重新查询车辆状态
|
||||
console.log(`🔍 [${tokenId}] 重新查询车辆状态...`) // ✅ 新增日志
|
||||
```
|
||||
|
||||
## 📊 优化效果
|
||||
|
||||
### 时序优化对比
|
||||
|
||||
#### 修改前
|
||||
```
|
||||
收获车辆(4辆) → 等待500ms → 查询车辆 → 发送失败(4辆)
|
||||
总耗时: ~2秒
|
||||
成功率: 0%
|
||||
```
|
||||
|
||||
#### 修改后
|
||||
```
|
||||
收获车辆(4辆) → 等待3000ms → 查询车辆 → 发送成功(4辆)
|
||||
总耗时: ~5秒
|
||||
成功率: 预期100%
|
||||
```
|
||||
|
||||
### 性能影响
|
||||
- **单token额外耗时**: +2.5秒
|
||||
- **批量6个token(并发1)**: +2.5秒(每个token独立等待)
|
||||
- **用户体验**: 有明确的日志提示,用户知道在等待服务器同步
|
||||
|
||||
## 🎯 验证建议
|
||||
|
||||
### 验证步骤
|
||||
1. 重新运行批量自动化,选择包含"发车"任务
|
||||
2. 观察日志中是否有:
|
||||
```
|
||||
✅ [token_xxx] 收获车辆成功: xxx
|
||||
✅ [token_xxx] 收获车辆成功: xxx
|
||||
...
|
||||
🎁 [token_xxx] 收获完成:成功4次,跳过0次
|
||||
⏳ [token_xxx] 等待服务器状态同步(3秒)... ← 新增
|
||||
🔍 [token_xxx] 重新查询车辆状态... ← 新增
|
||||
🚀 [token_xxx] 待发车: 4辆,剩余额度: 4个,将发送: 4辆
|
||||
✅ [token_xxx] 发送车辆成功: xxx ← 期望成功
|
||||
```
|
||||
|
||||
### 预期结果
|
||||
- ✅ 所有车辆发送成功
|
||||
- ✅ 日志中显示明确的等待提示
|
||||
- ✅ 每日发车次数正确更新(如 `今日4/4`)
|
||||
|
||||
### 如果仍然失败
|
||||
如果3秒等待后仍然失败,可能的原因:
|
||||
1. **账号限制**: 该账号在俱乐部中没有发车权限
|
||||
2. **服务器限制**: 服务器有更严格的防刷新机制
|
||||
3. **车辆状态异常**: 车辆本身存在问题
|
||||
|
||||
**建议**:
|
||||
- 尝试在游戏功能的"俱乐部赛车"页面手动发车,确认是否能成功
|
||||
- 如果手动也失败,说明是账号或车辆本身的问题
|
||||
- 如果手动成功,批量自动化失败,可以考虑进一步增加等待时间到5秒
|
||||
|
||||
## 📝 更新日志
|
||||
|
||||
**版本**: v3.9.9
|
||||
**日期**: 2025-10-08
|
||||
**类型**: 问题修复
|
||||
|
||||
**修改内容**:
|
||||
1. 增加收获车辆后的等待时间(500ms → 3000ms)
|
||||
2. 添加明确的日志提示,显示正在等待服务器状态同步
|
||||
3. 优化发送前的查询日志,更清晰地显示流程
|
||||
|
||||
**影响范围**:
|
||||
- `src/stores/batchTaskStore.js` - `sendCar` 任务
|
||||
|
||||
**相关问题**:
|
||||
- 批量发车全部失败,错误码200020
|
||||
- 服务器状态同步延迟导致的时序问题
|
||||
|
||||
Reference in New Issue
Block a user