feat: add local hardware approval leases

This commit is contained in:
vee
2026-08-03 10:20:55 +08:00
parent 85b4740d29
commit a952f37ceb
14 changed files with 1089 additions and 25 deletions
+14
View File
@@ -69,6 +69,20 @@ COGNITIVE_AGENT_SEAT_HOME_TIMEOUT_S=120
`COGNITIVE_AGENT_HARDWARE_APPROVAL_TOKEN_REQUIRED` 默认为 `true`,生产和公网部署应保持默认值。本地受控台架调试可显式设为 `false`,此时前端隐藏令牌输入且服务端不再逐请求校验令牌;硬件启用、固件、适配器、副驾目标、物理反馈和故障 STOP_ALL 等其他门禁保持不变。
## 公网多人使用与本地审批租约
公网用户选择“真实台架”后,浏览器会创建一个保存在本机 `localStorage` 的随机终端 ID。用户填写可识别的终端名称并点击“向本地申请”;申请只进入等待队列,未获批、已拒绝或已过期的执行请求会在打开 CAN 前返回 `hardware_access_required`。
台架操作员在台架电脑打开 `http://127.0.0.1:8000/hardware-control`,可查看所有等待终端并执行:
- 同意其中一台终端;若已有使用者,新的同意会撤销旧租约。
- 拒绝等待中的申请。
- 停止当前终端的使用权;后续请求立即失效。
审批页面和 `/api/local/hardware-access*` 只接受无代理头的本机回环请求。通过公网域名、Caddy 或 SSH 反向隧道访问会返回 `403 local_access_required`,即使已经登录也不能远程审批。
同一时间只有一台终端持有租约。获批后可连续执行多项真实台架测试,每次真正取得台架执行锁时刷新活跃时间;动作正在执行时不会因超时被中途撤权。最后一次动作完成后空闲 180 秒,租约自动停止,再次使用必须重新申请。用户也可点击“停止使用”主动释放。进程重启会清空全部申请和租约,以安全关闭状态重新开始。租约负责“谁可以用”,进程级单动作互斥继续负责防止同一获批终端的并发 CAN 指令互相覆盖。
`COGNITIVE_AGENT_SEAT_AUTO_FLASH_ENABLED` 在真实硬件执行启用时默认为 `true`,上面的显式配置便于台架审计;如需禁止自动覆盖控制器固件,可明确设置为 `false`。此默认值不会影响 `dry_run`。
当前台架只公布并接受副驾目标 `passenger/front_right`。没有座位词的座椅指令默认副驾;显式主驾、主副驾或前排范围请求会在打开 CAN 前拒绝,不能静默重定向。热管理 CAN 中仍出现的 `Driver_Seat_*` 是板端既有协议字段名,不代表应用层可以控制主驾。