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

199 lines
6.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 问题分析 - 发车失败错误12000050 (v3.9.9测试)
## 📋 测试结果
### ✅ **v3.9.9修复生效**
1. **3秒等待日志正常显示**
```
🎁 [token_xxx] 收获完成成功0次跳过4次
⏳ [token_xxx] 等待服务器状态同步3秒... ← 新增的日志
🔍 [token_xxx] 重新查询车辆状态... ← 新增的日志
🚀 [token_xxx] 待发车: 4辆剩余额度: 4个将发送: 4辆
```
2. **发车流程顺利执行**
- ✅ 账号激活成功
- ✅ 查询车辆成功4辆
- ✅ 刷新车辆成功1辆成功3辆跳过
- ✅ 收获车辆跳过4辆都未到达
- ✅ 3秒等待完成
- ✅ 重新查询车辆状态成功
### ❌ **新问题:错误码变化**
**之前v3.9.8及之前)**
- 错误码:`200020`
- 错误信息:"出了点小问题,请尝试重启游戏解决~"
- 原因:服务器状态同步延迟
**现在v3.9.9**
- 错误码:`12000050`
- 错误信息:**"今日发车次数已达上限"**
- 原因:服务器端已有发车记录
## 🔍 **详细分析**
### 日志对比
```
📊 [token_xxx] 今日已发车次数: 0/4 ← 客户端认为今天没发过车
🚀 [token_xxx] 待发车: 4辆剩余额度: 4个将发送: 4辆
❌ [token_xxx] 发送车辆失败: PNSp-70822640 - 服务器错误: 12000050 - 今日发车次数已达上限
❌ [token_xxx] 发送车辆失败: edch-70822675 - 服务器错误: 12000050 - 今日发车次数已达上限
❌ [token_xxx] 发送车辆失败: f3Kc-70822621 - 服务器错误: 12000050 - 今日发车次数已达上限
❌ [token_xxx] 发送车辆失败: zo3e-70822655 - 服务器错误: 12000050 - 今日发车次数已达上限
🚀 [token_xxx] 发送完成成功0次跳过0次
```
### 矛盾点
| 位置 | 今日发车次数 | 是否达到上限 |
|------|-------------|-------------|
| **客户端localStorage** | 0/4 | 否 |
| **服务器端** | /4 | **是(已达上限)** |
### 可能的原因
1. **服务器端已有发车记录**(最可能):
- 之前的测试中(游戏功能页面或其他批量任务)已经发过车
- 服务器端的发车计数还没重置(通常在服务器日切时重置)
- 客户端 `localStorage` 中的记录可能不准确或已清除
2. **时区问题**
- 客户端使用的 `new Date().toLocaleDateString('zh-CN')` 获取日期
- 服务器端可能使用不同的时区或日期判断逻辑
- 导致客户端认为是"今天",但服务器认为还是"昨天"的发车次数
3. **localStorage 清除**
- 用户可能清除了浏览器缓存或 localStorage
- 导致客户端的发车记录丢失
- 但服务器端的记录依然存在
## 💡 **验证方法**
### 方法1检查服务器端发车记录
在"游戏功能" → "俱乐部赛车"页面:
1. 点击"查询车辆"
2. 观察每辆车的状态和 `sendCount`
3. 服务器返回的 `roleCar.sendCount` 字段会显示今日已发车次数
### 方法2等待服务器日切
等到服务器的"日切"时间通常是凌晨0点或5点服务器会重置每日发车次数然后再测试。
### 方法3使用新账号测试
使用一个今天完全没有发过车的账号来测试批量发车功能。
## 📝 **建议优化**
### 1. 增强错误处理
为错误码 `12000050` 添加特殊处理让用户知道这不是bug而是服务器端的限制
```javascript
catch (error) {
const errorMsg = error.message || String(error)
if (errorMsg.includes('12000050')) {
console.log(`⚠️ [${tokenId}] 车辆 ${carId} 今日发车次数已达上限(服务器端限制)`)
} else if (errorMsg.includes('200020')) {
console.log(`⚠️ [${tokenId}] 车辆 ${carId} 处于冷却期或状态未同步`)
} else {
console.log(`❌ [${tokenId}] 发送车辆失败: ${carId} - ${errorMsg}`)
}
// ...
}
```
### 2. 同步服务器端的发车次数
在查询车辆时,如果服务器返回了 `sendCount` 字段,应该更新到客户端的 localStorage
```javascript
// 查询车辆后
const serverSendCount = queryResponse.roleCar?.sendCount || 0
const localSendCount = parseInt(localStorage.getItem(dailySendKey) || '0')
// 以服务器端的值为准
if (serverSendCount > localSendCount) {
console.log(`🔄 [${tokenId}] 同步服务器发车次数: ${localSendCount} → ${serverSendCount}`)
localStorage.setItem(dailySendKey, serverSendCount.toString())
dailySendCount = serverSendCount
}
```
### 3. 提前检查发车次数
在尝试发车之前,先检查服务器端的 `sendCount`,避免不必要的发送请求:
```javascript
// 第3步检查每日发车次数限制使用服务器端的值
const serverSendCount = queryResponse.roleCar?.sendCount || 0
const dailySendKey = getTodayKey(tokenId)
let dailySendCount = parseInt(localStorage.getItem(dailySendKey) || '0')
// 同步服务器端的发车次数
if (serverSendCount > dailySendCount) {
console.log(`🔄 [${tokenId}] 同步服务器发车次数: ${dailySendCount} → ${serverSendCount}`)
localStorage.setItem(dailySendKey, serverSendCount.toString())
dailySendCount = serverSendCount
}
console.log(`📊 [${tokenId}] 今日已发车次数: ${dailySendCount}/4 (服务器: ${serverSendCount})`)
if (dailySendCount >= 4) {
console.warn(`⚠️ [${tokenId}] 今日发车次数已达上限: ${dailySendCount}/4`)
return {
task: '发车',
taskId: 'send_car',
success: true,
data: sendCarResults,
message: `今日发车次数已达上限(${dailySendCount}/4)`
}
}
```
## 🎯 **结论**
### v3.9.9 修复效果
✅ **3秒等待修复生效**
- 从 `200020`(状态未同步)变成 `12000050`(服务器限制)
- 说明状态同步问题已解决
❌ **新问题不是bug**
- 错误码 `12000050` 是服务器端的正常限制
- 说明服务器端确实已有发车记录
- 需要等待服务器日切或使用新账号测试
### 下一步行动
1. **立即可做**
- 实施"建议优化"中的错误处理增强
- 添加服务器端发车次数同步逻辑
2. **需要用户配合**
- 等待服务器日切后重新测试
- 或使用一个今天完全没有发过车的新账号测试
- 确认服务器端的 `sendCount` 字段是否正确返回
3. **长期优化**
- 考虑完全依赖服务器端的 `sendCount`,而不是客户端 localStorage
- 这样可以避免客户端和服务器端不一致的问题
## 📊 **测试记录**
| 版本 | 错误码 | 错误信息 | 原因 | 状态 |
|------|--------|---------|------|------|
| v3.9.8及之前 | 200020 | 出了点小问题 | 状态同步延迟 | 已修复 |
| v3.9.9 | 12000050 | 今日发车次数已达上限 | 服务器端限制 | 非bug需验证 |
**日期**: 2025-10-08
**测试账号**: 809服-0-705492847-悦809-one
**客户端发车次数**: 0/4
**服务器端发车次数**: 未知(需要查询)
**测试时间**: 02:50 (凌晨,可能接近或已过服务器日切时间)