docs(ops): record mileage reconciliation rollout
This commit is contained in:
@@ -1,9 +1,15 @@
|
|||||||
# 2026-07-20 日里程与轨迹里程核对
|
# 2026-07-20 日里程与轨迹里程核对
|
||||||
|
|
||||||
|
## 技术结论
|
||||||
|
|
||||||
|
沪A01559F 的 2026-07-19 日里程曾因统计恢复延迟缺失,现已从持久化来源证据重建;沪A62013F 的轨迹页展示了累计总里程,但 2026-07-19 没有可信移动证据,0 km 是正确的自然日日里程。统计链路现已支持在仪表累计值停止刷新、但速度和坐标证明车辆实际移动时生成低优先级 GPS 估算候选,同时拒绝静止漂移、长间隔、乱序和不合理跳点。
|
||||||
|
|
||||||
## 事件范围
|
## 事件范围
|
||||||
|
|
||||||
用户在跨自然日后反馈沪A01559F、沪A62013F“今日里程未计算但轨迹回放有里程”。核对按 `Asia/Shanghai` 自然日执行;由于反馈发生在 2026-07-20 00:00 之后,而车辆最后活动发生在前一日,本次事实窗口固定为 2026-07-19 00:00:00 至 2026-07-20 00:00:00。
|
用户在跨自然日后反馈沪A01559F、沪A62013F“今日里程未计算但轨迹回放有里程”。核对按 `Asia/Shanghai` 自然日执行;由于反馈发生在 2026-07-20 00:00 之后,而车辆最后活动发生在前一日,本次事实窗口固定为 2026-07-19 00:00:00 至 2026-07-20 00:00:00。
|
||||||
|
|
||||||
|
“轨迹里程”是轨迹查询窗口内协议总里程差,协议总里程不可用时才使用经过质量过滤的坐标累计;“当日日里程”是同一车辆、协议、来源在上海时区自然日边界上的累计里程差。轨迹卡片中的“累计里程”只是某个点位携带的仪表总值,不等于当日日里程。
|
||||||
|
|
||||||
## 生产事实
|
## 生产事实
|
||||||
|
|
||||||
| 车牌 | VIN | 轨迹事实 | 日里程结果 | 结论 |
|
| 车牌 | VIN | 轨迹事实 | 日里程结果 | 结论 |
|
||||||
@@ -26,8 +32,32 @@ stat-writer 已支持在累计里程缺失时,用有速度证据的相邻 GPS
|
|||||||
- 正向仪表累计里程优先于 GPS 估算,真实仪表值恢复后会自动覆盖估算;
|
- 正向仪表累计里程优先于 GPS 估算,真实仪表值恢复后会自动覆盖估算;
|
||||||
- 静止车辆不会因 GPS 漂移产生虚假里程。
|
- 静止车辆不会因 GPS 漂移产生虚假里程。
|
||||||
|
|
||||||
|
## 生产发布与回补验证
|
||||||
|
|
||||||
|
2026-07-20 02:31 发布 `mileage-track-reconcile-20260720023109`,9 个数据链路服务全部通过 `/readyz`,容量巡检最终为 `status=ok`,Kafka lag、消费重试队列和待处理消息均为 0。
|
||||||
|
|
||||||
|
发布后对 2026-07-17 至 2026-07-19 的 GB32960、JT808、YUTONG_MQTT 执行正式回补:
|
||||||
|
|
||||||
|
| 验证项 | 结果 |
|
||||||
|
| --- | ---: |
|
||||||
|
| 重建并写入的来源聚合 | 3,155 |
|
||||||
|
| 新增 GB32960 GPS 安全候选 | 2 |
|
||||||
|
| 新增 JT808 GPS 安全候选 | 66 |
|
||||||
|
| 新增宇通 GPS 安全候选 | 0 |
|
||||||
|
| 归一化平台来源 | 1,376 |
|
||||||
|
|
||||||
|
回补后,沪A01559F 的 2026-07-19 结果稳定为宇通 809 km、JT808 769.1 km;2026-07-20 在没有新移动证据时按静止结转明确写为 0 km。沪A62013F 的 2026-07-19 仍为宇通 0 km,且没有生成 GPS 估算候选,证明 100 米阈值和速度证据门槛没有把约 12 米的静止定位偏差放大为业务里程。
|
||||||
|
|
||||||
|
同日全量诊断没有统计管道故障;另有 2 条与本事件无关的源数据缺口,分别为一台赛格 JT808 车辆和一台宇通车辆未上报可用总里程字段,已由诊断接口持续暴露,不能用猜测值补录。
|
||||||
|
|
||||||
## 同类数据审计与补录边界
|
## 同类数据审计与补录边界
|
||||||
|
|
||||||
生产 `stats-backfill` 对 2026-07-19 全部 19 台有宇通日活动的车辆执行只读扫描,未发现除现有正向仪表里程之外、可由有效移动线段恢复的 GPS 候选。沪A01559F 的结果已经恢复,无需重复改写;沪A62013F 缺少移动证据,禁止补录正数。
|
生产 `stats-backfill` 对 2026-07-19 全部 19 台有宇通日活动的车辆执行只读扫描,未发现除现有正向仪表里程之外、可由有效移动线段恢复的 GPS 候选。沪A01559F 的结果已经恢复,无需重复改写;沪A62013F 缺少移动证据,禁止补录正数。
|
||||||
|
|
||||||
后续历史补录继续使用同一条安全规则:只有存在可用移动线段时才生成 `gps_coordinate_accumulation` 候选,不按累计总里程、位置点数量或页面展示值推断日里程。
|
后续历史补录继续使用同一条安全规则:只有存在可用移动线段时才生成 `gps_coordinate_accumulation` 候选,不按累计总里程、位置点数量或页面展示值推断日里程。
|
||||||
|
|
||||||
|
## 限制与后续监控
|
||||||
|
|
||||||
|
- GPS 估算只在仪表里程缺失或停滞时兜底,不替代 GB32960、宇通仪表里程或 JT808 设备里程。
|
||||||
|
- 超过 10 分钟的相邻点、时间倒序、隐含速度超过 220 km/h、非正速度的 GB32960/宇通点,以及不足 100 米的累计都不会形成业务候选。
|
||||||
|
- 每日巡检继续检查 `actionable_issue_total`、来源候选与最终投影差异、Kafka lag、重试队列和回补任务状态;源头完全不提供里程且没有可信移动线段时,系统必须保留缺口而不是构造数值。
|
||||||
|
|||||||
Reference in New Issue
Block a user