Files
Cognitive_Agent/docs/testing/t2g-seat-frontend-test-suite.md

69 lines
7.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`。