Files
ln-bi/docs/oneos-mileage-api-requirements.md
2026-07-23 15:12:36 +08:00

5.4 KiB
Raw Permalink Blame History

OneOS 车辆里程接口需求

当前协议选源联调阻塞项和 OneOS 修改清单见: OneOS 车辆里程数据源协议改造清单

开发原则

  1. 新增区间查询接口;车辆里程汇总能力在现有 POST /api/v1/vehicles/mileage/query 上兼容扩展。
  2. 现有接口的路径、鉴权、已有请求参数、已有响应字段、字段语义和默认行为必须完全兼容。
  3. 公网 https://open.d.lnoneos.com 与 ECS 内网 http://172.17.111.55:20310 使用相同路径、鉴权和数据口径。
  4. 鉴权继续使用 Authorization: Bearer APP_KEY
  5. 日期采用 YYYY-MM-DD,时区统一为 Asia/Shanghai,里程单位统一为 km。

1. 车辆区间日里程批量查询

POST /api/v1/vehicles/mileage/range/query

请求:

{
  "startDate": "2026-07-01",
  "endDate": "2026-07-23",
  "plateNumbers": ["沪A00001", "沪A00002"],
  "protocolPriority": ["GB32960", "MQTT", "JT808"],
  "cursor": null,
  "pageSize": 5000
}

规则:

  • startDateendDate 必填,最长支持 366 天;
  • plateNumbers 可省略,省略时返回授权范围内全部车辆;
  • protocolPriority 可省略;提供时只允许 GB32960MQTTJT808 数组顺序表示逐车逐日的数据源优先级,未列出的协议视为禁用;
  • BI 只会使用以下四种组合:
    • 仪表数据优先:["GB32960", "MQTT", "JT808"]
    • GPS 数据优先:["JT808", "GB32960", "MQTT"]
    • 仅仪表数据:["GB32960", "MQTT"]
    • 仅 GPS 数据:["JT808"]
  • BI 页面默认只启用“仪表数据”,即默认发送 ["GB32960", "MQTT"];用户主动启用 GPS 后才发送包含 JT808 的组合;
  • 仪表数据内部优先级固定为 GB32960 > MQTT,不提供反向切换;
  • 数据量过大时使用 cursor 分页,同一次查询使用相同 snapshotId
  • 每辆车每天返回一条记录;
  • 无数据返回 status: "NO_DATA"dailyMileageKm: null,真实零里程返回 status: "NORMAL"dailyMileageKm: 0

响应:

{
  "code": "SUCCESS",
  "message": "success",
  "data": [
    {
      "vin": "LMRK...",
      "plateNumber": "沪A00001",
      "date": "2026-07-01",
      "dailyMileageKm": 182.437,
      "sourceProtocol": "GB32960",
      "dataTime": "2026-07-01T23:58:45+08:00",
      "updatedAt": "2026-07-02T05:10:00+08:00",
      "status": "NORMAL"
    }
  ],
  "snapshotId": "mileage-20260723-001",
  "nextCursor": null,
  "traceId": "..."
}

2. 兼容扩展现有单日车辆里程接口

用于一次获取指定日期每辆车的日里程、累计里程和数据时间。

POST /api/v1/vehicles/mileage/query

请求:

{
  "date": "2026-07-23",
  "plateNumbers": ["沪A00001", "沪A00002"],
  "protocolPriority": ["GB32960", "MQTT", "JT808"]
}

规则:

  • dateplateNumbers 沿用现有接口规则;
  • protocolPriority 的枚举、顺序和禁用规则与区间接口完全一致;
  • plateNumbers 省略时返回授权范围内全部车辆;
  • 接口默认在现有车辆结果中返回 totalMileageKmdataTimeupdatedAt
  • 只增加响应字段,不删除或修改任何现有字段及其语义;
  • 历史日期返回该自然日最终有效结果;
  • 查询当天返回当前最新结果;
  • dataTime 必须是本次统计实际采用的最后一条车辆源数据时间,不能使用接口请求时间或响应时间代替;
  • 无数据时相关里程字段返回 null,不能使用 0 代替;
  • 接口应支持当前应用授权范围内的全部车辆。

响应:

{
  "code": "SUCCESS",
  "message": "success",
  "data": [
    {
      "vin": "LMRK...",
      "plateNumber": "沪A00001",
      "date": "2026-07-23",
      "dailyMileageKm": 182.437,
      "totalMileageKm": 12345.678,
      "sourceProtocol": "GB32960",
      "dataTime": "2026-07-23T10:35:42+08:00",
      "updatedAt": "2026-07-23T10:35:46+08:00",
      "status": "NORMAL"
    }
  ],
  "traceId": "..."
}

现有响应外层结构及已有字段保持不变,调用方无需增加任何请求参数。

通用要求

  • dataTimeupdatedAt 使用带 +08:00 的 ISO 8601 格式;
  • sourceProtocol 必须返回本条结果实际采用的协议: GB32960MQTTJT808;无数据时返回 null
  • OneOS 必须按 protocolPriority 选择第一份有效数据,不得返回已禁用协议的数据;
  • sourceProtocol=GB32960/MQTT 在 BI 显示为“仪表数据”, sourceProtocol=JT808 显示为“GPS数据”
  • 每个响应返回 traceId
  • 接口返回值保留原始精度;
  • 负里程不得作为正常数据返回;
  • 公网和 ECS 内网使用同一 AppKey 时,授权范围和查询结果保持一致;
  • 区间接口及现有接口的汇总扩展不得影响现有调用方和默认行为。

验收

  1. 现有 /api/v1/vehicles/mileage/query 请求方式保持不变,回归测试全部通过。
  2. 区间接口不传车牌可完整查询全部授权车辆,分页无重复、无漏行。
  3. 现有接口不传车牌时,默认返回全部授权车辆的日里程、累计里程和数据时间。
  4. 正确区分无数据与真实零里程。
  5. dataTime 能反映每辆车实际数据的新鲜度。
  6. 四种 protocolPriority 组合均能按顺序选源,且响应中的 sourceProtocol 与实际采用协议一致。
  7. 禁用某类协议后,响应不得回退到该协议。