Files
lingniu-vehicle-ingest/reports/mileage-all-20260915-18/REPORT.md
T

3.8 KiB
Raw Blame History

所有车辆 2026-09-1518 日里程重算

已完成全部车辆范围的四天重算,覆盖 GB32960、JT808、YUTONG_MQTT,未设置 VIN 筛选。主回补于 2026-09-18 12:5513:09 依日期顺序执行,随后完成全量结果重建、旧基线补充修正及验证。18 日为进行中的自然日,实时统计已恢复,后续上报继续更新。

范围和结果

日期 主回补写入来源统计数 有日统计的车辆数 协议日统计行数
09-15 1,270 678 1,043
09-16 1,270 657 1,016
09-17 1,262 667 1,032
09-18 1,118 595 927

主回补共写入 4,920 条来源统计,随后用正式投影逻辑重建四天全部 4,018 个 VIN/日期/协议结果。表中数量为验证快照,不是所有授权车辆数量;无上报车辆继续按既有规则结转或返回无数据,不伪造行驶里程。没有删除原始报文。

本轮额外发现并修正的回补问题

最终检查发现沪A68019F 的 JT808 09-16 日里程被算成 11642.8 km。回补优先使用原始数据查询中的 07-13 基线 10.4 km,忽略同一终端已经持久化的 09-04 基线 11653.1 km。09-16 最新累计 11653.2,正确差值为 0.1 km。

已修改 stats-backfill:即使内存里找到了历史原始记录,JT808/MQTT 也必须与数据库同来源基线比较,采用较新的记录;保持独立终端隔离。GB32960 继续采用此前修正的车辆里程表衔接规则。

在第二份备份后,事务内修正 105 条来源记录(JT808 101、MQTT 4),重建 96 个车辆日协议结果。真实累计回退的一条来源标记为 INVALID_DELTA,未强行转为正常。再次核查剩余 5 条候选只涉及基线时间更新,旧/新日里程完全一致,均为正在实时更新的 18 日记录。

部署版本:/opt/lingniu-go-native/releases/mileage-durable-baseline-20260918,更新 stats-backfill 及受控修复工具。实时 Writer 沿用已验证的 GB32960 基线修正版。

样本与验证

公网单日、区间分页和中台 HTTP 实测:

  • 粤AGH624009-08 GB32960 保留 0.2 km09-15 GB32960 为 0 km,中台默认选择 JT808 的 0.1 km。
  • 粤AGG504309-17 GB32960 为 70.7 km。
  • 沪A68019F09-16 JT808 为 0.1 km、NORMAL。
  • 09-18 两台样本响应通过当日累计减前一天累计的校验;数值会随新数据变化。

相关回归测试 go test ./cmd/stats-backfill ./cmd/mileage-baseline-repair ./internal/stats 通过,包括原始历史较旧时采用持久化较新基线、持久化缺失时保留内存基线的场景。

数据库检查:负日里程/负累计投影 0;15~17 日日统计与选中来源的日里程差异 0。对 1,024 个车辆绑定执行开放接口 Repository 核对,单日/区间一致性结果见 api-final-15-17.json。18 日会实时变化,采用同一响应内的累计差及真实公网样本验证。

Writer readyz 正常;三协议全部 Kafka 分区 lag=0,三个 worker 重试队列均为 0。临时测试应用在验证后停用并清除车辆授权。BI 历史缓存未清理。

备份与恢复

首次备份:/opt/lingniu-go-native/backups/mileage-all-20260915-18/mileage-tables.sql.gz,包含四天 4,017 条日统计、5,009 条来源记录;SHA-256dd564cef4a72fc7c8658c40dc7aa69c8f185e4c387ab313b6d10708f345b148c

补充修复前备份:/opt/lingniu-go-native/backups/mileage-all-baseline-20260918/mileage-tables.sql.gz,包含 4,018 条日统计、4,667 条来源记录;SHA-256120675f820f83cb7134d6841e5b5ef36f60d762ef701aa719f6f73ceef1498c8

两份均为限定四天、两张里程统计表的一致性快照,gzip 校验通过。恢复时先在独立库验证,避免覆盖已恢复实时写入后的新增记录。逐日日志、备份清单、部署哈希、HTTP 响应和数据库核对文件保存在本目录。历史原始累计读数未改动。