# 客户演示账号与验收手册

更新时间：2026-07-16

本手册用于 0716 会议 P0-08：向秦总、蒲总演示客户侧四个菜单，并在不扩大车辆 Scope、不保存明文密码的前提下形成可重复验收证据。

ECS 门禁 release：`customer-demo-gate-20260716172056`

## 当前生产基线

截至 2026-07-16 17:16（Asia/Shanghai）：

- ECS 共 1,024 辆权威绑定车辆。
- 平台有 1 个管理员账号和 1 个既有客户账号。
- 当前没有能从用户名或显示名明确对应“秦总、蒲总”的两个账号。
- 会议纪要没有提供两人的登录名、初始密码、客户/租户标识和允许查看的车辆清单，因此不得猜测身份或直接扩大既有客户权限。

账号创建时必须只授予：

- `monitor`：全局监控
- `vehicles`：车辆查询
- `tracks`：轨迹回放
- `statistics`：里程查询

不得授予历史数据、告警、接入管理、运维质量或账号管理菜单。

## 建议演示车辆

以下是生产只读筛选得到的首选样本。状态会随实时上报变化，正式演示前必须重新运行门禁；若分类不再成立，应换成同类候选，而不是篡改状态。

| 场景 | 车牌 | VIN | 当前证据 |
| --- | --- | --- | --- |
| 在线多来源 | 粤AGR6863 | `LB9A32A21R0LS1464` | GB32960 + JT808，2 个来源均在线且有位置 |
| 在线单来源 | 浙F31088F | `LA9GG68L5PBAF4797` | JT808 单来源、在线且有位置 |
| 无实时位置 | 沪BH391挂 | `LA9935J21F0YWT578` | 权威车辆存在，无来源、无位置 |
| 离线但有最后位置 | 沪A09100F | `LKLG7C4E0NA774774` | JT808 来源离线，保留最后有效位置 |

历史能力预检：

| 车辆 | 2026-07-16 轨迹 | 2026-07-10 至 07-16 里程 |
| --- | --- | --- |
| 粤AGR6863 | 返回 1,600 个采样点，约 294.3 km，推荐 GB32960 | 7 个车辆日，约 542.8 km |
| 浙F31088F | 返回 1,600 个采样点，约 111.8 km，推荐 JT808 | 7 个车辆日，约 360.0 km |
| 沪A09100F | 返回 955 个点，约 31.9 km，推荐 JT808 | 7 个车辆日，约 280.82 km |

这些数字只用于证明样本具备演示数据，不是业务结算口径。

## 授权时间边界

新账号分配车辆时会以实际创建/授权时间作为历史起点：

- 轨迹只能查询授权开始后的数据。
- 里程是自然日聚合；如果授权发生在当天零点之后，第一个可完整展示的里程日是下一自然日。
- 不得为了演示直接回写或倒签 `valid_from`，否则会让客户看到真实授权前的数据并破坏审计。

因此若计划 2026-07-17 演示，应在 2026-07-16 完成账号和车辆授权；轨迹范围从实际授权时间之后开始，里程使用 2026-07-17 当日或之后数据。

## 自动验收门禁

密码只通过临时环境变量传入，不写命令行、脚本、日志或 Git：

```bash
read -s DEMO_PASSWORD
export DEMO_PASSWORD

deploy/verify-customer-demo.py \
  --base-url http://115.29.187.205:20300 \
  --username '<确认后的登录名>' \
  --expected-vins 'LB9A32A21R0LS1464,LA9GG68L5PBAF4797,LA9935J21F0YWT578,LKLG7C4E0NA774774' \
  --multi-source-vin LB9A32A21R0LS1464 \
  --single-source-vin LA9GG68L5PBAF4797 \
  --no-location-vin LA9935J21F0YWT578 \
  --offline-vin LKLG7C4E0NA774774 \
  --denied-vin LNXNEGRR7SR318212 \
  --track-vin LB9A32A21R0LS1464 \
  --track-from '2026-07-16T17:00:00+08:00' \
  --track-to '2026-07-17T17:00:00+08:00' \
  --mileage-from 2026-07-17 \
  --mileage-to 2026-07-17

unset DEMO_PASSWORD
```

门禁验证：

1. 登录成功且角色为 `customer`。
2. 菜单严格等于四个客户菜单。
3. 会话车辆数、实时列表和预期 VIN 集合完全一致。
4. 四类样本仍符合在线/离线、来源数和位置可用性分类。
5. 每台授权车辆可读取单车详情。
6. 未授权 VIN 被 403/404 或按“未解析”隐藏。
7. 指定车辆存在可回放轨迹和车辆日里程。
8. 全局监控、车辆详情、轨迹和里程 SPA 路由可加载。
9. 验收结束后主动注销临时会话。

成功输出示例：

```text
customer_demo_gate=ok username=<account> vehicles=4 menus=monitor,statistics,tracks,vehicles samples=4 track=1 mileage=1 denied=1
```

## 演示顺序

1. 使用客户账号登录，确认侧边栏只有四个菜单。
2. 全局监控搜索四个样本，解释在线多源、在线单源、无位置和离线有位置。
3. 选择粤AGR6863，进入单车详情，查看最新上报、推荐来源和全部来源差异。
4. 返回原监控上下文，再进入轨迹回放。
5. 打开里程查询，使用今天/昨天/近 7 天和协议优先级。
6. 输入未授权 VIN，确认无法读取。
7. 记录现场问题、责任人、优先级和是否阻塞交付。

## 尚需业务确认

正式创建两个账号前仍需确认：

- 两个登录名或手机号；
- 显示名称；
- 各自初始密码的交付方式；
- 两人是否共享上述 4 辆演示车，或分别使用不同车辆 Scope；
- 可选的 OneOS/RuoYi `customerRef`、`tenantRef` 映射值。

这些信息会直接改变真实客户身份和车辆数据可见范围，不能由开发侧猜测。
