Files
lingniu-vehicle-ingest/docs/ops/2026-07-20-daily-mileage-track-reconciliation.md
2026-07-20 01:27:16 +08:00

34 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-07-20 日里程与轨迹里程核对
## 事件范围
用户在跨自然日后反馈沪A01559F、沪A62013F“今日里程未计算但轨迹回放有里程”。核对按 `Asia/Shanghai` 自然日执行;由于反馈发生在 2026-07-20 00:00 之后,而车辆最后活动发生在前一日,本次事实窗口固定为 2026-07-19 00:00:00 至 2026-07-20 00:00:00。
## 生产事实
| 车牌 | VIN | 轨迹事实 | 日里程结果 | 结论 |
| --- | --- | --- | --- | --- |
| 沪A01559F | `LMRKH9AC7R1004120` | 主来源 JT8082,793 个有效点;协议总里程差 769.1 km | 宇通 809 km、JT808 769.1 km宇通按来源优先级进入业务统计 | 当日曾存在统计恢复延迟,结果已恢复 |
| 沪A62013F | `LMRKH9AC9R1004099` | 宇通 520 个源点、519 个有效点;最高速度 0轨迹汇总 0 km | 宇通 0 km累计总里程 24,245 km | 0 km 正确;轨迹点展示的是累计总里程,不得补成正向日里程 |
沪A01559F 的 2026-07-19 最终日里程在 2026-07-20 00:32 恢复。沪A62013F 的宇通总里程事件时间仍为 2026-07-18 16:482026-07-19 只有静止位置证据,因此只能保留显式 0 km。
## 根因与修复
stat-writer 已支持在累计里程缺失时,用有速度证据的相邻 GPS 坐标生成低优先级日里程候选;但累计里程字段存在且持续重复时,流程会提前进入 `skipped_same_mileage`,没有执行 GPS 累计。这会影响“车辆真实移动、仪表累计值停止刷新”的 GB32960 或宇通来源。
修复后:
- 重复累计里程仍保留为 `skipped_same_mileage` 证据;
- GB32960、宇通只有在设备速度大于 0 且坐标有效时才进入 GPS 累计;
- GPS 状态仍按 10 秒节流,并拒绝超过 10 分钟、时间倒序或隐含速度超过 220 km/h 的线段;
- 低于 100 米的累计仅保留为内部状态,不生成业务日里程候选;
- 正向仪表累计里程优先于 GPS 估算,真实仪表值恢复后会自动覆盖估算;
- 静止车辆不会因 GPS 漂移产生虚假里程。
## 同类数据审计与补录边界
生产 `stats-backfill` 对 2026-07-19 全部 19 台有宇通日活动的车辆执行只读扫描,未发现除现有正向仪表里程之外、可由有效移动线段恢复的 GPS 候选。沪A01559F 的结果已经恢复无需重复改写沪A62013F 缺少移动证据,禁止补录正数。
后续历史补录继续使用同一条安全规则:只有存在可用移动线段时才生成 `gps_coordinate_accumulation` 候选,不按累计总里程、位置点数量或页面展示值推断日里程。