# 问题修复 - 错误码200350补充说明 v3.12.3

**版本**: v3.12.3  
**日期**: 2025-10-08  
**类型**: 问题修复 / 文档更新

## 问题描述

用户反馈发车失败时显示：

```
发车失败
服务器错误: 200350 - 未知错误
```

**实际情况**：该账号未加入俱乐部

**原有提示**：非发车时间（6:00-20:00）或已发车后收车

**问题分析**：错误码 `200350` 的含义比之前理解的更广泛，不仅包括时间限制和收车状态，还包括未加入俱乐部的情况。

## 错误码200350的多种含义

经过用户反馈和分析，错误码 `200350` 可能出现在以下几种情况：

### 1. 非发车时间
- **时间限制**：发车时间为 6:00-20:00
- **超出时间**：在此时间段外尝试发车会返回 200350

### 2. 已发车后收车
- **状态冲突**：车辆已发出并已收回
- **重复发车**：尝试发送已收车的车辆

### 3. 未加入俱乐部 ⭐ 新发现
- **未加入**：账号未加入任何俱乐部
- **无权限**：没有俱乐部赛车权限

## 错误码对比

### 俱乐部相关发车错误码

| 错误码 | 主要含义 | 其他可能含义 | 处理方式 |
|--------|---------|-------------|---------|
| `200350` | 非发车时间 | 已收车、未加入俱乐部 | ⚠️ 跳过 |
| `2300070` | 未加入俱乐部 | - | ⚠️ 跳过 |
| `200400` | 未加入俱乐部或无权限 | - | ❌ 失败 |

### 为什么200350和2300070都可能表示"未加入俱乐部"？

可能的原因：
1. **不同的检查阶段**：
   - `2300070`：在签到或查询车辆时检查
   - `200350`：在实际发车时检查

2. **不同的服务器版本**：
   - 旧版本返回 `200350`
   - 新版本返回 `2300070`

3. **不同的错误分类**：
   - `200350`：通用的"无法发车"错误
   - `2300070`：明确的"未加入俱乐部"错误

## 解决方案

### 更新错误提示

将错误提示从单一原因改为包含所有可能的原因：

#### 修改前
```javascript
} else if (errorMsg.includes('200350')) {
  // 错误码200350：非发车时间或已发车后收车
  console.log(`⚠️ [${tokenId}] 车辆 ${carId} 发送失败: 非发车时间（6:00-20:00）或已发车后收车`)
  sendSkipCount++
  break
}
```

#### 修改后
```javascript
} else if (errorMsg.includes('200350')) {
  // 错误码200350：非发车时间、已发车后收车、或未加入俱乐部
  console.log(`⚠️ [${tokenId}] 车辆 ${carId} 发送失败: 非发车时间（6:00-20:00）、已发车后收车、或未加入俱乐部`)
  sendSkipCount++
  break
}
```

### 处理策略保持不变

- ✅ **仍然标记为"跳过"**：不计入失败数
- ✅ **停止继续尝试**：避免重复失败
- ✅ **友好提示**：列出所有可能的原因

## 修改文件

### src/stores/batchTaskStore.js

**修改位置**: Line 1699-1700

**修改内容**:
- 更新注释：增加"或未加入俱乐部"
- 更新日志：增加"或未加入俱乐部"说明

## 用户体验改进

### 修改前

```
控制台日志：
⚠️ [10694服-0-7167...] 车辆 1 发送失败: 非发车时间（6:00-20:00）或已发车后收车

用户疑惑：
❓ 现在是发车时间内啊
❓ 车辆也没有收车啊
❓ 为什么还是失败？
```

### 修改后

```
控制台日志：
⚠️ [10694服-0-7167...] 车辆 1 发送失败: 非发车时间（6:00-20:00）、已发车后收车、或未加入俱乐部

用户理解：
✅ 哦，可能是因为没加入俱乐部
✅ 提示信息更全面了
✅ 知道可能的原因了
```

## 诊断指南

当遇到错误码 `200350` 时，按以下顺序检查：

### 1. 检查俱乐部状态 ⭐ 优先
```
进入游戏 → 俱乐部
- 是否已加入俱乐部？
- 是否有赛车权限？
```

### 2. 检查发车时间
```
当前时间是否在 6:00-20:00 之间？
```

### 3. 检查车辆状态
```
车辆是否已经发车并收回？
是否在运输中？
```

## 完整的发车错误处理流程

```javascript
try {
  await sendCar(carId)
} catch (error) {
  if (error.includes('12000050')) {
    // 今日发车次数已达上限
    → 停止发车
  } else if (error.includes('200020')) {
    // 发送冷却期
    → 跳过此车，尝试下一辆
  } else if (error.includes('200350')) {
    // 非发车时间、已收车、或未加入俱乐部
    → 跳过，停止继续尝试
  } else if (error.includes('2300070')) {
    // 明确的未加入俱乐部
    → 跳过，停止继续尝试
  } else {
    // 其他未知错误
    → 记录错误，继续尝试下一辆
  }
}
```

## 发车相关错误码汇总表

| 错误码 | 主要含义 | 可能的其他原因 | 处理方式 | 是否继续尝试下一辆 |
|--------|---------|--------------|---------|-----------------|
| `12000050` | 今日发车已达上限 | - | ⚠️ 跳过 | ❌ 否 |
| `200020` | 发送冷却期 | - | ⚠️ 跳过 | ✅ 是 |
| `200350` | 非发车时间 | 已收车、未加入俱乐部 | ⚠️ 跳过 | ❌ 否 |
| `2300070` | 未加入俱乐部 | - | ⚠️ 跳过 | ❌ 否 |
| `200400` | 未加入或无权限 | - | ❌ 失败 | ❌ 否 |

## 技术要点

### 1. 一个错误码多种含义

在游戏服务器中，一个错误码可能代表多种情况：
- **通用错误码**：如 200350，表示"无法发车"的各种原因
- **具体错误码**：如 2300070，明确表示"未加入俱乐部"

处理策略：
```javascript
// ✅ 好的做法：提示所有可能的原因
console.log('可能原因: A、B、或C')

// ❌ 不好的做法：只提示一种原因
console.log('原因: A')  // 用户遇到B或C时会困惑
```

### 2. 错误提示的优先级

当有多个可能的原因时，建议按以下顺序排列：
1. **最常见的原因**放在前面
2. **用户最容易检查的**放在前面
3. **技术性较强的**放在后面

示例：
```
非发车时间（易检查）→ 已发车后收车（常见）→ 未加入俱乐部（新发现）
```

### 3. 保持向后兼容

更新错误提示时，应保持：
- ✅ 原有的错误处理逻辑不变
- ✅ 原有的 `sendSkipCount++` 和 `break` 保持
- ✅ 只增加提示信息的完整性

## 用户指南

### 如何解决200350错误？

#### 方法1：加入俱乐部（最常见）
```
1. 进入游戏
2. 点击"俱乐部"
3. 搜索并加入一个俱乐部
4. 重新执行批量任务
```

#### 方法2：在发车时间内执行
```
1. 检查当前时间
2. 确保在 6:00-20:00 之间
3. 重新执行批量任务
```

#### 方法3：检查车辆状态
```
1. 进入游戏查看赛车
2. 如果车辆已收车，等待下次发车时间
3. 如果车辆在运输中，等待到达后再发车
```

## 测试场景

### 场景1：未加入俱乐部
```
账号状态: 未加入俱乐部
执行时间: 10:00（发车时间内）

错误码: 200350
日志: 非发车时间（6:00-20:00）、已发车后收车、或未加入俱乐部
结果: ⚠️ 跳过，停止尝试
```

### 场景2：非发车时间
```
账号状态: 已加入俱乐部
执行时间: 21:00（发车时间外）

错误码: 200350
日志: 非发车时间（6:00-20:00）、已发车后收车、或未加入俱乐部
结果: ⚠️ 跳过，停止尝试
```

### 场景3：车辆已收车
```
账号状态: 已加入俱乐部
执行时间: 10:00（发车时间内）
车辆状态: 已发车并收车

错误码: 200350
日志: 非发车时间（6:00-20:00）、已发车后收车、或未加入俱乐部
结果: ⚠️ 跳过，停止尝试
```

## 相关版本

- **v3.11.20**: 首次添加错误码 200350 识别（非发车时间或已收车）
- **v3.11.24**: 添加错误码 2300070 识别（未加入俱乐部）
- **v3.12.3**: 补充 200350 的含义，增加"未加入俱乐部"说明（本版本）

## 总结

**发现**：
- 🔍 错误码 200350 的含义比预想的更广泛
- 🔍 不仅表示时间限制和收车状态
- 🔍 也可能表示未加入俱乐部

**更新**：
- ✅ 更新错误提示，包含所有可能的原因
- ✅ 保持原有的处理逻辑不变
- ✅ 提供更完整的诊断指南

**效果**：
- ✅ 用户看到更全面的错误提示
- ✅ 减少用户困惑
- ✅ 更容易定位实际问题
- ✅ 提高用户体验

**建议**：
- 💡 优先检查是否加入俱乐部
- 💡 然后检查发车时间
- 💡 最后检查车辆状态

---

**状态**: ✅ 已更新  
**版本**: v3.12.3

