feat: build vehicle data platform and production pipeline

This commit is contained in:
lingniu
2026-07-14 12:35:33 +08:00
parent b452be3b94
commit bb59303a4b
270 changed files with 88016 additions and 1975 deletions

View File

@@ -32,6 +32,19 @@
- 里程统计页要像客户报告工作台先确认统计口径和闭合状态再进入轨迹复核、历史明细、CSV 导出和交付结论。
- 内部可观测性继续保留,但默认折叠在运维/依据层,避免客户把系统理解为“协议接入平台”。
## 2026-07-14 Replay 深化对标
- Verizon Connect Reveal 的官方 Replay 说明默认展示当天,并把多日回放限制为最多 7 天;多日先按天呈现 Journey再进入具体行程。这支持本项目采用“默认今天 + 单次最多 7 天 + 明确覆盖边界”避免把无限时间窗的最新切片误读成全量。参考https://reveal-help.verizonconnect.com/hc/en-us/articles/1500004436922-View-a-vehicle-or-asset-s-journey-in-Replay
- Reveal 的时间轴按 Moving、Stopped、Idling 分段,并在详情中展示时间、时长、行驶距离、地址和驾驶事件。本项目 `vehicle_locations` 没有 ignition所以只把低速小位移称为“GPS 推断停车”,不冒充熄火/怠速数据间隔作为独立分段。参考https://reveal-help.verizonconnect.com/hc/en-us/articles/360010566999-View-all-of-your-vehicles-and-assets-in-Replay
- Reveal Spotlight 的 Journey Summary 同时展示距离、行驶时间、停车次数、停车时间,详细时间轴能下钻到停车位置、移动段和超速点。因此本项目轨迹摘要增加移动/停车时长、停车/分段数关键事件与分段边界必须在地图抽稀后仍能精确定位。参考https://reveal-help.verizonconnect.com/hc/en-ca/articles/1500003198622-Review-a-vehicle-or-asset-s-activity-with-Replay-in-Spotlight
- 停车时长阈值是产品配置而非自然事实。Reveal 报表允许隐藏小于指定分钟数的停车;本项目一期先采用 3 分钟固定门槛并在 API 证据中公开后续再进入可版本化配置。参考https://reveal-help.verizonconnect.com/hc/en-us/articles/360050801533-Travel-and-stops-report
## 2026-07-14 大数据导出对标
- Geotab 官方 `GetFeed` 用持久化 `toVersion/fromVersion` 游标连续读取数据,并明确要求客户端保存版本令牌以便停止后无缝继续;单次通常最多 50,000 条。这验证了大历史数据应采用单调游标而不是越来越慢的 `OFFSET`。本项目一期对 TDengine 采用 `(ts, protocol, frame_id)` 复合前向游标和 5,000 行批次,先保证单 ECS 的稳定内存边界多实例阶段再把任务与游标迁移到数据库队列。参考https://developers.geotab.com/myGeotab/guides/dataFeed/index.html 和 https://developers.geotab.com/myGeotab/apiReference/methods/GetFeed/index.html
- Geotab 还建议“批次达到上限就立即继续、少量或空批次再退避”,说明进度必须来自服务端已处理记录而不是前端估算。本项目任务卡展示 `processedRows/totalRows`,每个成功批次才持久化进度。
- Samsara 的车队报表 API 把报表类型、时间范围和 RFC3339 时区作为显式合同,而不是导出当前页面偶然加载的行。本项目 CSV 因此写入查询起止时间、车辆范围、数据类型、协议和指标单位元数据,并使用带时区的绝对时间查询 TDengine。参考https://developers.samsara.com/reference/getfuelenergyvehiclereports
## 本项目采用的产品原则
- 三个接入来源只是数据通道,最终服务对象是车辆。