按关节槽位驱动 13 个五轴案例的三维模型

关节契约扩为槽位制:以 LinuxCNC 联合号标识关节,轴字母降为槽位属性,
重复轴(bridge-mill 的两个 Y)、并联杆长(hexapod/pentapod)和被动槽位
(max5 第 6 关节)都能表达。v1 规则保持不变并合成 jointOrder,已保存
GLB 与既有测试不受影响。

13 个结构 GLB 由 scripts/generate_physical_case_glbs.mjs 统一重建,
可动关节均为按槽位命名的 Group 并写 userData.linuxcncJoint,共 71 个
关节,槽位数与运行目录的 joint_count 逐条一致。

新增 machine-visual-bindings.json 与纯函数模块,以 machine id 为键:
坐标字母不能作键,因为三个案例共用 XYZAB、三个共用 XYZABC。主界面切换
案例时自动装载对应模型,失败时保留内置模型并显式提示。

消除前端五关节截断:visual 适配器的 joints 改为数组并新增
jointsAuthoritative;allHomed 按 joint_count 判断;面板按 worker 断言的
machine id 查找机型。

管理器解锁:坐标与案例下拉以"存在完整视觉绑定"为启用条件,13 案例全部
可选;machine-urdf.ts 新增 generic-wasm/1 profile,AC/BC 严格校验路径
不变;新增 machine-kinematics-specs.json 保存逐关节限位,INI 未声明的
限位保持 null 而不编造。

修复三个真实缺陷:构建漏发 woodpecker/gmoccapy/qtdragon 配置目录(
DEFECT-02 根因);案例切换沿用"装载需要已上电"的门控,导致关机状态下
第二次切换被静默拒绝;重复轴机型上 React 列表键冲突。

验收:13 案例逐个切换装载成功、槽位键与绑定定义逐一一致、浏览器错误 0;
typecheck 与生产构建通过;视觉绑定、GLB 命名、关节契约、投影、store、
双画布、运动学规格漂移、11 案例 Worker 闭环、管理器浏览器回归全部通过。
证据在 coverage/glb-machine-manager/physical-drive/。

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-30 06:09:12 +08:00
parent af65b69b2c
commit db29ae625f
157 changed files with 11936 additions and 885 deletions

View File

@@ -0,0 +1,45 @@
# 使用说明书(HTML)与发布功能巡检
本目录存放线上发布站点 `https://49.232.250.35:58010/` 的用户使用说明书和配套的功能测试。
## 交付物
- [`LinuxCNC-Web-使用说明书.html`](LinuxCNC-Web-使用说明书.html):单文件中文使用说明书,22 张实测截图以 data URL 内嵌,可离线打开、可打印/导出 PDF,桌面与窄屏均无横向溢出。
已随前端产物发布:线上地址 <https://49.232.250.35:58010/manual/>,主页标题栏的"使用说明书"按钮与 Help 菜单指向同一入口。
- `manual-content.html`:说明书正文源稿(图片以相对路径引用),修改内容后重新构建即可。
- `build_manual.mjs`:把正文中的截图内联,生成最终单文件 HTML。
- `capture_deployed_manual.mjs`:线上站点功能巡检脚本,同时采集说明书截图。
- `local-walkthrough.mjs`:按说明书顺序在本地发布站点上完整走一遍标准使用流程的演练脚本(`WALKTHROUGH_HEADED=1` 可在桌面开可见窗口逐步演示),输出到 `local-walkthrough/`。
- `deployment-test.report.json`:最近一次巡检报告(步骤结果、缺陷、案例矩阵、HTTP 失败记录)。
- `local-walkthrough/walkthrough.report.json`:本地发布演练的分步结果与发现。
- `screenshots/`:说明书插图原始 PNG。
## 重新生成
```bash
# 1. 重新巡检线上站点并刷新截图与报告(约 8 分钟)
PLAYWRIGHT_MODULE=/home/mes006/.npm/_npx/e41f203b7505f1fb/node_modules/playwright/index.mjs \
node docs/user-manual/capture_deployed_manual.mjs
# 2. 重新构建单文件说明书
node docs/user-manual/build_manual.mjs
```
脚本可用 `MANUAL_URL` 指向其它地址(例如本地 `http://127.0.0.1:5174/`),用 `CHROME_PATH` 指定浏览器。
## 最近一次巡检结论(2026-10-08)
- 26 个功能步骤全部通过:启动与状态、菜单、RTCP 程序库、机床模型对话框、案例切换、急停/上电/回零、连续与增量 Jog、主轴与冷却液、MDI、DRO、倍率与图层、工具栏"载入精确案例"重新载入、程序运行/暂停/继续/停止、视图、诊断、快捷键、390 px 窄屏布局。
- 案例可用性:2026-10-29 复测 13 个案例全部可切换并装载各自结构模型(`coverage/glb-machine-manager/physical-drive/browser.report.json`,13/13,浏览器错误 0)。
- 待完成项 0 项。
## 修复记录
- 2026-10-08 `DEFECT-01` 已修复:工具栏"载入精确案例"按钮此前把点击事件对象当成案例路径(`simulation_case_unknown`)。现已在 `loadCase` 入口统一把非字符串入参回退为当前案例,线上版本 `20261008c-linuxcnc-wasm-af65b69` 验证点击后正常出现 `Loading` 并回到 `PROGRAM_LOAD acknowledged`。
注意:重新载入案例会按设计先给机床下电并复位回零状态,重新运行程序前需要重新上电并 HOME ALL。
## 本地发布演练发现
- `FINDING-01`(中):MDI 执行完成后(`Planner queued=0`、`Task mode=MDI`),"Load XYZAC boat program" 仍被门控拒绝并提示 `blocked:xyzac_motion_active`,需要切回 Manual Control 页签(发出一条模式命令刷新门控)或刷新页面才能装载程序。属于门控状态刷新滞后,不是 MDI 运动本身的问题。
- 2026-10-29 `DEFECT-02` 已修复:`woodpecker`、`gmoccapy`、`qtdragon` 三个案例配置目录进入构建复制清单,案例切换不再要求机床已上电。13 案例逐个切换验收通过,13/13 装载成功、槽位键与案例定义一致、浏览器错误 0。