From 665122b23bbf0d446ead9791fab05cf3c6253c1e Mon Sep 17 00:00:00 2001 From: lingniu Date: Wed, 1 Jul 2026 22:08:45 +0800 Subject: [PATCH] docs: record go gateway ecs verification --- ...-gateway-verification-result-2026-07-01.md | 115 ++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 docs/operations/go-vehicle-gateway-verification-result-2026-07-01.md diff --git a/docs/operations/go-vehicle-gateway-verification-result-2026-07-01.md b/docs/operations/go-vehicle-gateway-verification-result-2026-07-01.md new file mode 100644 index 00000000..0b2d32e1 --- /dev/null +++ b/docs/operations/go-vehicle-gateway-verification-result-2026-07-01.md @@ -0,0 +1,115 @@ +# Go Vehicle Gateway 旁路验证记录 + +验证时间:2026-07-01 22:00-22:10 CST + +## 部署版本 + +- Git commit:`60ca42e` +- 镜像:`crpi-85r4m0ackrm3qpje.cn-shanghai.personal.cr.aliyuncs.com/oneos/vehicle-gateway-go:go-60ca42e-20260701220622` +- 部署方式:ECS `115.29.187.205` 上 Docker Compose 旁路部署 +- Compose 目录:`/opt/lingniu-go` + +## 旁路端口和 topic + +为了不影响现有 Java 生产服务,本次没有占用生产端口和生产 topic。 + +| 项 | 值 | +|---|---| +| GB32960 旁路 TCP | `115.29.187.205:23296 -> container :32960` | +| JT808 旁路 TCP | `115.29.187.205:18080 -> container :808` | +| Realtime API | `115.29.187.205:20210` | +| GB32960 RAW topic | `vehicle.raw.go.gb32960.v1` | +| JT808 RAW topic | `vehicle.raw.go.jt808.v1` | +| Yutong MQTT RAW topic | `vehicle.raw.go.yutong-mqtt.v1` | +| Unified topic | `vehicle.event.go.unified.v1` | + +## 容器状态 + +ECS 上四个 Go 容器均已启动: + +```text +go-vehicle-gateway Up +go-history-writer Up +go-stat-writer Up +go-realtime-api Up +``` + +## Kafka 验证 + +向 `18080` 注入 JT808 样例帧后,`vehicle.raw.go.jt808.v1` 和 +`vehicle.event.go.unified.v1` 均消费到统一 JSON envelope。 + +样例解析结果包含: + +- `protocol=JT808` +- `message_id=0x0200` +- `phone=013307795425` +- `longitude=121.069881` +- `latitude=30.590151` +- `speed_kmh=23` +- `total_mileage_km=10241.2` +- 表 27 附加项 `0x01` 原始值 `0001900C` + +## TDengine 验证 + +目标库:`lingniu_vehicle_ts` + +```text +raw_frames count = 3 +vehicle_locations count = 2 +vehicle_mileage_points count = 2 +``` + +最新 RAW 标识: + +```text +GB32960 | LNBSCB3D4R1234567 | LNBSCB3D4R1234567 | +JT808 | JT808:013307795425 | | 013307795425 +JT808 | JT808:013307795425 | | 013307795425 +``` + +说明:JT808 样例 phone 当前没有在 `vehicle_identity_binding` 中解析到 VIN,因此 +TDengine tag 使用 `vehicle_key=JT808:013307795425`。 + +## Redis 验证 + +向 `23296` 注入带 VIN 的 GB32960 合成帧后,Realtime API 可查询: + +```text +GET /api/realtime/vehicles/LNBSCB3D4R1234567 +``` + +返回字段包含: + +- `vin=LNBSCB3D4R1234567` +- `protocols=["GB32960"]` +- `online=true` +- `speed_kmh=30` +- `total_mileage_km=10000` +- `soc_percent=85` +- `longitude=121` +- `latitude=30.56` + +## MySQL 统计验证 + +向 `23296` 注入带 VIN 的 GB32960 合成帧后,`vehicle_daily_metric` 写入: + +```text +LNBSCB3D4R1234567 | 2020-07-01 | GB32960 | daily_mileage_km | 0.000 | 10000.000 | 10000.000 | 1 +LNBSCB3D4R1234567 | 2020-07-01 | GB32960 | daily_total_mileage_km | 10000.000 | 10000.000 | 10000.000 | 1 +``` + +说明:本次 GB32960 合成帧的设备时间为测试值,因此统计日期为 `2020-07-01`。 + +## 已修复问题 + +- TDengine WebSocket 普通 `INSERT` 使用参数占位符时,字符串未按预期加引号,导致语法错误。已在 `60ca42e` 中改为显式 SQL literal 转义。 +- MySQL Go DSN 中 `charset=utf8mb4%2Cutf8` 会被 driver 传给 MySQL,导致语法错误;ECS 旁路 env 已改为 `charset=utf8mb4`。 +- TDengine ECS 当前可用 root 密码与早先记录不一致,本次旁路 env 已按实际可认证值修正。 + +## 未完成 + +- 未切换真实生产端口 `32960/808`。 +- 未将真实外部 32960/808 流量转发到 Go 旁路端口。 +- 未开启宇通 MQTT 正式订阅。 +- JT808 样例未解析到 VIN,需维护 `vehicle_identity_binding` 后再验证 808 每日统计。