# 01-项目功能内容 ## 目标 在 `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan` 中补齐 gmoccapy 文件/宏页面、tool editor 页面、native GTK 未实现页面的诊断边界,让 Web 仿真能够明确表达哪些 gmoccapy 原生页面已经实现、哪些只做诊断映射、哪些因 XYZAB 配置或 Web 仿真边界暂不执行。 本轮不重复 working5 已完成的 HAL 输入、hard-button、模式门控、换刀回环和低频 HAL pin 工作;本轮聚焦页面级功能边界和可验收诊断。 ## 对标范围 ### gmoccapy 文件页面 - 对照 `gmoccapy.py` 和 `gmoccapy.glade` 中程序文件加载、最近文件、文件选择器、程序预览和自动运行入口。 - 对照 `[DISPLAY] PROGRAM_PREFIX`、默认 NC 文件路径、文件过滤规则和最近文件行为。 - Web 侧需要明确: - 当前可加载的演示/机床程序来源。 - 文件选择、打开、关闭、最近文件、预览、运行之间的状态边界。 - 与 Auto 模式、全轴回零、解释器 idle、运行中禁止切换文件等互锁关系。 - 未实现的 native GTK file chooser 行为需要诊断说明,不伪装成完整桌面文件管理器。 ### gmoccapy 宏页面 - 对照 gmoccapy 原生宏按钮、INI 中 macro 配置、MDI 命令发送路径和敏感状态。 - Web 侧需要明确: - 当前 XYZAB 配置是否存在可用宏。 - 宏按钮如何映射到 MDI 命令或诊断行。 - 未回零、未上电、运行中、解释器非 idle 时宏执行的门控原因。 - 未配置宏时应显示明确边界,而不是空白或误导性成功状态。 ### tool editor 页面 - 对照 gmoccapy tool editor、LinuxCNC tool table、`M6`/`M61`、刀具号、刀补、手动换刀回环的状态显示。 - Web 侧需要明确: - 当前 tool table 来源、读取状态、活动刀具、准备刀具、刀补显示。 - 可编辑字段与只读诊断字段的边界。 - Web 仿真是否允许直接写 tool table;若暂不写文件,需要显示只读/诊断原因。 - 与 working5 中 `iocontrol-loopback` 换刀语义保持一致,不重新引入 gmoccapy 手动换刀弹窗。 ### native GTK 未实现页面诊断边界 - 对照 `gmoccapy.glade` 中原生 notebooks、side buttons、bottom buttons 和 setup/user tabs/tool/touch 等页面。 - Web 侧需要明确: - 已实现页面、部分实现页面、诊断-only 页面和未实现页面清单。 - hard-button pin 对未实现 native 页面按钮的行为:只能诊断、不能伪装成真实页面动作。 - 每个未实现页面的原因、风险和未来补齐入口。 - 浏览器 UI 中提供可测试的 `data-*` 诊断节点,便于 smoke 脚本验收。 ## 当前项目入口 - Web 应用:`/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app` - gmoccapy profile:`app/src/profiles/gmoccapy-xyzab.js` - gmoccapy HAL model:`app/src/runtime/gmoccapy-hal-model.js` - gmoccapy communication model:`app/src/runtime/gmoccapy-communication-model.js` - 状态存储:`app/src/state/store.js` - gmoccapy UI shell:`app/src/ui/gmoccapy-shell.js` - Node 验证:`tests/node` - 浏览器验证:`tests/browser` ## 非目标 - 不在本轮实现完整桌面 GTK 文件选择器。 - 不在本轮引入真实 LinuxCNC 外部进程、真实 HAL pin 写入或真实 tool table 持久化,除非后续任务矩阵明确升级。 - 不回退 working5 已完成的 `GMOCAPY_HAL_PIN`、`GMOCAPY_HARDWARE_BUTTON` 和 gmoccapy XYZAB profile 行为。 - 不把未实现 native 页面包装成可操作成功路径;必须明确诊断边界。