69 lines
7.9 KiB
Markdown
69 lines
7.9 KiB
Markdown
# T2G 座椅前端能力测试集
|
||
|
||
本测试集验证从前端自然语言输入、意图计划、`FunctionConfig`、CAN 编译到物理反馈和整车孪生同步的完整链路。离线回归固定使用 `dry_run`;仓库另含可续跑的真实 HIL 执行器,逐条提交请求、失败后继续,并保存物理 CAN 与故障电流证据。
|
||
|
||
离线用例源位于 `tests/fixtures/seat_frontend_capabilities.json`,真实 HIL 用例源位于 `tests/fixtures/seat_frontend_hil_suite.json`,HTTP 回归测试位于 `tests/e2e/test_seat_web_api.py`。
|
||
|
||
## 覆盖范围
|
||
|
||
| 用例 | 前端输入 | 重点验证 |
|
||
| --- | --- | --- |
|
||
| THERM-01/02 | 副驾加热3档、关闭加热 | 加热开关、档位和 `0x4FA` 回读 |
|
||
| THERM-03/04 | 副驾通风2档、关闭通风 | 通风开关、档位和 `0x4FA` 回读 |
|
||
| MOTION-01 | 副驾水平位置25% | M0、`0x302≈2500`、COMPLETE/OK |
|
||
| MOTION-02 | 副驾坐盆倾角35% | M1、`0x302≈3500`、COMPLETE/OK |
|
||
| MOTION-03 | 副驾靠背130度 | M2、角度标定和真实位置反馈 |
|
||
| MOTION-04 | 副驾腿托145度 | M3、角度标定和真实位置反馈 |
|
||
| MOTION-TIME | 靠背向后移动70秒、座椅向前移动1分钟 | 秒/分钟解析、四轴时长上限钳制、提前到端点按成功返回及可见提示 |
|
||
| MOTION-FALLBACK | 靠背向后移动70度、靠背200度、水平101% | 超量程意图钳制到对应机械端点,不因越界静默拒绝 |
|
||
| COMBINED-01 | 一句话同时设置热管理和四轴 | 多操作编排、逐项反馈与失败传播 |
|
||
| DEFAULT-01 | 未指定座位的通风请求 | 自动使用副驾,不生成主驾操作 |
|
||
| SAFE-01 | 显式主驾通风请求 | 返回仅支持副驾,不得重定向或发 CAN |
|
||
| SAFE-02 | 独立腿托伸缩 | 当前台架不支持,打开CAN前拒绝 |
|
||
| SAFE-03 | 生产默认配置下错误/缺失授权令牌 | HTTP 403,CAN 不得打开;本地显式设置 `COGNITIVE_AGENT_HARDWARE_APPROVAL_TOKEN_REQUIRED=false` 时不适用 |
|
||
| RECOVERY-01 | 未烧写或固件不匹配后请求加热 | 自动烧写、重新验证、继续原动作 |
|
||
|
||
## 自动化执行
|
||
|
||
```powershell
|
||
$env:PYTHONDONTWRITEBYTECODE='1'
|
||
$env:PYTHONPATH='src;domains/seat/src'
|
||
python -m unittest tests.e2e.test_seat_web_api
|
||
```
|
||
|
||
自动测试会逐条向 `/api/requests` 提交测试集中的自然语言输入,验证所有六项真实台架能力均生成副驾目标和正确参数,并确认执行模式保持为 `dry_run`。领域集成测试另行验证未指定座位时默认副驾,以及本地解析和模型输出中的显式主驾目标都被拒绝。
|
||
|
||
真实台架服务启用后运行:
|
||
|
||
```powershell
|
||
python .\tools\run_seat_frontend_hil_suite.py `
|
||
--confirm-hardware `
|
||
--output .\artifacts\hil\seat_frontend_hil_latest.json
|
||
```
|
||
|
||
可用 `--only-group thermal|motion|combined|mode|model|safety` 只执行一组,用 `--start-at CASE-ID` 从指定用例续跑,或重复传入 `--case CASE-ID` 精确复测一个有序子集。每次运行先强制执行四轴物理归零,重建霍尔位置记忆;失败时停止后续位置测试。当前清单共 186 条:132 条热管理/移动/组合输入、33 条模式输入、6 条 GPT-5.6-sol 模糊/未知模式输入和 15 条安全拒绝输入。体验容错覆盖取暖/吹风口语、正常秒数/半秒/毫秒、零时长按最小安全时长执行、小数位置四舍五入、负位置钳制到近端、四轴独立端点、超量程备用端点,以及模糊舒适和未保存老板模式的 GPT 姿态合成。只有后排/左前/全部座椅等不受支持目标、未知物理能力或真实语义冲突保留安全拒绝。每条用例均核对:所有座椅操作为 `passenger/front_right`、物理状态来源为 `physical_can`、目标位置误差不超过 2%、联合孪生值与物理状态相同;模型用例还会防止静默降级为本地规则,时长、取整和超量程用例会核对界面可见的实际执行提示,拒绝用例会比较动作前后物理指纹。调试环境设置 `COGNITIVE_AGENT_HARDWARE_APPROVAL_TOKEN_REQUIRED=false`,执行器和前端均不要求逐次输入硬件令牌。
|
||
|
||
## 真实台架执行顺序
|
||
|
||
1. 固定座椅、清空行程、准备急停和限流电源;普通失败继续下一条,真实高电流且无 Hall 活动等安全故障停止对应危险方向。
|
||
2. 先执行 RECOVERY-01。可使用未烧写控制器,或仅在确认允许覆盖当前固件后进行;前端结果必须显示 `programmed_this_request=true`、`firmware_verified=true`,随后才出现动作反馈。
|
||
3. 依次执行 THERM-01~04,确认开、关和档位回读。
|
||
4. 让四轴处于有效位置后,执行 M0~M3 双向中间位置,并分别验证安全轴的 `0%` 会编译为 `HOME_KNOWN_RANGE (0x0B)`,而不是把累计 Hall 计数清零。
|
||
5. 单项全部通过后再执行 COMBINED-01;逐项核对 ACK、TaskState、位置、Hall、电流诊断及最终报告。
|
||
6. 最后执行 SAFE-01~03,确认所有安全用例均未产生 CAN 动作。
|
||
|
||
普通一句话请求绝不触发全行程标定。显式 `0%`/“归零”会触发已知量程回最近端,并要求 `Hall≤2` 后才通过。若其他绝对目标遇到 `PositionValid=0`,保持自动归零关闭时动作应安全失败;只有确认台架无遮挡且允许回最近端后,才能单独启用自动归零。
|
||
|
||
## 时长与超量程容错规则
|
||
|
||
- 支持“毫秒/秒/分钟”、阿拉伯数字、中文整数、全角字符和半分钟/半秒表达。按时长运动仍必须明确轴和方向;“座椅向前/向后”默认指水平轴。
|
||
- 实际下发时长为 `min(max(用户时长, 300 ms), 轴最大允许时长)`。当前 M0/M2 为 30 秒、M1 为 20 秒、M3 为 25 秒;钳制不会中止请求。
|
||
- 按时长运动提前到端点时,只有 `Near/Far Endpoint`、有效归一化位置或 Hall 端点证据与指令方向一致,才把固件的 `ENDPOINT_REACHED`、`STALL` 或 `TIMEOUT` 归一化为成功;无端点证据的堵转继续失败并执行 `STOP_ALL`。
|
||
- 相对角度、相对百分比、绝对角度和绝对百分比超出剩余行程时,语义层保留原始请求并把实际目标钳制到相应端点。界面同时显示备用目标;真实执行后显示“轴最大允许时长、已执行秒数、到达最前/最后/最上/最下方”。
|
||
|
||
2026-08-01 的 M0/M2 无 Hall 与 M1 高电流无 Hall 记录最终定位为水平、坐盆和靠背 Hall 地线断开。2026-08-02 地线恢复、四轴手工归零后,revision 6 的完整自动 HIL 结果为 33/33 通过、0 失败、0 `safety_blocked`:覆盖加热/通风全部档位、M0~M3 双向中间位置、单轴及四轴归零、组合指令和全部 11 个预设模式。临时轴向安全阻塞已从测试清单移除;报告保存于 `artifacts/hil/seat_frontend_hil_20260802_full_retest_run1.json`。
|
||
|
||
2026-08-02 补齐时长和超量程容错后,扩充后的完整 HIL 为 161/161 通过、0 失败、0 `safety_blocked`,最终清理通过;独立 CAN 复核确认加热/通风均为 0 档、M0~M3 均为 0% 且四轴 `Position_Valid=1`。其中“靠背向后移动70度”、四轴双向超长时长、水平101%、靠背200度以及“打开零重力模式”均在完整序列中通过。完整报告为 `artifacts/hil/seat_frontend_hil_20260802_full_timed_overflow.json`,新增规则的定向 14/14 报告为 `artifacts/hil/seat_frontend_hil_20260802_timed_overflow_targeted.json`。
|
||
|
||
2026-08-02 调整体验容错边界后,软件完整回归为 158/158 通过并包含 248 个参数化子用例;真实台架定向回归为 5/5 通过。定向用例验证了 50.5% 取整为 51%、-10% 钳制到 0% 机械近端、0 秒按 300 ms 最小时长执行,以及 GPT-5.6-sol 将“把座椅调舒服一点”和未保存的“老板模式”分别合成为 80/30/35/10 与 20/30/10/0 四轴目标。预检位置记忆同步和最终清理均通过,独立物理 CAN 复核确认加热/通风为 0 档、M0~M3 为 0%、四轴 `Position_Valid=1`;报告为 `artifacts/hil/seat_frontend_hil_20260802_experience_tolerance_targeted.json`。
|