feat: sync vehicle monitoring and accumulated platform updates
Add monitoring metrics, numeric sorting, report-time display, vehicle number labels, and map layout fixes. Include accumulated mileage, hydrogen, OneOS authentication, open platform, ingestion, deployment, and UI updates. Exclude temporary files, generated reports, and credentials. Validate frontend 632 tests and production build, API packages, vehicle-map tests, and release installer tests. Gateway suite has one pre-existing date-sensitive identity throttling test failure reproduced on the parent commit.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
openapi: 3.0.3
|
||||
info:
|
||||
title: 车辆数据开放平台 API
|
||||
version: 1.10.0
|
||||
version: 1.12.2
|
||||
license:
|
||||
name: Proprietary
|
||||
description: |
|
||||
@@ -16,6 +16,90 @@ tags:
|
||||
- name: 开放平台管理
|
||||
description: 仅车辆数据平台管理员可调用的应用和车辆授权管理接口
|
||||
paths:
|
||||
/api/v1/vehicles/operating-data/query:
|
||||
post:
|
||||
tags: [合作方数据接口]
|
||||
summary: 批量查询车辆综合运营数据
|
||||
description: |
|
||||
responseMode省略或FULL保持已上线完整结构;SIMPLE固定返回9个业务字段并在内部按质量过滤。
|
||||
SIMPLE的百公里氢耗字段暂固定null,不进行未经证明可比的日用氢/日里程相除;不影响summary成功计数。
|
||||
SIMPLE summary按所选展示字段可用性统计;FULL按子查询执行结果统计。未选类型对应的SIMPLE字段仍返回null但不参与计数。
|
||||
SIMPLE舍弃陈旧/无可信采集时间的剩余氢量、异常用氢及结转补零;原完整数据和来源状态仍在内部保留。
|
||||
车牌可选,省略或空数组查询所选时间范围均有效授权的全部车辆(取交集),无车辆返回空数组;省略或空数组不受200辆上限限制,不分页、不截断。显式指定车牌最多200项,超出返回BATCH_SIZE_EXCEEDED。规范化后不允许重复。
|
||||
dataTypes省略时查询实时、单日里程和单日用氢;未选块省略。含日统计时dailyDate必填且不得为未来日期。
|
||||
protocolPriority仅影响DAILY_MILEAGE,未选里程时不可提供;实时保持原有选源。
|
||||
appKey须当前有效,实时车辆授权覆盖requestAt,日统计授权完整覆盖查询自然日。任一越权整批403;先授权再读取。
|
||||
各数据块保留源字段、质量与时间,不是共同快照;不计算百公里氢耗。同日或NORMAL不能证明统计区间可比。
|
||||
FULL的queryStatus仅表示子服务可见执行结果,SUCCESS仍可能NO_DATA、DATA_ANOMALY或实时补充降级MISSING/UNKNOWN。
|
||||
里程结转沿用status=NORMAL及dataQuality=CARRIED_FORWARD,不能解释为实测零;储氢陈旧和估算来源原样保留。
|
||||
各块失败独立返回FAILED及错误码,不以NO_DATA或旧值掩盖。所有子查询失败仍返回200和准确summary。
|
||||
所有时间戳转为带+08:00的RFC3339,未知可选字段显式null;原独立接口不受影响。
|
||||
每应用每服务实例30批/60秒、最多2批并发;新端点全局每实例最多16批。429包含Retry-After,多实例配额由网关统一协调。
|
||||
总预算6秒,批量子查询共享最多4.5秒预算;上层网关需给出更长预算。未承诺未经压测的P95目标。
|
||||
operationId: queryVehicleOperatingData
|
||||
security:
|
||||
- AppKeyAuth: []
|
||||
requestBody:
|
||||
required: true
|
||||
description: 最大64KiB;不接受未知字段或显式null。
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/OperatingDataQuery'
|
||||
example:
|
||||
responseMode: SIMPLE
|
||||
plateNumbers: [粤A09635F]
|
||||
dailyDate: '2026-10-23'
|
||||
dataTypes: [REALTIME, DAILY_MILEAGE, DAILY_HYDROGEN]
|
||||
protocolPriority: [GB32960, MQTT, JT808]
|
||||
responses:
|
||||
'200':
|
||||
description: 聚合处理完成;FULL逐块检查执行和质量,SIMPLE返回9字段并按所选展示字段可用性汇总。
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/OperatingDataResponse'
|
||||
- $ref: '#/components/schemas/OperatingSimpleResponse'
|
||||
'400':
|
||||
description: 参数、日期或协议不合法;显式plateNumbers超过200项时code为BATCH_SIZE_EXCEEDED
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/OperatingErrorResponse'
|
||||
'401':
|
||||
description: appKey当前无效
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/OperatingErrorResponse'
|
||||
'403':
|
||||
description: 车辆或所选时段未授权
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/OperatingErrorResponse'
|
||||
'413':
|
||||
description: 请求体超过64KiB
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/OperatingErrorResponse'
|
||||
'429':
|
||||
description: 应用或全局限额超限
|
||||
headers:
|
||||
Retry-After:
|
||||
schema: {type: integer, minimum: 1}
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/OperatingErrorResponse'
|
||||
'500':
|
||||
description: 授权依赖、身份映射或聚合内部异常
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/OperatingErrorResponse'
|
||||
/api/v1/vehicles/hydrogen-remaining/history/query:
|
||||
post:
|
||||
tags: [合作方数据接口]
|
||||
@@ -137,7 +221,7 @@ paths:
|
||||
tags: [合作方数据接口]
|
||||
summary: 分页查询车辆区间日里程
|
||||
description: |
|
||||
最长支持 366 天。plateNumbers 省略或传空数组时固化应用在整个查询区间有效授权的全部车辆。
|
||||
最长支持 3 年(1096 天)。plateNumbers 省略或传空数组时固化应用在整个查询区间有效授权的全部车辆。
|
||||
首次请求返回 snapshotId 和 nextCursor;后续请求保持原参数并传回 nextCursor。
|
||||
快照仅固化授权车辆清单,逐页读取已建立索引的日统计投影,不扫描原始时序明细。
|
||||
protocolPriority 对区间内每辆车、每个自然日独立生效;未列出的协议完全禁用。
|
||||
@@ -491,6 +575,391 @@ components:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ErrorResponse'
|
||||
schemas:
|
||||
OperatingSimpleVehicle:
|
||||
type: "object"
|
||||
additionalProperties: false
|
||||
required: ["plateNumber", "reportTime", "offline", "remainingHydrogenKg", "socPercent", "totalMileageKm", "dailyHydrogenConsumptionKg", "dailyMileageKm", "hydrogenConsumptionPer100KmKg"]
|
||||
properties:
|
||||
plateNumber:
|
||||
type: "string"
|
||||
description: "规范化后的请求车牌,保持请求顺序。"
|
||||
reportTime:
|
||||
type: "string"
|
||||
nullable: true
|
||||
description: "实时选中主记录的event_time,即真实源采集/上报时刻;缺失为null,不使用received_at、updated_at或请求时间替代。FULL recordTime仍保持原兼容口径。"
|
||||
format: "date-time"
|
||||
offline:
|
||||
type: "boolean"
|
||||
nullable: true
|
||||
description: "主实时记录可用且online已知时取反;无记录或查询失败为null,不能当成离线。"
|
||||
remainingHydrogenKg:
|
||||
type: "number"
|
||||
nullable: true
|
||||
description: "剩余氢量kg。仅kg字段NORMAL、数值有效且有可信采集时间,响应时不超过300秒并不晚于服务时点1分钟时展示;陈旧/缺失/异常为null,真实0保留。"
|
||||
minimum: 0
|
||||
socPercent:
|
||||
type: "number"
|
||||
nullable: true
|
||||
description: "动力电池SOC百分比;实时主记录有效且数值在0–100内,未知为null。"
|
||||
minimum: 0
|
||||
maximum: 100
|
||||
totalMileageKm:
|
||||
type: "number"
|
||||
nullable: true
|
||||
description: "实时主记录累计里程km;不使用日统计累计值兜底。"
|
||||
minimum: 0
|
||||
dailyHydrogenConsumptionKg:
|
||||
type: "number"
|
||||
nullable: true
|
||||
description: "queryDate用氢量kg;子查询成功、status=NORMAL、qualityStatus=OK时返回有效非负数值,否则null。日内值可为PRELIMINARY,不保证终报。"
|
||||
minimum: 0
|
||||
dailyMileageKm:
|
||||
type: "number"
|
||||
nullable: true
|
||||
description: "queryDate里程km;执行成功、业务NORMAL且非CARRIED_FORWARD时返回有效非负数值;实测零保留,结转补零和异常为null。"
|
||||
minimum: 0
|
||||
hydrogenConsumptionPer100KmKg:
|
||||
type: "number"
|
||||
nullable: true
|
||||
description: "kg/100km预留字段;当前缺少可比区间完整证据,固定null,不参与summary计数。禁止调用方以同日日指标直接相除。"
|
||||
enum: [null]
|
||||
OperatingSimpleSummary:
|
||||
type: "object"
|
||||
description: "按所选展示字段的可用性统计:实时5项+日里程1项+日用氢1项。全有值successCount、部分有值partialSuccessCount、全null failedCount。plateNumber和暂未支持的百公里氢耗不参与;未选类型不参与。null及failedCount并不等于查询执行失败,不作为自动重试依据。"
|
||||
required: ["requestedCount", "returnedCount", "successCount", "partialSuccessCount", "failedCount"]
|
||||
properties:
|
||||
requestedCount: {"$ref": "#/components/schemas/OperatingDataSummary/properties/requestedCount"}
|
||||
returnedCount: {"$ref": "#/components/schemas/OperatingDataSummary/properties/returnedCount"}
|
||||
successCount: {"$ref": "#/components/schemas/OperatingDataSummary/properties/successCount"}
|
||||
partialSuccessCount: {"$ref": "#/components/schemas/OperatingDataSummary/properties/partialSuccessCount"}
|
||||
failedCount: {"$ref": "#/components/schemas/OperatingDataSummary/properties/failedCount"}
|
||||
OperatingSimpleResponse:
|
||||
type: "object"
|
||||
required: ["code", "message", "traceId", "queryDate", "timezone", "requestAt", "generatedAt", "data", "summary"]
|
||||
properties:
|
||||
code: {"$ref": "#/components/schemas/OperatingDataResponse/properties/code"}
|
||||
message: {"$ref": "#/components/schemas/OperatingDataResponse/properties/message"}
|
||||
traceId: {"$ref": "#/components/schemas/OperatingDataResponse/properties/traceId"}
|
||||
queryDate: {"$ref": "#/components/schemas/OperatingDataResponse/properties/queryDate"}
|
||||
timezone: {"$ref": "#/components/schemas/OperatingDataResponse/properties/timezone"}
|
||||
requestAt: {"$ref": "#/components/schemas/OperatingDataResponse/properties/requestAt"}
|
||||
generatedAt: {"$ref": "#/components/schemas/OperatingDataResponse/properties/generatedAt"}
|
||||
data:
|
||||
type: "array"
|
||||
minItems: 0
|
||||
items: {"$ref": "#/components/schemas/OperatingSimpleVehicle"}
|
||||
summary: {"$ref": "#/components/schemas/OperatingSimpleSummary"}
|
||||
OperatingDataQuery:
|
||||
type: "object"
|
||||
oneOf:
|
||||
- required: [dataTypes]
|
||||
properties:
|
||||
dataTypes: {type: array, minItems: 1, maxItems: 1, items: {type: string, enum: [REALTIME]}}
|
||||
- required: [dailyDate]
|
||||
not:
|
||||
required: [dataTypes]
|
||||
properties:
|
||||
dataTypes: {type: array, minItems: 1, maxItems: 1, items: {type: string, enum: [REALTIME]}}
|
||||
additionalProperties: false
|
||||
properties:
|
||||
responseMode:
|
||||
type: string
|
||||
enum: [FULL, SIMPLE]
|
||||
default: FULL
|
||||
description: 省略保持完整结构;显式SIMPLE返回固定9字段;不接受空字符串或null。
|
||||
plateNumbers:
|
||||
type: "array"
|
||||
minItems: 0
|
||||
maxItems: 200
|
||||
uniqueItems: true
|
||||
items:
|
||||
type: "string"
|
||||
minLength: 1
|
||||
maxLength: 32
|
||||
description: "可选;省略或空数组查询所选时间范围内均有效授权的全部车辆,按车牌排序。省略或空数组返回全部有效授权车辆,不受200辆上限限制,不分页、不截断;显式指定最多200项,超出返回BATCH_SIZE_EXCEEDED。去首尾空白、转大写后仍必须唯一。"
|
||||
dailyDate:
|
||||
type: "string"
|
||||
format: "date"
|
||||
description: "含日统计时必填;仅实时可省略;提供时仍校验。无固定历史下界,能否取得结果取决于有效授权及保留的统计投影,不承诺历史完整性。"
|
||||
dataTypes:
|
||||
type: "array"
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
uniqueItems: true
|
||||
items:
|
||||
type: "string"
|
||||
enum: ["REALTIME", "DAILY_MILEAGE", "DAILY_HYDROGEN"]
|
||||
description: "省略默认全部;未选数据块不出现。"
|
||||
protocolPriority:
|
||||
type: "array"
|
||||
minItems: 1
|
||||
maxItems: 3
|
||||
uniqueItems: true
|
||||
items:
|
||||
type: "string"
|
||||
enum: ["GB32960", "MQTT", "JT808"]
|
||||
description: "仅选DAILY_MILEAGE时允许;未列出协议不兜底。"
|
||||
OperatingRealtimeVehicleResultSuccess:
|
||||
type: "object"
|
||||
required: ["queryStatus", "errorCode", "errorMessage", "gpsFixStatus", "locationRecordTime", "coordinateSystem", "protocol", "longitude", "latitude", "speedKmh", "socPercent", "totalMileageKm", "recordTime", "timeDifferenceSeconds", "online", "activeToday", "motionStatus", "locationAvailable", "status", "hydrogenPressureTemperatureSource", "remainingHydrogenPercentSource", "hydrogenFullCapacityKg", "hydrogenTankCapacityL", "hydrogenFullPressureMPa", "hydrogenReferenceTemperatureC", "hydrogenEstimatePressureMPa", "hydrogenEstimateTemperatureC", "hydrogenCalculationVersion", "hydrogenCapacitySource", "hydrogenPercentReason", "remainingHydrogenKg", "remainingHydrogenPercent", "hydrogenRecordTime", "hydrogenDataStatus", "remainingHydrogenKgStatus", "remainingHydrogenPercentStatus", "hydrogenValueSource", "hydrogenSourceProtocol", "hydrogenStaleAfterSeconds", "hydrogenExpectedIntervalSeconds"]
|
||||
properties:
|
||||
queryStatus:
|
||||
type: "string"
|
||||
enum: ["SUCCESS"]
|
||||
errorCode:
|
||||
type: "string"
|
||||
nullable: true
|
||||
enum: [null]
|
||||
errorMessage:
|
||||
type: "string"
|
||||
nullable: true
|
||||
enum: [null]
|
||||
gpsFixStatus: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/gpsFixStatus"}
|
||||
locationRecordTime:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
nullable: true
|
||||
description: "保留源时刻,输出RFC3339带+08:00;未知为null。"
|
||||
coordinateSystem: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/coordinateSystem"}
|
||||
protocol:
|
||||
type: "string"
|
||||
nullable: true
|
||||
description: "沿用源字段含义;原可选字段缺失时输出null。"
|
||||
longitude: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/longitude"}
|
||||
latitude: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/latitude"}
|
||||
speedKmh: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/speedKmh"}
|
||||
socPercent:
|
||||
type: "number"
|
||||
minimum: 0
|
||||
maximum: 100
|
||||
nullable: true
|
||||
description: "动力电池SOC;未知为null。"
|
||||
totalMileageKm: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/totalMileageKm"}
|
||||
recordTime:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
nullable: true
|
||||
description: "保留源时刻,输出RFC3339带+08:00;未知为null。"
|
||||
timeDifferenceSeconds:
|
||||
type: "integer"
|
||||
minimum: 0
|
||||
nullable: true
|
||||
description: "源主记录年龄,不表示实际离线时长。"
|
||||
online: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/online"}
|
||||
activeToday: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/activeToday"}
|
||||
motionStatus: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/motionStatus"}
|
||||
locationAvailable: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/locationAvailable"}
|
||||
status: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/status"}
|
||||
hydrogenPressureTemperatureSource: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenPressureTemperatureSource"}
|
||||
remainingHydrogenPercentSource: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/remainingHydrogenPercentSource"}
|
||||
hydrogenFullCapacityKg: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenFullCapacityKg"}
|
||||
hydrogenTankCapacityL: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenTankCapacityL"}
|
||||
hydrogenFullPressureMPa: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenFullPressureMPa"}
|
||||
hydrogenReferenceTemperatureC: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenReferenceTemperatureC"}
|
||||
hydrogenEstimatePressureMPa: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenEstimatePressureMPa"}
|
||||
hydrogenEstimateTemperatureC: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenEstimateTemperatureC"}
|
||||
hydrogenCalculationVersion: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenCalculationVersion"}
|
||||
hydrogenCapacitySource: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenCapacitySource"}
|
||||
hydrogenPercentReason: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenPercentReason"}
|
||||
remainingHydrogenKg: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/remainingHydrogenKg"}
|
||||
remainingHydrogenPercent: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/remainingHydrogenPercent"}
|
||||
hydrogenRecordTime:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
nullable: true
|
||||
description: "保留源时刻,输出RFC3339带+08:00;未知为null。"
|
||||
hydrogenDataStatus: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenDataStatus"}
|
||||
remainingHydrogenKgStatus: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/remainingHydrogenKgStatus"}
|
||||
remainingHydrogenPercentStatus: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/remainingHydrogenPercentStatus"}
|
||||
hydrogenValueSource: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenValueSource"}
|
||||
hydrogenSourceProtocol: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenSourceProtocol"}
|
||||
hydrogenStaleAfterSeconds: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenStaleAfterSeconds"}
|
||||
hydrogenExpectedIntervalSeconds: {"$ref": "#/components/schemas/RealtimeVehicleResult/properties/hydrogenExpectedIntervalSeconds"}
|
||||
OperatingMileageResultSuccess:
|
||||
type: "object"
|
||||
required: ["queryStatus", "errorCode", "errorMessage", "statisticsStartTime", "statisticsEndTime", "date", "dailyMileageKm", "totalMileageKm", "dataTime", "updatedAt", "sourceProtocol", "dataQuality", "status"]
|
||||
properties:
|
||||
queryStatus:
|
||||
type: "string"
|
||||
enum: ["SUCCESS"]
|
||||
errorCode:
|
||||
type: "string"
|
||||
nullable: true
|
||||
enum: [null]
|
||||
errorMessage:
|
||||
type: "string"
|
||||
nullable: true
|
||||
enum: [null]
|
||||
statisticsStartTime:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
nullable: true
|
||||
description: "保留源时刻,输出RFC3339带+08:00;未知为null。"
|
||||
statisticsEndTime:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
nullable: true
|
||||
description: "保留源时刻,输出RFC3339带+08:00;未知为null。"
|
||||
date: {"$ref": "#/components/schemas/MileageResult/properties/date"}
|
||||
dailyMileageKm: {"$ref": "#/components/schemas/MileageResult/properties/dailyMileageKm"}
|
||||
totalMileageKm: {"$ref": "#/components/schemas/MileageResult/properties/totalMileageKm"}
|
||||
dataTime:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
nullable: true
|
||||
description: "保留源时刻,输出RFC3339带+08:00;未知为null。"
|
||||
updatedAt:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
nullable: true
|
||||
description: "保留源时刻,输出RFC3339带+08:00;未知为null。"
|
||||
sourceProtocol: {"$ref": "#/components/schemas/MileageResult/properties/sourceProtocol"}
|
||||
dataQuality:
|
||||
type: "string"
|
||||
nullable: true
|
||||
description: "沿用源字段含义;原可选字段缺失时输出null。"
|
||||
status: {"$ref": "#/components/schemas/MileageResult/properties/status"}
|
||||
OperatingHydrogenResultSuccess:
|
||||
type: "object"
|
||||
required: ["queryStatus", "errorCode", "errorMessage", "statisticsStartTime", "statisticsEndTime", "updatedAt", "date", "hydrogenConsumptionKg", "calculationPhase", "algorithmVersion", "qualityStatus", "qualityReason", "status"]
|
||||
properties:
|
||||
queryStatus:
|
||||
type: "string"
|
||||
enum: ["SUCCESS"]
|
||||
errorCode:
|
||||
type: "string"
|
||||
nullable: true
|
||||
enum: [null]
|
||||
errorMessage:
|
||||
type: "string"
|
||||
nullable: true
|
||||
enum: [null]
|
||||
statisticsStartTime:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
nullable: true
|
||||
description: "保留源时刻,输出RFC3339带+08:00;未知为null。"
|
||||
statisticsEndTime:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
nullable: true
|
||||
description: "保留源时刻,输出RFC3339带+08:00;未知为null。"
|
||||
updatedAt:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
nullable: true
|
||||
description: "保留源时刻,输出RFC3339带+08:00;未知为null。"
|
||||
date: {"$ref": "#/components/schemas/HydrogenResult/properties/date"}
|
||||
hydrogenConsumptionKg: {"$ref": "#/components/schemas/HydrogenResult/properties/hydrogenConsumptionKg"}
|
||||
calculationPhase:
|
||||
type: "string"
|
||||
nullable: true
|
||||
description: "沿用源字段含义;原可选字段缺失时输出null。"
|
||||
algorithmVersion:
|
||||
type: "string"
|
||||
nullable: true
|
||||
description: "沿用源字段含义;原可选字段缺失时输出null。"
|
||||
qualityStatus:
|
||||
type: "string"
|
||||
nullable: true
|
||||
description: "沿用源字段含义;原可选字段缺失时输出null。"
|
||||
qualityReason:
|
||||
type: "string"
|
||||
nullable: true
|
||||
description: "沿用源字段含义;原可选字段缺失时输出null。"
|
||||
status: {"$ref": "#/components/schemas/HydrogenResult/properties/status"}
|
||||
OperatingDataBlockFailure:
|
||||
type: "object"
|
||||
additionalProperties: false
|
||||
required: ["queryStatus", "status", "errorCode", "errorMessage"]
|
||||
properties:
|
||||
queryStatus:
|
||||
type: "string"
|
||||
enum: ["FAILED"]
|
||||
status:
|
||||
type: "string"
|
||||
nullable: true
|
||||
enum: [null]
|
||||
errorCode:
|
||||
type: "string"
|
||||
enum: ["REALTIME_QUERY_FAILED", "REALTIME_QUERY_TIMEOUT", "MILEAGE_QUERY_FAILED", "MILEAGE_QUERY_TIMEOUT", "HYDROGEN_QUERY_FAILED", "HYDROGEN_QUERY_TIMEOUT", "SOURCE_DATA_INVALID"]
|
||||
errorMessage:
|
||||
type: "string"
|
||||
OperatingVehicleResult:
|
||||
type: "object"
|
||||
required: ["vin", "plateNumber"]
|
||||
properties:
|
||||
vin:
|
||||
type: "string"
|
||||
plateNumber:
|
||||
type: "string"
|
||||
realtime:
|
||||
oneOf: [{"$ref": "#/components/schemas/OperatingRealtimeVehicleResultSuccess"}, {"$ref": "#/components/schemas/OperatingDataBlockFailure"}]
|
||||
dailyMileage:
|
||||
oneOf: [{"$ref": "#/components/schemas/OperatingMileageResultSuccess"}, {"$ref": "#/components/schemas/OperatingDataBlockFailure"}]
|
||||
dailyHydrogen:
|
||||
oneOf: [{"$ref": "#/components/schemas/OperatingHydrogenResultSuccess"}, {"$ref": "#/components/schemas/OperatingDataBlockFailure"}]
|
||||
OperatingDataSummary:
|
||||
type: "object"
|
||||
description: "按车辆统计所选块的queryStatus;NO_DATA/异常仍为执行成功。successCount+partialSuccessCount+failedCount=returnedCount=requestedCount。"
|
||||
required: ["requestedCount", "returnedCount", "successCount", "partialSuccessCount", "failedCount"]
|
||||
properties:
|
||||
requestedCount:
|
||||
type: "integer"
|
||||
minimum: 0
|
||||
returnedCount:
|
||||
type: "integer"
|
||||
minimum: 0
|
||||
successCount:
|
||||
type: "integer"
|
||||
minimum: 0
|
||||
partialSuccessCount:
|
||||
type: "integer"
|
||||
minimum: 0
|
||||
failedCount:
|
||||
type: "integer"
|
||||
minimum: 0
|
||||
OperatingDataResponse:
|
||||
type: "object"
|
||||
required: ["code", "message", "traceId", "queryDate", "timezone", "requestAt", "generatedAt", "data", "summary"]
|
||||
properties:
|
||||
code:
|
||||
type: "string"
|
||||
enum: ["SUCCESS"]
|
||||
message:
|
||||
type: "string"
|
||||
traceId:
|
||||
type: "string"
|
||||
queryDate:
|
||||
type: "string"
|
||||
format: "date"
|
||||
nullable: true
|
||||
description: "包含日统计时为dailyDate;仅实时为null。"
|
||||
timezone:
|
||||
type: "string"
|
||||
enum: ["Asia/Shanghai"]
|
||||
requestAt:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
generatedAt:
|
||||
type: "string"
|
||||
format: "date-time"
|
||||
data:
|
||||
type: "array"
|
||||
minItems: 0
|
||||
items: {"$ref": "#/components/schemas/OperatingVehicleResult"}
|
||||
summary: {"$ref": "#/components/schemas/OperatingDataSummary"}
|
||||
OperatingErrorResponse:
|
||||
type: "object"
|
||||
required: ["code", "message", "traceId"]
|
||||
properties:
|
||||
code:
|
||||
type: "string"
|
||||
enum: ["INVALID_REQUEST", "BATCH_SIZE_EXCEEDED", "INVALID_DATE_FORMAT", "INVALID_DATE_RANGE", "UNAUTHORIZED", "FORBIDDEN", "PAYLOAD_TOO_LARGE", "RATE_LIMIT_EXCEEDED", "INTERNAL_ERROR"]
|
||||
message:
|
||||
type: "string"
|
||||
traceId:
|
||||
type: "string"
|
||||
VehicleDailyQuery:
|
||||
type: object
|
||||
additionalProperties: false
|
||||
@@ -541,7 +1010,7 @@ components:
|
||||
endDate:
|
||||
type: string
|
||||
format: date
|
||||
description: 区间结束自然日,含当日;与 startDate 最多相隔 365 天
|
||||
description: 区间结束自然日,含当日;与 startDate 最多相隔 1095 天(含首尾共1096天)
|
||||
plateNumbers:
|
||||
type: array
|
||||
maxItems: 5000
|
||||
|
||||
Reference in New Issue
Block a user