# 设备模块错误码文档

本文档详细列出设备交互模块可能返回的错误码、错误描述及处理建议。

## 错误响应格式

所有API错误响应均遵循以下格式：

```json
{
  "status": "error",
  "message": "错误描述信息",
  "code": "ERROR_CODE"
}
```

## 通用错误码 (1000-1999)

| 错误码 | 描述 | 处理建议 |
|--------|------|----------|
| 1001 | 参数错误 | 检查请求参数是否完整且格式正确 |
| 1002 | 权限不足 | 确认用户是否已登录且具有相应权限 |
| 1003 | 资源不存在 | 检查请求的资源ID是否正确 |
| 1004 | 操作被拒绝 | 当前状态下不允许此操作 |
| 1005 | 系统内部错误 | 请联系系统管理员 |
| 1006 | 请求超时 | 请稍后重试 |
| 1007 | 并发请求过多 | 降低请求频率 |
| 1008 | 数据库操作失败 | 请联系系统管理员 |
| 1009 | 配置错误 | 请联系系统管理员 |

## 设备类型错误码 (2000-2099)

| 错误码 | 描述 | 处理建议 |
|--------|------|----------|
| 2001 | 设备类型不存在 | 检查设备类型ID是否正确 |
| 2002 | 设备类型代码已存在 | 更换一个新的设备类型代码 |
| 2003 | 设备类型名称已存在 | 更换一个新的设备类型名称 |
| 2004 | 设备类型不可删除 | 该设备类型已关联设备，不可删除 |
| 2005 | 设备类型字段验证失败 | 检查字段格式是否正确 |

## 设备批次错误码 (2100-2199)

| 错误码 | 描述 | 处理建议 |
|--------|------|----------|
| 2101 | 设备批次不存在 | 检查设备批次ID是否正确 |
| 2102 | 批次编号已存在 | 更换一个新的批次编号 |
| 2103 | 生产日期格式错误 | 确保日期格式为YYYY-MM-DD |
| 2104 | 批次不可删除 | 该批次已关联设备，不可删除 |
| 2105 | 设备数量超出限制 | 批次设备数量不能超过系统设定的最大值 |
| 2106 | 批次字段验证失败 | 检查字段格式是否正确 |

## 设备错误码 (2200-2299)

| 错误码 | 描述 | 处理建议 |
|--------|------|----------|
| 2201 | 设备不存在 | 检查设备ID是否正确 |
| 2202 | 设备码已存在 | 确保设备码唯一 |
| 2203 | 序列号已存在 | 在同一批次中序列号必须唯一 |
| 2204 | MAC地址格式错误 | MAC地址格式应为XX:XX:XX:XX:XX:XX |
| 2205 | MAC地址已存在 | MAC地址必须唯一 |
| 2206 | 设备已激活 | 已激活设备不可修改某些字段 |
| 2207 | 设备未激活 | 设备需要先激活才能执行此操作 |
| 2208 | 批量创建参数错误 | 检查批量创建的参数是否正确 |
| 2209 | 批量创建MAC地址冲突 | 生成的MAC地址存在冲突，尝试更换MAC前缀 |
| 2210 | 批量创建序列号冲突 | 生成的序列号存在冲突，尝试更换起始序列号 |
| 2211 | 设备已经绑定 | 设备已经绑定给其他用户 |
| 2212 | 设备不可删除 | 已激活或已绑定的设备不可删除 |

## 用户设备关联错误码 (2300-2399)

| 错误码 | 描述 | 处理建议 |
|--------|------|----------|
| 2301 | 用户设备关联不存在 | 检查用户设备关联ID是否正确 |
| 2302 | 设备已被绑定 | 该设备已被其他用户绑定 |
| 2303 | 设备绑定超过限制 | 用户绑定设备数量已达到上限 |
| 2304 | 设备未绑定 | 设备需要先绑定才能执行此操作 |
| 2305 | 无法设置为主要设备 | 检查设备是否可以设置为主要设备 |
| 2306 | 设备类型不支持设置为主要设备 | 该设备类型不支持设置为主要设备 |
| 2307 | 解绑间隔时间不足 | 两次解绑操作间隔时间不足，请稍后再试 |
| 2308 | 无权操作此设备 | 用户只能操作自己绑定的设备 |

## 火山引擎Token错误码 (2400-2499)

| 错误码 | 描述 | 处理建议 |
|--------|------|----------|
| 2401 | 火山引擎配置错误 | 系统火山引擎配置有误，请联系管理员 |
| 2402 | Token生成失败 | 火山引擎服务异常，请稍后重试 |
| 2403 | 无效的过期时间 | 过期时间必须大于0且小于系统最大限制 |
| 2404 | MAC地址不存在 | 找不到对应MAC地址的设备 |
| 2405 | MAC地址未绑定用户 | 设备需要先绑定用户才能获取Token |
| 2406 | 无法获取RTC服务 | 火山引擎RTC服务不可用，请稍后重试 |
| 2407 | 用户配额不足 | 用户配额已用完，请联系客服 |
| 2408 | 房间创建失败 | 创建RTC房间失败，请稍后重试 |
| 2409 | 任务创建失败 | 创建AI任务失败，请稍后重试 |

## 消息交互错误码 (2500-2599)

| 错误码 | 描述 | 处理建议 |
|--------|------|----------|
| 2501 | 无效的消息类型 | 消息类型必须是支持的类型之一 |
| 2502 | 消息格式错误 | 检查消息格式是否符合要求 |
| 2503 | 用户不存在 | 检查用户ID是否正确 |
| 2504 | 用户无绑定设备 | 用户需要先绑定设备才能发送消息 |
| 2505 | 消息发送失败 | 消息队列服务异常，请稍后重试 |
| 2506 | 消息内容过长 | 消息内容超过最大长度限制 |
| 2507 | 消息发送频率过高 | 降低消息发送频率 |
| 2508 | 设备离线 | 设备当前离线，无法接收消息 |
| 2509 | 功能不支持 | 设备不支持此类型消息 |

## WebSocket错误码 (2600-2699)

| 错误码 | 描述 | 处理建议 |
|--------|------|----------|
| 2601 | WebSocket连接失败 | 检查网络连接是否正常 |
| 2602 | WebSocket认证失败 | 检查Token是否有效 |
| 2603 | WebSocket连接超时 | 重新建立连接 |
| 2604 | WebSocket连接已关闭 | 可能是网络问题或服务器主动关闭，尝试重连 |
| 2605 | WebSocket发送消息失败 | 检查连接状态，尝试重连 |
| 2606 | WebSocket接收消息格式错误 | 消息格式不符合规范 |
| 2607 | WebSocket服务不可用 | 服务器WebSocket服务异常，请稍后重试 |
| 2608 | 同一用户多点登录限制 | 同一用户只允许建立有限数量的WebSocket连接 |

## 错误处理建议

1. **客户端错误处理**:
   - 对于4xx错误，客户端应向用户展示友好的错误提示
   - 特定错误码应有特定的处理逻辑
   - 对于参数错误，应检查并修正参数后重试
   - 认证类错误应引导用户重新登录

2. **服务端错误处理**:
   - 对于5xx错误，应向用户展示"服务暂时不可用"等通用提示
   - 记录错误日志，包括错误码、错误时间、请求参数等
   - 设置重试机制，特别是对于网络类错误
   - 严重错误应上报监控系统

3. **特殊情况**:
   - 对于Token获取失败，可能需要降级处理
   - 对于WebSocket连接问题，应实现自动重连机制
   - 批量操作失败，应提供部分成功的结果信息

## 常见问题排查

1. **设备绑定失败**:
   - 检查MAC地址是否正确
   - 确认设备是否已激活
   - 确认设备是否已被其他用户绑定
   - 检查用户绑定设备数量是否已达上限

2. **Token获取失败**:
   - 检查设备MAC地址是否正确
   - 确认设备是否已绑定用户
   - 检查火山引擎服务是否正常
   - 确认用户配额是否充足

3. **消息发送失败**:
   - 检查设备是否在线
   - 确认消息格式是否正确
   - 检查用户是否有绑定设备
   - 确认设备是否支持该类型消息 