# 车辆定位源仲裁运维说明 ## 目标 同一车辆可能同时接入 GB32960、宇通 MQTT、多个 JT808 终端。全局监控不能简单选择最后上报的数据,否则不同设备的定位误差会让车辆在地图上来回跳动。 当前生产规则如下: - 跨协议默认优先级:GB32960、YUTONG_MQTT、JT808;候选数据在 10 分钟内有效。 - JT808 按终端保存独立快照,不再由同 VIN 的多个终端互相覆盖。 - JT808 默认优先级:直连终端 20、平台转发 30、未知来源 40;数值越小越优先。 - 当前终端有 5 分的黏性权重,新终端连续 3 个有效点后才允许接管。 - 两个新鲜 JT808 来源相差超过 200 米时标记冲突并保持当前来源,避免自动跳点。 - 单终端相邻点超过 `max(500 米, 间隔秒数 × 70 米)` 时拒绝该点。 - 前端仅在定位来源未变化时执行平滑移动;来源切换时直接重置动画,避免绘制虚假轨迹。 ## 数据表 - `vehicle_realtime_location_source`:JT808 终端级实时位置和质量状态。 - `vehicle_location_source_policy`:车辆、协议、终端级启停和优先级。 - `vehicle_realtime_location`:仲裁后的协议级位置;`source_key` 表示当前终端,`location_conflict` 和 `location_conflict_distance_m` 表示冲突状态。 查看某辆车的 JT808 候选来源: ```sql SELECT source_key, phone, device_id, source_kind, source_endpoint, quality_status, quality_reason, consecutive_good_samples, latitude, longitude, received_at FROM vehicle_realtime_location_source WHERE vin = ? AND protocol = 'JT808' ORDER BY received_at DESC; ``` ## 指定权威终端 先从候选表复制完整 `source_key`。将权威终端设置为较小优先级;建议保留其他终端作为备用,而不是直接禁用。 ```sql INSERT INTO vehicle_location_source_policy (vin, protocol, source_key, enabled, priority, remark) VALUES (?, 'JT808', ?, 1, 1, '人工确认的权威定位终端') ON DUPLICATE KEY UPDATE enabled = VALUES(enabled), priority = VALUES(priority), remark = VALUES(remark); ``` 禁用确认异常的终端: ```sql INSERT INTO vehicle_location_source_policy (vin, protocol, source_key, enabled, priority, remark) VALUES (?, 'JT808', ?, 0, 100, '异常终端,停止参与定位仲裁') ON DUPLICATE KEY UPDATE enabled = VALUES(enabled), remark = VALUES(remark); ``` 恢复默认策略时删除对应配置: ```sql DELETE FROM vehicle_location_source_policy WHERE vin = ? AND protocol = 'JT808' AND source_key = ?; ``` 配置在下一条该车辆 JT808 定位消息到达时生效,不需要重启服务。 ## 监控与排查 主要观察指标: - `vehicle_realtime_store_updates_total{protocol="JT808",status="ok",store="mysql"}` - `vehicle_realtime_store_update_duration_ms_histogram{protocol="JT808",status="ok",store="mysql"}` - `vehicle_process_heap_alloc_bytes` 冲突车辆查询: ```sql SELECT vin, source_key, location_conflict, location_conflict_distance_m, latitude, longitude, received_at FROM vehicle_realtime_location WHERE protocol = 'JT808' AND location_conflict = 1 ORDER BY location_conflict_distance_m DESC; ``` 冲突期间保留当前来源是预期行为。人工确认哪个终端可信后,再写入策略表;不要通过删除实时快照或修改业务资产数据解决定位冲突。