From 270bb163ebcf97f51d4fc07f0fbc0a236517a47d Mon Sep 17 00:00:00 2001 From: lingniu Date: Mon, 20 Jul 2026 05:41:45 +0800 Subject: [PATCH] fix(web): clarify cumulative mileage evidence --- .../2026-07-20-daily-mileage-track-reconciliation.md | 11 +++++++++++ .../apps/web/src/v2/pages/TrackPage.test.tsx | 2 ++ .../apps/web/src/v2/pages/TrackPage.tsx | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/ops/2026-07-20-daily-mileage-track-reconciliation.md b/docs/ops/2026-07-20-daily-mileage-track-reconciliation.md index dfedc28f..c5f0d889 100644 --- a/docs/ops/2026-07-20-daily-mileage-track-reconciliation.md +++ b/docs/ops/2026-07-20-daily-mileage-track-reconciliation.md @@ -60,6 +60,17 @@ stat-writer 已支持在累计里程缺失时,用有速度证据的相邻 GPS 03:56 新版本 `mileage-gps-candidate-reconcile-202607200350` 完成清理型正式回补:写入 452 个来源聚合,`subthresholdGPSCandidatesFound=1`、`subthresholdGPSCandidatesDeleted=1`。沪A56988F 当天阈值下候选及错误最终投影均已删除;剩余被选中的 GPS 候选最小值为 `0.131 km`,低于 `0.1 km` 的选中候选为 0。清理后该车显式暴露为“JT808 当日缺少新鲜总里程字段”的源数据缺口,统计管道缺口仍为 0;系统保留该缺口,不用 4 米静止漂移构造业务里程。 +## 7 月 20 日 05:40 再次复核 + +针对“轨迹回放有里程、今日里程没有计算”的再次反馈,按 `2026-07-20 00:00:00` 至 `05:40:00` 重新核对生产轨迹、实时总里程证据、来源候选和最终日里程: + +| 车牌 | 今日轨迹证据 | 今日统计 | 处理结论 | +| --- | --- | --- | --- | +| 沪A01559F | 宇通 260 个源点、259 个有效点;最高/平均速度均为 0;坐标区间累计 0 km | 宇通 `stationary_carry_forward` 0 km;仪表累计总里程 14,097 km 的最新证据仍是 7 月 19 日 21:23:59 | 已有显式 0 km 统计,无可信正向里程可补 | +| 沪A62013F | 今日 0 个源点;7 月 19 日 520 个源点最高速度仍为 0,区间里程 0 km | 7 月 19 日宇通 0 km;累计总里程 24,245 km | 今日没有上报,昨日 0 km 正确,禁止把累计值补成日里程 | + +同一时点全量诊断覆盖 480 个活跃“协议 × 车辆”项,`pipeline_issue_total=0`;仅有 1 个赛格 JT808 项缺少新鲜总里程,属于上游源数据问题,与这两辆车无关。轨迹页点位卡片同步将“累计里程”明确为“累计总里程”,并说明它不是所选时间窗里程或今日里程,避免把点位累计值误读为区间结果。 + ## 限制与后续监控 - GPS 估算只在仪表里程缺失或停滞时兜底,不替代 GB32960、宇通仪表里程或 JT808 设备里程。 diff --git a/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.test.tsx b/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.test.tsx index d70cfa9a..9f838f47 100644 --- a/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.test.tsx +++ b/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.test.tsx @@ -197,6 +197,8 @@ test('renders a map-first replay workspace and connects stop, event, and panel i expect(view.container.querySelector('.v2-track-current-card.semi-card')).toBeInTheDocument(); expect(view.container.querySelector('.v2-track-current-coverage')).toBeInTheDocument(); expect(view.container.querySelectorAll('.v2-track-current-metrics > span')).toHaveLength(4); + expect(view.container.querySelector('.v2-track-current-metrics')).toHaveTextContent('累计总里程100 km'); + expect(view.container.querySelector('.v2-track-current-metrics > span:last-child')).toHaveAttribute('title', '当前轨迹点设备上报的累计总里程,不是所选时间窗里程或今日里程'); expect(view.container.querySelector('.v2-track-current-evidence')).toHaveTextContent('JT/T 808时间窗完整3 → 3 点报警 —'); expect(view.container.querySelector('.v2-track-current-evidence .v2-track-protocol-tag')).toHaveClass('semi-tag-cyan-light'); expect(view.container.querySelector('.v2-track-coverage-float')).not.toBeInTheDocument(); diff --git a/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.tsx b/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.tsx index f6dad128..7d371a41 100644 --- a/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.tsx +++ b/vehicle-data-platform/apps/web/src/v2/pages/TrackPage.tsx @@ -515,7 +515,7 @@ export default function TrackPage() { 速度{number(current?.speedKmh ?? 0)} km/h 方向{direction(current?.directionDeg)} SOC{current?.socAvailable ? `${number(current.socPercent)}%` : '—'} - 累计里程{trackPointMileageAvailable(current) ? number(current?.totalMileageKm ?? 0) : '—'}{trackPointMileageAvailable(current) ? km : null} + 累计总里程{trackPointMileageAvailable(current) ? number(current?.totalMileageKm ?? 0) : '—'}{trackPointMileageAvailable(current) ? km : null}