Files
xyzw_web_helper/MD说明文件夹/问题修复-发车失败错误200020v3.9.9.md
2025-10-17 20:56:50 +08:00

5.9 KiB
Raw Permalink Blame History

问题修复 - 发车失败错误200020 (v3.9.9)

📋 问题描述

现象

在批量自动化的发车任务中,虽然车辆查询、刷新、收获都成功,但在发送车辆时全部失败,错误码为 200020

详细日志分析

成功的部分

  1. 账号激活: 成功
  2. 查询车辆: 成功查询到4辆车
  3. 刷新车辆: 部分执行
    • 1辆车刷新失败处于冷却期
    • 3辆车跳过已有刷新票按设计跳过
  4. 收获车辆: 全部成功4辆车都收获成功

失败的部分

  1. 发送车辆: 全部失败
    ❌ [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 增加到 3000ms3秒
  • 添加明确的日志提示,让用户知道在等待服务器同步

代码修改

位置: src/stores/batchTaskStore.js - sendCar 任务

修改前:

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太短

修改后:

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
  • 服务器状态同步延迟导致的时序问题