Files
HSAP/docs/FLEET_MAP.md

82 lines
3.3 KiB
Markdown
Raw Normal View History

# HSAP 车队地图(演示 / T-Box
## 功能
- 实时查看采集车位置与当前趟次轨迹(**默认高德栅格底图**,国内可访问;可选 `AS_MAP_TILE_PROVIDER=osm`
- 演示环境默认注入 3 台**长沙**周边假车湘A轨迹由贝塞尔曲线密点生成弯道而非直线折线后台每 8 秒模拟 T-Box 推进
## 环境变量
| 变量 | 默认 | 说明 |
|------|------|------|
| `AS_FLEET_MAP_ENABLED` | `1` | 启用车队 API |
| `AS_FLEET_MOCK_SEED` | `1` | 首次启动无车辆时注入演示数据 |
| `AS_FLEET_MOCK_SIMULATE` | `1` | 后台模拟 GPS 推进 |
| `AS_FLEET_SIM_INTERVAL_SEC` | `8` | 模拟间隔秒 |
| `AS_TBOX_INGEST_TOKEN` | `hsap-demo-tbox-token` | T-Box 上报 Token |
| `AS_MAP_TILE_PROVIDER` | `gaode` | 底图:`gaode` / `osm`(国内勿用 osm易灰屏 |
| `AS_AMAP_KEY` | 空 | 高德 Web JS Key可选后续 AMap API |
## T-Box 与车辆关联(无需页面「新建车辆」)
关联键是 **`device_id`**(入库字段 `tbox_device_id`
1. 运维在 T-Box / 采集机配置 HSAP 上报地址与 `X-Tbox-Token`(环境变量 `AS_TBOX_INGEST_TOKEN`)。
2. 终端首次 `POST /api/v1/tbox/gps` 时,若该 `device_id` 不存在,平台**自动创建**车辆记录(可用 body 里的 `plate_no` 填车牌)。
3. 后续同一 `device_id` 的点写入当前 active 行程;`run_signal=end/idle` 时结束行程。
可选 body 字段:`plate_no``engineer``project``batch``speed_kmh``heading``ts`
Web 页仅用于查看地图、改车牌备注、GPX 补录;**不需要**手工新建车辆。
## T-Box 上报示例
```bash
curl -X POST http://127.0.0.1:8787/api/v1/tbox/gps \
-H "Content-Type: application/json" \
-H "X-Tbox-Token: hsap-demo-tbox-token" \
-d '{"device_id":"TBOX-001","lat":22.72,"lng":114.25,"speed_kmh":40,"run_signal":"active","plate_no":"湘A·采集01"}'
```
## 手动重播种 / 推进
需登录且具备 `write:fleet`(工程师/管理员):
- `POST /api/v1/fleet/mock/seed` — 仅在无车辆时创建演示数据
- `POST /api/v1/fleet/mock/reseed` — 清空并重新注入长沙演示数据
- `POST /api/v1/fleet/mock/tick` — 手动推进一轮模拟 GPS
切换区域后重新注入:
```bash
curl -X POST http://127.0.0.1:8787/api/v1/fleet/mock/reseed \
-H "Authorization: Bearer <你的 token>"
```
## Phase 2 API生产化
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/api/v1/tbox/gps/batch` | 批量上报(最多 100 点body `{"points":[...]}` |
| GET | `/api/v1/fleet/stream` | SSE 推送 `fleet.gps`(需 Redis + JWT |
| POST | `/api/v1/fleet/runs/import-csv` | CSV 补录:`lat,lng` 或带表头 `lat,lng,ts`;可选 `project`/`batch` 关联 DMS 批次 |
**超时关趟:** 车辆超过 10 分钟无新 GPS`RUN_IDLE_TIMEOUT_MIN`)时,`/fleet/live` 与 ingest 前会自动结束 active 行程。
## GPX 轨迹补录
`write:fleet`
```bash
curl -X POST http://127.0.0.1:8787/api/v1/fleet/runs/import-gpx \
-H "Authorization: Bearer <token>" \
-F vehicle_id=1 \
-F file=@track.gpx
```
前端车队页侧栏也可选择车辆上传 `.gpx` 文件。
## 前端
导航 **车队地图**(权限 `read:fleet`),页面每 15 秒轮询 live选中行程显示里程与里程碑地图红色点为里程碑。