# 碰撞避免系统API文档

## 版本信息
- 版本: 0.5.1
- 更新日期: 2025-01-15
- 维护者: 开发团队

## 概述
本文档描述了碰撞避免系统的API接口，包括外部数据接入接口和无人车控制接口。

## 1. 外部数据接入接口

### 1.1 航空器位置数据接入
- **功能**: 接入并处理从空管接收到的航空器融合位置数据
- **数据流**: 实时数据，不持久化存储，仅用于实时处理和推送
- **处理策略**: 数据缓存到Redis，通过WebSocket推送给前端

### 1.2 车辆位置数据接入  
- **功能**: 接入机场已有车辆位置数据
- **数据流**: 实时数据，不持久化存储，仅用于实时处理和推送
- **处理策略**: 数据缓存到Redis，通过WebSocket推送给前端

## 2. 无人车控制接口

### 2.1 控制指令接口
**POST /api/unmanned-vehicle/command**

发送控制指令给无人车，支持告警、信号灯、预警、恢复等指令类型。

**请求参数:**
```json
{
  "transId": "string",           // 消息唯一ID
  "timestamp": "long",           // 时间戳
  "vehicleId": "string",         // 车辆ID
  "commandType": "string",       // 指令类型: ALERT, SIGNAL, WARNING, RESUME
  "commandReason": "string",     // 指令原因: TRAFFIC_LIGHT, AIRCRAFT_CROSSING等
  "signalState": "string",       // 信号灯状态(可选): RED, GREEN, YELLOW
  "intersectionId": "string",    // 路口ID(可选)
  "latitude": "double",          // 目标位置纬度
  "longitude": "double",         // 目标位置经度
  "relativeSpeed": "double",     // 相对速度(可选)
  "relativeMotionX": "double",   // 相对运动X分量(可选)
  "relativeMotionY": "double",   // 相对运动Y分量(可选)
  "minDistance": "double"        // 最小距离(可选)
}
```

**响应结果:**
```json
{
  "code": 200,
  "message": "控制指令执行成功",
  "data": {
    "transId": "string",         // 与请求ID一致
    "timestamp": "long",         // 处理时间戳
    "vehicleId": "string",       // 车辆ID
    "status": "string"           // 执行状态
  }
}
```

**数据持久化:** 控制指令会保存到数据库，包含PostGIS空间数据支持。

### 2.2 位置上报接口
**GET /api/unmanned-vehicle/location/{vehicleId}**

获取指定无人车的位置信息。

**路径参数:**
- `vehicleId`: 车辆ID

**响应结果:**
```json
{
  "code": 200,
  "message": "位置信息获取成功",
  "data": {
    "transId": "string",         // 消息唯一ID
    "timestamp": "long",         // 时间戳
    "vehicleId": "string",       // 车辆ID
    "latitude": "double",        // 纬度
    "longitude": "double",       // 经度
    "speed": "double",           // 速度(m/s)
    "direction": "double"        // 车头航向角(弧度)
  }
}
```

**数据持久化:** 无人车位置数据会保存到数据库。

### 2.3 状态查询接口
**POST /api/unmanned-vehicle/state**

查询无人车状态信息，支持单个车辆或所有车辆查询。

**请求参数:**
```json
{
  "transId": "string",           // 消息唯一ID
  "timestamp": "long",           // 时间戳
  "vehicleId": "string",         // 车辆ID
  "isSingle": "boolean"          // true:单个车辆, false:所有车辆
}
```

**响应结果:**
```json
{
  "code": 200,
  "message": "状态查询成功",
  "data": [
    {
      "transId": "string",       // 消息唯一ID
      "timestamp": "long",       // 时间戳
      "vehicleId": "string",     // 车辆ID
      "loginState": "boolean",   // 登录状态
      "faultInfo": ["string"],   // 故障信息列表
      "activeSafety": "boolean", // 主动安全触发状态
      "rc": "boolean",           // 远控模式状态
      "command": "int",          // 远程指令: 0恢复, 1急停, 2缓停
      "airportInfo": ["string"], // 机场特殊信息
      "vehicleMode": "int",      // 控制模式: 1手动, 2自动, 3遥控器, 4远程, 5故障
      "gearState": "int",        // 档位: 1N, 2D, 3P, 4R, 5未知
      "chassisReady": "boolean", // 底盘就绪状态
      "collisionStatus": "boolean", // 防撞梁触发状态
      "clearance": "int",        // 示廓灯状态: 0关闭, 1开启
      "turnSignalStatus": "int", // 转向灯: 0关闭, 1左转, 2右转, 3双闪
      "pointCloud": ["byte"]     // 点云数据(可选)
    }
  ]
}
```

## 3. 数据持久化策略

### 3.1 存储策略
- **无人车数据**: 控制指令和位置数据会持久化存储到PostgreSQL数据库
- **航空器数据**: 仅实时处理，不持久化存储
- **其他车辆数据**: 仅实时处理，不持久化存储

### 3.2 空间数据支持
- 使用PostGIS扩展处理地理位置数据
- 支持空间索引和空间查询
- 经纬度数据以POINT几何类型存储

### 3.3 实时数据流
- 使用Redis缓存实时位置数据
- 通过WebSocket推送实时数据给前端
- 数据过期时间30秒，推送频率2秒

## 4. 错误处理

### 4.1 统一错误响应格式
```json
{
  "code": "int",              // 错误代码
  "message": "string",        // 错误信息
  "timestamp": "long",        // 错误时间戳
  "path": "string"           // 请求路径
}
```

### 4.2 常见错误代码
- `200`: 请求成功
- `400`: 请求参数错误
- `401`: 认证失败
- `404`: 资源不存在
- `500`: 服务器内部错误

## 5. 配置参数

### 5.1 无人车控制配置
```yaml
unmanned-vehicle:
  control:
    timeout: 30000           # 控制指令超时时间(毫秒)
    max-retry: 3            # 最大重试次数
    batch-size: 100         # 批量处理大小
    history-retention: 30   # 历史数据保留天数
```

### 5.2 数据持久化配置
```yaml
data-persistence:
  vehicle-types:
    store: ["UNMANNED"]     # 需要持久化的车辆类型
    exclude: ["AIRCRAFT", "SPECIAL"]  # 排除的车辆类型
  batch:
    size: 50               # 批量插入大小
    timeout: 5000          # 批量操作超时时间
```

## 6. 安全考虑

### 6.1 数据验证
- 所有输入参数进行严格验证
- 地理坐标范围验证
- 时间戳合理性检查

### 6.2 访问控制
- API接口需要适当的认证和授权
- 敏感操作记录审计日志
- 控制指令执行权限管理

## 7. 性能监控

### 7.1 关键指标
- 控制指令响应时间
- 数据处理吞吐量
- 数据库连接池状态
- Redis缓存命中率

### 7.2 告警阈值
- 响应时间 > 1000ms
- 错误率 > 5%
- 数据库连接数 > 80%
- 内存使用率 > 85% 