完善 working6 gmoccapy 页面诊断边界
This commit is contained in:
@@ -205,3 +205,67 @@
|
||||
下一步是什么:
|
||||
|
||||
- 可继续核对 `gmoccapy.unlock-settings`、tool measurement/blockheight/probeheight、INI user messages 等更低频 HAL pins;本轮 W5-190 已完成。
|
||||
|
||||
## 2026-06-27 R7:细化 gmoccapy 设置解锁、测刀输出和 INI user message 边界
|
||||
|
||||
做了什么:
|
||||
|
||||
- 对照 `gmoccapy.py` 的 `_on_unlock_settings_changed()`、`_check_toolmeasurement()`、`on_chk_use_tool_measurement_toggled()`、`on_btn_block_height_clicked()`、`_init_user_messages()` 和 `_show_user_message()`,确认 `unlock-settings` 只在设置页选择 HAL unlock 时控制 `tbtn_setup` 敏感性;tool measurement 相关 pin 是 HAL_OUT;INI user messages 只在配置 `MESSAGE_*` 后动态创建 `messages.*` pins。
|
||||
- 对照 `gmoccapy_XYZAB.ini` 和 `gmoccapy_XYZAB.pref`,确认本配置没有 `[TOOLSENSOR]`、没有 `[DISPLAY] MESSAGE_*`,且默认 `unlock_way=use`、`use_toolmeasurement=False`、`blockheight=0.0`。
|
||||
- 在 `gmoccapy-xyzab` profile 中补齐 `gmoccapy.unlock-settings`、`gmoccapy.probeheight`、`gmoccapy.blockheight`、`gmoccapy.toolmeasurement`、`gmoccapy.searchvel`、`gmoccapy.probevel`、`gmoccapy.toolchange-number`、`gmoccapy.toolchange-confirm`,并记录 toolsensor/user messages 默认未配置原因。
|
||||
- 扩展 HAL model 和 communication model,记录 settings pin、tool measurement HAL_OUT pins、动态 user message pins、XYZAB no `[TOOLSENSOR]` 和 no `MESSAGE_*` 边界。
|
||||
- 扩展 `GMOCAPY_HAL_PIN`:模拟 `unlock-settings` 在默认 `unlock_way=use` 下忽略、在 HAL unlock 模式下按 level 控制 setup;tool measurement pins 作为诊断输出记录;`messages.*` 在当前 XYZAB 无配置时返回明确 operator message。
|
||||
- 在 gmoccapy UI 诊断中新增 `HAL settings` 和 `HAL tool/user` 行,并补充 Node/浏览器断言。
|
||||
|
||||
改了哪些文件:
|
||||
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/profiles/gmoccapy-xyzab.js`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/runtime/gmoccapy-communication-model.js`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/runtime/gmoccapy-hal-model.js`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/state/store.js`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_communication_model.mjs`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_hal_model.mjs`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_gates.mjs`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_profile.mjs`
|
||||
- `/home/meswork/cnc_wams/work/working5/03-推进台账.md`
|
||||
- `/home/meswork/cnc_wams/work/working5/04-任务矩阵.md`
|
||||
- `/home/meswork/cnc_wams/work/working5/05-验收证据.md`
|
||||
- `/home/meswork/cnc_wams/work/working5/06-决策记录.md`
|
||||
|
||||
验证了什么:
|
||||
|
||||
- `node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs` 通过。
|
||||
- `bash ../tests/browser/verify_gmoccapy_shell_browser.sh` 通过。
|
||||
- `npm run smoke:node` 通过。
|
||||
- `npm run build && npm run smoke` 通过。
|
||||
- `git diff --check -- web-rtcp-5axis-sim-plan work/working5` 通过,无输出。
|
||||
|
||||
下一步是什么:
|
||||
|
||||
- W5-200 已完成。后续如继续深化,可转向 gmoccapy 文件/宏页面、tool editor 页面或 native GTK 未实现页面的诊断边界,但当前任务矩阵内 HAL 输入细化项已闭环。
|
||||
|
||||
## 2026-06-27 R8:working5 最终复核与验收收口
|
||||
|
||||
做了什么:
|
||||
|
||||
- 重新读取 `working5` README、功能内容、开发步骤、推进台账、任务矩阵、验收证据和决策记录,确认 W5-001 到 W5-900 均已闭环。
|
||||
- 核对当前工作区改动范围,确认源码和测试改动仍集中在 gmoccapy XYZAB profile、HAL/communication model、store、UI shell 和对应 Node/browser 验收。
|
||||
- 在当前工作区重新执行完整 Node 冒烟、静态构建和浏览器冒烟,确认历史记录对应的实现仍可通过。
|
||||
|
||||
改了哪些文件:
|
||||
|
||||
- `/home/meswork/cnc_wams/work/working5/03-推进台账.md`
|
||||
- `/home/meswork/cnc_wams/work/working5/05-验收证据.md`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md`
|
||||
|
||||
验证了什么:
|
||||
|
||||
- `npm run smoke:node` 通过,关键输出包含 `gmoccapy_xyzab_profile_smoke=ok`、`gmoccapy_communication_model_smoke=ok`、`gmoccapy_hal_model_smoke=ok`、`gmoccapy_xyzab_gates_smoke=ok`、`linear_unit_conversion_smoke=ok`。
|
||||
- `npm run build` 通过,输出 `gmoccapy_static_build=ok`。
|
||||
- `npm run smoke` 通过,输出 `gmoccapy_shell_smoke=ok`、`gmoccapy_dist_smoke=ok`。
|
||||
|
||||
下一步是什么:
|
||||
|
||||
- `working5` 已按当前任务矩阵完成并复核通过;本轮不新增后续实现任务。
|
||||
|
||||
@@ -17,4 +17,5 @@
|
||||
| W5-170 | 细化外部 HAL hard-button pin 与 UI action 映射 | 完成 | profile/panel schema、HAL model、communication model、store 和浏览器 DOM 均明确 `gmoccapy.v-button.button-0..6`、`gmoccapy.h-button.button-0` 等硬件按钮 pin 的 rising-edge、可见敏感按钮映射和 Web gate 行为;相关 Node、构建、浏览器 smoke 通过 |
|
||||
| W5-180 | 细化 ignore-limits、optional-stop、blockdelete 与 override HAL input pin 语义 | 完成 | profile、HAL model、communication model、store 和浏览器 UI 均明确 `gmoccapy.ignore-limits`、`gmoccapy.optional-stop`、`gmoccapy.blockdelete`、override counts/direct-value/reset pins 的 Web 映射;Node、构建、浏览器 smoke 通过 |
|
||||
| W5-190 | 细化 jog、jog-increment、delete-message、warning-confirm HAL input pin 语义 | 完成 | profile、HAL model、communication model、store 和浏览器 UI 均明确 `gmoccapy.jog.axis.*`、`gmoccapy.jog.jog-inc-*`、`gmoccapy.jog.turtle-jog`、`gmoccapy.delete-message`、`gmoccapy.warning-confirm` 的 Web 映射;Node、构建、浏览器 smoke 通过 |
|
||||
| W5-200 | 细化 unlock-settings、tool measurement 和 INI user messages 低频 HAL pin 边界 | 完成 | profile、HAL model、communication model、store 和浏览器 UI 均明确 `gmoccapy.unlock-settings`、`gmoccapy.probeheight/blockheight/toolmeasurement/searchvel/probevel`、动态 `gmoccapy.messages.*` pins 的源码边界和 XYZAB 默认未启用原因;Node、构建、浏览器 smoke 通过 |
|
||||
| W5-900 | 更新验收证据和决策记录 | 完成 | 命令、结果、修改原因和后续项已记录 |
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
| EV-W5-181 | W5-020/W5-030/W5-040/W5-180 | 命令 | `npm run smoke:node`、`npm run build && npm run smoke` | 通过,完整 Node、静态构建、浏览器 gmoccapy shell/dist smoke 均覆盖新增 HAL input/override 诊断和 Web 控件 |
|
||||
| EV-W5-190 | W5-150/W5-190 | 命令 | `node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs`、`node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs`、`bash ../tests/browser/verify_gmoccapy_shell_browser.sh` | 通过,验证 `GMOCAPY_HAL_PIN` 对 jog axis press/release、jog increment rising-edge、turtle jog、delete-message、warning-confirm pins 的映射和 UI 诊断 |
|
||||
| EV-W5-191 | W5-020/W5-030/W5-040/W5-190 | 命令 | `npm run smoke:node`、`npm run build && npm run smoke` | 通过,完整 Node、静态构建、浏览器 gmoccapy shell/dist smoke 均覆盖新增 jog/message HAL pin 诊断和 Web 行为 |
|
||||
| EV-W5-200 | W5-150/W5-200 | 命令 | `node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs`、`bash ../tests/browser/verify_gmoccapy_shell_browser.sh` | 通过,验证 `gmoccapy.unlock-settings`、tool measurement HAL_OUT pins、动态 `messages.*` pin 边界和 UI 诊断 |
|
||||
| EV-W5-201 | W5-020/W5-030/W5-040/W5-200 | 命令 | `npm run smoke:node`、`npm run build && npm run smoke` | 通过,完整 Node、静态构建、浏览器 gmoccapy shell/dist smoke 均覆盖新增 settings/tool/user-message 低频 HAL pin 诊断和 Web 行为 |
|
||||
| EV-W5-900 | W5-900 | 命令 | `npm run smoke:node`、`npm run build`、`npm run smoke` | 通过,最终复核确认 working5 当前任务矩阵闭环,Node、静态构建、浏览器冒烟均在当前工作区通过 |
|
||||
|
||||
## 命令记录
|
||||
|
||||
@@ -297,6 +300,119 @@ npm run build && npm run smoke
|
||||
- `data-gmoccapy-hal="message-inputs"` 必须包含 `3 message pins`、`delete-message rising-edge-only`、`warning-confirm level-polled`。
|
||||
- 通过 `window.webRtcp5AxisSimulation.dispatch({ type: "GMOCAPY_HAL_PIN", ... })` 验证浏览器内 jog increment、axis jog press/release、turtle jog、delete-message 和 warning-confirm 状态。
|
||||
|
||||
### 2026-06-27 R7
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs && node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs
|
||||
```
|
||||
|
||||
结果:通过,输出:
|
||||
|
||||
- `gmoccapy_hal_model_smoke=ok`
|
||||
- `gmoccapy_communication_model_smoke=ok`
|
||||
- `gmoccapy_xyzab_profile_smoke=ok`
|
||||
- `gmoccapy_xyzab_gates_smoke=ok`
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
bash ../tests/browser/verify_gmoccapy_shell_browser.sh
|
||||
```
|
||||
|
||||
结果:通过,输出:
|
||||
|
||||
- `gmoccapy_shell_smoke=ok`
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run smoke:node
|
||||
```
|
||||
|
||||
结果:通过。
|
||||
|
||||
关键输出摘要:
|
||||
|
||||
- `gmoccapy_xyzab_profile_smoke=ok`
|
||||
- `gmoccapy_communication_model_smoke=ok`
|
||||
- `gmoccapy_hal_model_smoke=ok`
|
||||
- `gmoccapy_xyzab_gates_smoke=ok`
|
||||
- `linear_unit_conversion_smoke=ok`
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run build && npm run smoke
|
||||
```
|
||||
|
||||
结果:通过,输出:
|
||||
|
||||
- `gmoccapy_static_build=ok`
|
||||
- `gmoccapy_shell_smoke=ok`
|
||||
- `gmoccapy_dist_smoke=ok`
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams
|
||||
git diff --check -- web-rtcp-5axis-sim-plan work/working5
|
||||
```
|
||||
|
||||
结果:通过,无输出。
|
||||
|
||||
本轮新增 Node 断言:
|
||||
|
||||
- `gmoccapy.unlock-settings` 是 settings pin;默认 `unlock_way=use` 时只记录 pin level,不锁定 setup;显式 HAL unlock 模式下按 level 控制 setup sensitive。
|
||||
- `gmoccapy.probeheight`、`gmoccapy.blockheight`、`gmoccapy.toolmeasurement`、`gmoccapy.searchvel`、`gmoccapy.probevel` 记录为 HAL_OUT tool measurement pins。
|
||||
- `gmoccapy_XYZAB.ini` 无 `[TOOLSENSOR]`,所以 auto tool measurement 默认禁用;`gmoccapy_XYZAB.pref` 默认 `use_toolmeasurement=False`、`blockheight=0.0`。
|
||||
- `gmoccapy_XYZAB.ini` 无 `[DISPLAY] MESSAGE_*`,所以动态 `gmoccapy.messages.*` pins 不创建;Web 对 `messages.*` dispatch 返回明确 operator message。
|
||||
|
||||
本轮新增浏览器断言:
|
||||
|
||||
- `data-gmoccapy-hal="settings-inputs"` 必须包含 `1 settings pins`、`unlock-settings level-driven`、`unlock-way use`、`setup sensitive`。
|
||||
- `data-gmoccapy-hal="tool-user-inputs"` 必须包含 `5 tool measurement HAL_OUT pins`、`XYZAB no TOOLSENSOR`、`0 user message pins`、`no MESSAGE_*`。
|
||||
- 通过 `window.webRtcp5AxisSimulation.dispatch({ type: "GMOCAPY_HAL_PIN", ... })` 验证浏览器内 `unlock-settings` 默认忽略和 HAL unlock level 行为、`blockheight` 诊断记录、`messages.*` 无配置提示。
|
||||
|
||||
### 2026-06-27 R8
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run smoke:node
|
||||
```
|
||||
|
||||
结果:通过。
|
||||
|
||||
关键输出摘要:
|
||||
|
||||
- `linuxcnc_kinematics_runtime_smoke=ok`
|
||||
- `linuxcnc_interpreter_runtime_smoke=ok`
|
||||
- `linuxcnc_ini_runtime_smoke=ok`
|
||||
- `linuxcnc_task_hal_runtime_smoke=ok`
|
||||
- `real_linuxcnc_5axis_program_cases_smoke=ok`
|
||||
- `gmoccapy_xyzab_profile_smoke=ok`
|
||||
- `gmoccapy_communication_model_smoke=ok`
|
||||
- `gmoccapy_hal_model_smoke=ok`
|
||||
- `gmoccapy_xyzab_gates_smoke=ok`
|
||||
- `linear_unit_conversion_smoke=ok`
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run build
|
||||
```
|
||||
|
||||
结果:通过,输出 `gmoccapy_static_build=ok`。
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run smoke
|
||||
```
|
||||
|
||||
结果:通过,输出:
|
||||
|
||||
- `gmoccapy_shell_smoke=ok`
|
||||
- `gmoccapy_dist_smoke=ok`
|
||||
|
||||
本轮复核结论:
|
||||
|
||||
- `04-任务矩阵.md` 中 W5-001 到 W5-900 均为完成。
|
||||
- 当前源码、测试和文档状态可通过完整 Node、构建和浏览器冒烟验收。
|
||||
|
||||
## 页面/截图/report/job 记录
|
||||
|
||||
本轮未生成截图、PDF、job_id 或 report_id。浏览器验收由 headless Chromium smoke 脚本完成。
|
||||
|
||||
@@ -136,3 +136,28 @@
|
||||
- `GMOCAPY_HAL_PIN` 现在覆盖 jog axis press/release、jog increment selection、turtle jog、delete-message 和 warning-confirm。
|
||||
- HAL model 和 communication model 现在能分别呈现 hard-button、operator/override input、jog input、message input 的不同语义。
|
||||
- UI 诊断增加 `HAL jog` 和 `HAL messages`,浏览器 smoke 通过 DOM 和公开 dispatch 验证这些语义。
|
||||
|
||||
## DR-W5-007:低频 settings/tool/user-message HAL pins 按配置启用边界建模
|
||||
|
||||
日期:2026-06-27
|
||||
|
||||
决策:
|
||||
|
||||
- `gmoccapy.unlock-settings` 作为 level-driven settings input pin 记录;默认 `gmoccapy_XYZAB.pref` 为 `unlock_way=use`,所以 Web 中默认只记录 pin level,不把 setup 锁定或解锁。
|
||||
- 当测试显式模拟 HAL unlock 模式时,`unlock-settings` 才按 pin level 控制 `setupSensitive`,对应源码 `_on_unlock_settings_changed()` 对 `rbt_hal_unlock` 的条件判断。
|
||||
- `gmoccapy.probeheight`、`gmoccapy.blockheight`、`gmoccapy.toolmeasurement`、`gmoccapy.searchvel`、`gmoccapy.probevel` 作为 tool measurement HAL_OUT pins 记录,不伪装成外部 HAL 输入。
|
||||
- 当前 `gmoccapy_XYZAB.ini` 没有 `[TOOLSENSOR]`,所以 profile、HAL model 和 UI 诊断明确自动测刀默认禁用,而不是暴露为可操作流程。
|
||||
- 动态 `gmoccapy.messages.*` pins 只在 INI 存在 `MESSAGE_*` 配置时创建;当前 XYZAB 没有这些配置,所以 Web 对 `messages.*` dispatch 返回“未配置”的明确 operator message。
|
||||
|
||||
原因:
|
||||
|
||||
- `gmoccapy.py` 中 `_on_unlock_settings_changed()` 会先检查初始化状态,再检查 `rbt_hal_unlock` 或 user mode;未选择 HAL unlock 时 pin 变化不应改变 setup 页面可用性。
|
||||
- `_check_toolmeasurement()` 需要有效 `[TOOLSENSOR]` 数据;缺少探针配置时会显示禁用提示、关闭 `chk_use_tool_measurement` 并使其不敏感。
|
||||
- `on_chk_use_tool_measurement_toggled()`、`on_spbtn_probe_height_value_changed()`、`on_btn_block_height_clicked()` 都是 GUI/prefs 侧写 HAL_OUT pins,不是外部 HAL 驱动 GUI 的输入边界。
|
||||
- `_init_user_messages()` 只有从 INI 读到 user messages 才创建 `messages.<pinname>`、`messages.<pinname>-waiting`、`messages.<pinname>-response`;当前 `gmoccapy_XYZAB.ini` 没有 `MESSAGE_*` 项。
|
||||
|
||||
影响:
|
||||
|
||||
- `gmoccapy-xyzab` profile 补齐 settings/tool measurement/toolchange confirm 相关 pins,并记录 no `[TOOLSENSOR]` 与 no `MESSAGE_*` 原因。
|
||||
- HAL model 和 communication model 能展示 settings input、tool measurement HAL_OUT、dynamic user message 三类不同边界。
|
||||
- Store 和浏览器 smoke 覆盖 `unlock-settings` 默认忽略、HAL unlock level 控制、`blockheight` 诊断记录和 `messages.*` 未配置提示。
|
||||
|
||||
64
work/working6/01-项目功能内容.md
Normal file
64
work/working6/01-项目功能内容.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# 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 页面包装成可操作成功路径;必须明确诊断边界。
|
||||
87
work/working6/02-项目程序开发详细步骤.md
Normal file
87
work/working6/02-项目程序开发详细步骤.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# 02-项目程序开发详细步骤
|
||||
|
||||
## 步骤 1:建立工作控制文件
|
||||
|
||||
- 创建 README、功能内容、开发步骤、推进台账、任务矩阵、验收证据、决策记录。
|
||||
- 将 working5 后续深化方向拆分为文件/宏页面、tool editor 页面、native GTK 未实现页面诊断边界三条主线。
|
||||
|
||||
## 步骤 2:读取基准与现有实现
|
||||
|
||||
- 读取 `work/working5` 的任务矩阵、决策记录和验收证据,确认不可回退的既有行为。
|
||||
- 读取 `work/working3/gmoccapy_XYZAB_execution_analysis.md`。
|
||||
- 读取 LinuxCNC gmoccapy 源码和 Glade 文件:
|
||||
- `linuxcnc/src/emc/usr_intf/gmoccapy/gmoccapy.py`
|
||||
- `linuxcnc/src/emc/usr_intf/gmoccapy/gmoccapy.glade`
|
||||
- `linuxcnc/src/emc/usr_intf/gmoccapy/dialogs.py`
|
||||
- 读取 Web 项目 profile、runtime、state、UI shell 和 tests。
|
||||
|
||||
## 步骤 3:建立页面/按钮/状态映射
|
||||
|
||||
- 梳理 native gmoccapy notebook 页面和 Web gmoccapy shell 当前页面。
|
||||
- 建立文件页面映射:
|
||||
- native file chooser、program preview、recent files、program run action。
|
||||
- Web program source、preview、load/run/reset 状态。
|
||||
- 建立宏页面映射:
|
||||
- INI macro 配置、宏按钮、MDI command、执行 gate。
|
||||
- XYZAB 未配置宏时的诊断边界。
|
||||
- 建立 tool editor 映射:
|
||||
- tool table、active/prepared tool、offset、M6/M61 状态。
|
||||
- 只读诊断与可编辑字段边界。
|
||||
- 建立未实现 native 页面清单:
|
||||
- setup/user tabs/tool/touch 等按钮和页面。
|
||||
- hard-button pin 与诊断-only action 的映射。
|
||||
|
||||
## 步骤 4:执行现有测试
|
||||
|
||||
- 在 `app` 下运行 `npm run smoke:node`。
|
||||
- 运行构建:`npm run build`。
|
||||
- 运行浏览器冒烟:`npm run smoke`。
|
||||
- 如测试失败,先判断是环境问题、既有改动问题还是本轮新增行为问题。
|
||||
|
||||
## 步骤 5:补充模型和状态
|
||||
|
||||
- 在 profile 或 runtime model 中补充 gmoccapy 页面级 schema:
|
||||
- file page capability。
|
||||
- macro page capability。
|
||||
- tool editor capability。
|
||||
- native GTK page implementation matrix。
|
||||
- 在 store 中补充必要 action 或诊断状态:
|
||||
- 文件页面的 load/recent/preview gate。
|
||||
- 宏执行的 MDI gate 或未配置提示。
|
||||
- tool editor 的只读诊断状态。
|
||||
- native 未实现页面的 operator message。
|
||||
- 保持 action 命名和 existing gate 风格一致,避免绕过 LinuxCNC task policy。
|
||||
|
||||
## 步骤 6:补充 UI 诊断
|
||||
|
||||
- 在 gmoccapy shell 中增加可测试的诊断行或页面区块。
|
||||
- 所有新增诊断必须带稳定 `data-*` 属性。
|
||||
- 未实现页面必须显示“诊断-only/未实现/配置未启用”的明确状态。
|
||||
- 文件/宏/tool editor 控件不得在不满足 gate 时显示为可执行。
|
||||
|
||||
## 步骤 7:补充测试
|
||||
|
||||
- Node 测试:
|
||||
- profile 页面 schema 测试。
|
||||
- communication model 页面路径测试。
|
||||
- store gate 和 operator message 测试。
|
||||
- Browser 测试:
|
||||
- DOM 诊断行存在。
|
||||
- `data-*` 内容包含关键边界词。
|
||||
- 公开 dispatch 或按钮点击能触发预期状态和 gate。
|
||||
- 如改动 UI,运行 `npm run build && npm run smoke`。
|
||||
|
||||
## 步骤 8:回归验收
|
||||
|
||||
- 运行本轮相关最小测试。
|
||||
- 运行完整 `npm run smoke:node`。
|
||||
- 运行 `npm run build`。
|
||||
- 运行 `npm run smoke`。
|
||||
- 运行 `git diff --check -- web-rtcp-5axis-sim-plan work/working6`。
|
||||
|
||||
## 步骤 9:更新台账和证据
|
||||
|
||||
- 更新 `03-推进台账.md`。
|
||||
- 更新 `04-任务矩阵.md` 中任务状态。
|
||||
- 更新 `05-验收证据.md` 中命令、页面、截图、报告或输出摘要。
|
||||
- 如涉及架构、对标边界或兼容性取舍,更新 `06-决策记录.md`。
|
||||
94
work/working6/03-推进台账.md
Normal file
94
work/working6/03-推进台账.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# 03-推进台账
|
||||
|
||||
## 2026-06-27 R1:创建 working6 控制文件
|
||||
|
||||
做了什么:
|
||||
|
||||
- 创建 `working6` 工作目录。
|
||||
- 建立 README、功能内容、开发步骤、推进台账、任务矩阵、验收证据和决策记录。
|
||||
- 将 working5 的可选深化方向拆分为 gmoccapy 文件/宏页面、tool editor 页面、native GTK 未实现页面诊断边界三条主线。
|
||||
|
||||
改了哪些文件:
|
||||
|
||||
- `/home/meswork/cnc_wams/work/working6/README.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/01-项目功能内容.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/02-项目程序开发详细步骤.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/03-推进台账.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/04-任务矩阵.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/05-验收证据.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/06-决策记录.md`
|
||||
|
||||
验证了什么:
|
||||
|
||||
- 待执行现有 Node、构建和浏览器冒烟测试。
|
||||
- 待读取 gmoccapy 源码、Glade、INI 和当前 Web 实现后开始 W6-010。
|
||||
|
||||
下一步是什么:
|
||||
|
||||
- 按 `04-任务矩阵.md` 从 W6-010 开始,先建立 native gmoccapy 页面到 Web 模块的映射,再执行基线测试。
|
||||
|
||||
## 2026-06-27 R2:实现 gmoccapy 页面级诊断边界
|
||||
|
||||
做了什么:
|
||||
|
||||
- 对照 LinuxCNC `gmoccapy.py`、`gmoccapy.glade` 和 `gmoccapy_XYZAB.ini`,确认文件页使用 `IconFileSelection1`,宏页来自 `[MACROS]` 的 5 个 O-word MDI 宏,tool editor 读取 `tool.tbl` 并可在原生 GTK 中 add/delete/reload/save/change tool。
|
||||
- 在 Web profile、HAL model 和 communication model 中增加页面级 schema:file page、macro page、tool editor page、native GTK implementation matrix。
|
||||
- 在 store 中增加 `GMOCAPY_NATIVE_PAGE`、`GMOCAPY_PAGE_ACTION`、`GMOCAPY_RUN_MACRO`、`GMOCAPY_TOOL_EDITOR_ACTION`,用于表达 native 页面诊断、文件页边界、宏 MDI gate 和 tool editor 只读/写回阻塞。
|
||||
- 在 gmoccapy UI 诊断中新增 `data-gmoccapy-page="file"`、`macros`、`tool-editor`、`matrix` 四类稳定 DOM 证据。
|
||||
- 修正 hard-button 对 `tbtn_user_tabs`、`tbtn_setup`、`btn_touch`、`btn_tool`、`tbtn_switch_mode` 的 Web 行为:进入结构化 diagnostic-only 页面诊断,不再伪装为普通 Web Jog 或已实现工具页。
|
||||
|
||||
改了哪些文件:
|
||||
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/profiles/gmoccapy-xyzab.js`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/runtime/gmoccapy-communication-model.js`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/runtime/gmoccapy-hal-model.js`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/state/store.js`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app/src/ui/gmoccapy-shell.js`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/browser/gmoccapy_shell_smoke.html`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_communication_model.mjs`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_hal_model.mjs`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_gates.mjs`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/tests/node/verify_gmoccapy_xyzab_profile.mjs`
|
||||
- `/home/meswork/cnc_wams/work/working6/03-推进台账.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/04-任务矩阵.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/05-验收证据.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/06-决策记录.md`
|
||||
|
||||
验证了什么:
|
||||
|
||||
- 基线和回归 `npm run smoke:node` 均通过。
|
||||
- 基线和回归 `npm run build` 均通过。
|
||||
- 基线和回归 `npm run smoke` 均通过。
|
||||
- 新增最小测试 `node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs` 通过。
|
||||
- 新增最小测试 `node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs` 通过。
|
||||
- `bash ../tests/browser/verify_gmoccapy_shell_browser.sh` 通过。
|
||||
|
||||
下一步是什么:
|
||||
|
||||
- 当前 W6-010 到 W6-160、W6-900 已完成。后续如继续深化,可新增 working7 或扩展 W6 任务,转向真实文件浏览器交互、宏参数输入 UI、tool table 安全写回等可执行能力。
|
||||
|
||||
## 2026-06-27 R3:接续复核 working6 完成状态
|
||||
|
||||
做了什么:
|
||||
|
||||
- 接续上一轮后,重新读取 `work/working6` 的 README、任务矩阵、推进台账、验收证据、功能内容、开发步骤和决策记录。
|
||||
- 复核实际代码差异,确认 profile、HAL model、communication model、store、gmoccapy UI shell 和 Node/browser tests 已覆盖 W6 文件页、宏页、tool editor 页和 native GTK 页面诊断边界。
|
||||
- 复核 hard-button 对 `setup`、`user-tabs`、`touch-off`、`tool-editor`、`switchkins-mode` 的行为已进入 `GMOCAPY_NATIVE_PAGE` 结构化诊断,不再伪装为已实现页面。
|
||||
- 执行最终完整回归和空白检查。
|
||||
|
||||
改了哪些文件:
|
||||
|
||||
- `/home/meswork/cnc_wams/work/working6/03-推进台账.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/05-验收证据.md`
|
||||
- `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/gptlog-process/gpdlog.md`
|
||||
|
||||
验证了什么:
|
||||
|
||||
- `npm run smoke:node` 通过,包含 `gmoccapy_xyzab_profile_smoke=ok`、`gmoccapy_communication_model_smoke=ok`、`gmoccapy_hal_model_smoke=ok`、`gmoccapy_xyzab_gates_smoke=ok`。
|
||||
- `npm run build` 通过,输出 `gmoccapy_static_build=ok`。
|
||||
- `npm run smoke` 通过,输出 `gmoccapy_shell_smoke=ok`、`gmoccapy_dist_smoke=ok`。
|
||||
- `git diff --check -- web-rtcp-5axis-sim-plan work/working6` 通过,无输出。
|
||||
|
||||
下一步是什么:
|
||||
|
||||
- `working6` 当前任务闭环。后续若继续深化,建议新建 `working7`,聚焦真实文件浏览交互、宏参数输入 UI 或 tool table 安全写回的设计与实现。
|
||||
17
work/working6/04-任务矩阵.md
Normal file
17
work/working6/04-任务矩阵.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# 04-任务矩阵
|
||||
|
||||
| 任务编号 | 任务 | 状态 | 验收标准 |
|
||||
| --- | --- | --- | --- |
|
||||
| W6-001 | 创建 working6 工作控制文件 | 完成 | README 和 01-06 文件存在,内容可指导后续推进 |
|
||||
| W6-010 | 建立 gmoccapy native 页面到 Web 模块映射 | 完成 | 文件/宏/tool editor/native 未实现页面已映射到 profile、communication model、store、UI shell 和 tests |
|
||||
| W6-020 | 执行当前 Node 冒烟基线 | 完成 | `npm run smoke:node` 通过 |
|
||||
| W6-030 | 执行当前构建基线 | 完成 | `npm run build` 通过 |
|
||||
| W6-040 | 执行当前浏览器冒烟基线 | 完成 | `npm run smoke` 通过 |
|
||||
| W6-100 | 细化 gmoccapy 文件页面诊断边界 | 完成 | profile/model/store/UI 明确文件选择、最近文件、预览、加载、运行 gate 和 native file chooser 边界;Node/browser 测试通过 |
|
||||
| W6-110 | 细化 gmoccapy 宏页面诊断边界 | 完成 | 明确 XYZAB 5 个宏配置、宏按钮到 MDI 的 gate、运行中/未上电拦截;Node/browser 测试通过 |
|
||||
| W6-120 | 细化 tool editor 页面诊断边界 | 完成 | 明确 tool table 来源、active/prepared tool、offset、只读/可编辑边界、与 iocontrol-loopback 换刀语义一致;Node/browser 测试通过 |
|
||||
| W6-130 | 建立 native GTK 未实现页面 implementation matrix | 完成 | 已实现、部分实现、diagnostic-only、native-only 页面清单可在 model/UI 中稳定读取;浏览器 DOM 有 `data-*` 诊断 |
|
||||
| W6-140 | 细化 hard-button 对未实现 native 页面按钮的行为 | 完成 | `tbtn_setup`、user tabs、tool/touch 等未实现按钮只触发 `GMOCAPY_NATIVE_PAGE` 诊断,不伪装成已实现页面;store/browser 测试通过 |
|
||||
| W6-150 | 汇总 gmoccapy 页面级通信模型 | 完成 | communication model 展示 file/macro/tool/native page 的命令、状态、错误/诊断路径;Node 测试通过 |
|
||||
| W6-160 | 增加浏览器 UI 诊断验收 | 完成 | gmoccapy shell smoke 验证 file/macro/tool/native diagnostic rows、关键 `data-*` 属性和 gate 文案 |
|
||||
| W6-900 | 更新验收证据和决策记录 | 完成 | 命令、结果、修改原因、边界判断和后续项已记录 |
|
||||
186
work/working6/05-验收证据.md
Normal file
186
work/working6/05-验收证据.md
Normal file
@@ -0,0 +1,186 @@
|
||||
# 05-验收证据
|
||||
|
||||
## 证据索引
|
||||
|
||||
| 证据编号 | 任务编号 | 类型 | 命令/页面/文件 | 结果 |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| EV-W6-001 | W6-001 | 文件 | `/home/meswork/cnc_wams/work/working6` | 已创建 README 和 01-06 工作控制文件 |
|
||||
| EV-W6-020 | W6-020/W6-030/W6-040 | 命令 | `npm run smoke:node`、`npm run build`、`npm run smoke` | 基线通过,确认实现前项目当前态可运行 |
|
||||
| EV-W6-100 | W6-010/W6-100/W6-110/W6-120/W6-130/W6-140/W6-150 | 命令 | `node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs`、`node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs` | 通过,验证页面级模型、profile、communication model、store gate 和 diagnostic-only hard-button 行为 |
|
||||
| EV-W6-160 | W6-160 | 页面/命令 | `bash ../tests/browser/verify_gmoccapy_shell_browser.sh` | 通过,验证 `data-gmoccapy-page="file/macros/tool-editor/matrix"` 诊断行和公开 dispatch 页面行为 |
|
||||
| EV-W6-900 | W6-020/W6-030/W6-040/W6-900 | 命令 | `npm run smoke:node`、`npm run build`、`npm run smoke` | 回归通过,完整 Node、静态构建、浏览器 shell/dist smoke 均通过 |
|
||||
| EV-W6-901 | W6-900 | 命令 | `npm run smoke:node`、`npm run build`、`npm run smoke`、`git diff --check -- web-rtcp-5axis-sim-plan work/working6` | 接续复核通过,确认 working6 当前任务闭环且无空白错误 |
|
||||
|
||||
## 命令记录
|
||||
|
||||
### 2026-06-27 R1
|
||||
|
||||
```bash
|
||||
test -d /home/meswork/cnc_wams/work/working6 && find /home/meswork/cnc_wams/work/working6 -maxdepth 2 -type f | sort || true
|
||||
```
|
||||
|
||||
结果:创建前无可见文件。
|
||||
|
||||
```bash
|
||||
mkdir -p /home/meswork/cnc_wams/work/working6
|
||||
```
|
||||
|
||||
结果:通过,创建工作目录。
|
||||
|
||||
本轮创建文件:
|
||||
|
||||
- `/home/meswork/cnc_wams/work/working6/README.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/01-项目功能内容.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/02-项目程序开发详细步骤.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/03-推进台账.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/04-任务矩阵.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/05-验收证据.md`
|
||||
- `/home/meswork/cnc_wams/work/working6/06-决策记录.md`
|
||||
|
||||
### 2026-06-27 R2
|
||||
|
||||
基线命令:
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run smoke:node
|
||||
```
|
||||
|
||||
结果:通过。关键输出包含:
|
||||
|
||||
- `gmoccapy_xyzab_profile_smoke=ok`
|
||||
- `gmoccapy_communication_model_smoke=ok`
|
||||
- `gmoccapy_hal_model_smoke=ok`
|
||||
- `gmoccapy_xyzab_gates_smoke=ok`
|
||||
- `linear_unit_conversion_smoke=ok`
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run build
|
||||
```
|
||||
|
||||
结果:通过,输出 `gmoccapy_static_build=ok`。
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run smoke
|
||||
```
|
||||
|
||||
结果:通过,输出:
|
||||
|
||||
- `gmoccapy_shell_smoke=ok`
|
||||
- `gmoccapy_dist_smoke=ok`
|
||||
|
||||
新增最小验收:
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
node ../tests/node/verify_gmoccapy_hal_model.mjs && node ../tests/node/verify_gmoccapy_communication_model.mjs
|
||||
```
|
||||
|
||||
结果:通过,输出:
|
||||
|
||||
- `gmoccapy_hal_model_smoke=ok`
|
||||
- `gmoccapy_communication_model_smoke=ok`
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
node ../tests/node/verify_gmoccapy_xyzab_profile.mjs && node ../tests/node/verify_gmoccapy_xyzab_gates.mjs
|
||||
```
|
||||
|
||||
结果:通过,输出:
|
||||
|
||||
- `gmoccapy_xyzab_profile_smoke=ok`
|
||||
- `gmoccapy_xyzab_gates_smoke=ok`
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
bash ../tests/browser/verify_gmoccapy_shell_browser.sh
|
||||
```
|
||||
|
||||
结果:通过,输出 `gmoccapy_shell_smoke=ok`。
|
||||
|
||||
回归命令:
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run smoke:node
|
||||
```
|
||||
|
||||
结果:通过。
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run build
|
||||
```
|
||||
|
||||
结果:通过,输出 `gmoccapy_static_build=ok`。
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run smoke
|
||||
```
|
||||
|
||||
结果:通过,输出:
|
||||
|
||||
- `gmoccapy_shell_smoke=ok`
|
||||
- `gmoccapy_dist_smoke=ok`
|
||||
|
||||
本轮新增断言摘要:
|
||||
|
||||
- `gmoccapy_XYZAB.ini` 的 5 个 `[MACROS]` 被识别为 MDI O-word 宏,不再误判为未配置。
|
||||
- `IconFileSelection1` 文件页以 Web file input/staged source 诊断表达,不伪装成 native GTK chooser。
|
||||
- `tooledit1` tool editor 读取 `tool.tbl` 的 17 把刀,Web 写回被明确阻塞。
|
||||
- native GTK 页面矩阵包含 implemented、partial、diagnostic-only、native-only 四类。
|
||||
- `tbtn_setup`、`tbtn_user_tabs`、`btn_touch`、`btn_tool`、`tbtn_switch_mode` hard-button 进入 `GMOCAPY_NATIVE_PAGE` 诊断,不伪装为已实现页面。
|
||||
|
||||
### 2026-06-27 R3
|
||||
|
||||
接续复核命令:
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run smoke:node
|
||||
```
|
||||
|
||||
结果:通过。关键输出包含:
|
||||
|
||||
- `gmoccapy_xyzab_profile_smoke=ok`
|
||||
- `gmoccapy_communication_model_smoke=ok`
|
||||
- `gmoccapy_hal_model_smoke=ok`
|
||||
- `gmoccapy_xyzab_gates_smoke=ok`
|
||||
- `linear_unit_conversion_smoke=ok`
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run build
|
||||
```
|
||||
|
||||
结果:通过,输出 `gmoccapy_static_build=ok`。
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams/web-rtcp-5axis-sim-plan/app
|
||||
npm run smoke
|
||||
```
|
||||
|
||||
结果:通过,输出:
|
||||
|
||||
- `gmoccapy_shell_smoke=ok`
|
||||
- `gmoccapy_dist_smoke=ok`
|
||||
|
||||
```bash
|
||||
cd /home/meswork/cnc_wams
|
||||
git diff --check -- web-rtcp-5axis-sim-plan work/working6
|
||||
```
|
||||
|
||||
结果:通过,无输出。
|
||||
|
||||
复核结论:
|
||||
|
||||
- W6 任务矩阵已全部完成,无需新增代码补丁。
|
||||
- profile/model/store/UI/tests 的实际差异与 W6 文档目标一致。
|
||||
- 本轮未生成截图、PDF、job_id 或 report_id。
|
||||
|
||||
## 页面/截图/report/job 记录
|
||||
|
||||
本轮未生成截图、PDF、job_id 或 report_id。浏览器页面证据由 headless Chromium smoke 脚本验证,关键 DOM 为 `data-gmoccapy-page="file"`、`data-gmoccapy-page="macros"`、`data-gmoccapy-page="tool-editor"`、`data-gmoccapy-page="matrix"`。
|
||||
127
work/working6/06-决策记录.md
Normal file
127
work/working6/06-决策记录.md
Normal file
@@ -0,0 +1,127 @@
|
||||
# 06-决策记录
|
||||
|
||||
## DR-W6-001:working6 作为 working5 后续深化,不作为未完成补丁
|
||||
|
||||
日期:2026-06-27
|
||||
|
||||
决策:
|
||||
|
||||
- `working6` 不是修补 working5 未完成项,而是承接 working5 台账中“可选深化方向”。
|
||||
- 本轮主线聚焦 gmoccapy 文件/宏页面、tool editor 页面、native GTK 未实现页面诊断边界。
|
||||
- working5 中已完成的 HAL 输入、hard-button、状态机门控、换刀回环和低频 HAL pin 行为不得在 working6 中回退。
|
||||
|
||||
原因:
|
||||
|
||||
- `working5` 任务矩阵 W5-001 到 W5-900 已全部完成,并有 EV-W5-900 最终复核证据。
|
||||
- 文件/宏/tool editor/native GTK 页面属于页面级能力和诊断边界深化,风险面和验收口径不同于 working5 的 HAL pin 细化。
|
||||
|
||||
影响:
|
||||
|
||||
- `working6` 需要独立任务矩阵、验收证据和决策记录。
|
||||
- 后续提交或验收应区分 W5 已闭环行为与 W6 新增页面级诊断行为。
|
||||
|
||||
## DR-W6-002:未实现 native GTK 页面必须诊断化,不伪装成已实现
|
||||
|
||||
日期:2026-06-27
|
||||
|
||||
决策:
|
||||
|
||||
- 对 gmoccapy 原生存在但 Web 尚未完整实现的页面,先建立 implementation matrix。
|
||||
- Web UI 可以显示 diagnostic-only 状态、源码对应关系、未实现原因和未来补齐入口。
|
||||
- 未实现页面按钮和 hard-button pin 不得触发假的成功状态。
|
||||
|
||||
原因:
|
||||
|
||||
- gmoccapy 原生 GTK 页面和 Web shell 的布局、运行环境、文件系统权限、HAL 交互能力不同。
|
||||
- 若直接把未实现页面显示为可操作,会误导验收,掩盖仿真边界。
|
||||
|
||||
影响:
|
||||
|
||||
- UI 和 tests 必须验证 diagnostic-only/unsupported/not configured 等边界文案或结构化状态。
|
||||
- store 中未实现 action 应返回明确 operator message。
|
||||
|
||||
## DR-W6-003:文件/宏/tool editor 先按 XYZAB 配置边界建模
|
||||
|
||||
日期:2026-06-27
|
||||
|
||||
决策:
|
||||
|
||||
- 文件页面、宏页面和 tool editor 页面优先按 `gmoccapy_XYZAB.ini` 当前配置和 Web 仿真能力建模。
|
||||
- 配置未启用的能力显示为 no config 或 diagnostic-only。
|
||||
- 真实文件写入、外部 LinuxCNC 进程联动和持久化 tool table 修改不作为初始实现默认目标。
|
||||
|
||||
原因:
|
||||
|
||||
- 当前 Web 项目是 LinuxCNC/gmoccapy 行为仿真,不是完整桌面 gmoccapy 进程。
|
||||
- XYZAB 配置的宏、tool sensor、user message 等能力存在明确启用边界。
|
||||
- 先把边界表达清楚,后续才能安全决定哪些功能升级为可执行。
|
||||
|
||||
影响:
|
||||
|
||||
- W6-100、W6-110、W6-120 的验收重点是“能力、gate、边界和诊断是否正确”,不是盲目补齐所有 GTK 行为。
|
||||
- 若后续要启用真实写文件或外部进程,需要新增决策记录和验收任务。
|
||||
|
||||
## DR-W6-004:XYZAB 宏页按已配置 5 个 `[MACROS]` 建模
|
||||
|
||||
日期:2026-06-27
|
||||
|
||||
决策:
|
||||
|
||||
- `gmoccapy_XYZAB.ini` 的 `[MACROS]` 中 5 个宏必须建模为已配置能力:
|
||||
- `i_am_lost`
|
||||
- `halo_world`
|
||||
- `jog_around`
|
||||
- `increment xinc yinc`
|
||||
- `go_to_position X-pos Y-pos Z-pos`
|
||||
- Web 通过 `GMOCAPY_RUN_MACRO` 模拟 `_on_btn_macro_pressed()`,生成 `O<name> call [args]` MDI 命令。
|
||||
- 宏执行必须复用 `RUN_MDI` gate;未上电、未回零、非 MDI-capable 或解释器忙时拦截。
|
||||
|
||||
原因:
|
||||
|
||||
- 初始文档把“未配置宏时显示边界”列为需要处理的通用场景,但实际 XYZAB INI 明确配置了 5 个宏。
|
||||
- gmoccapy 原生 `_make_macro_button()` 从 INI 读取宏,`_on_btn_macro_pressed()` 将宏转为 O-word MDI 调用。
|
||||
|
||||
影响:
|
||||
|
||||
- profile、HAL model、communication model、store、Node/browser tests 均断言 XYZAB 宏 count 为 5。
|
||||
- Web 不创建 native entry dialog;参数由 dispatch/test 传入,后续如需 UI 参数输入需要单独任务。
|
||||
|
||||
## DR-W6-005:tool editor 本轮只做诊断和 gate,不写 `tool.tbl`
|
||||
|
||||
日期:2026-06-27
|
||||
|
||||
决策:
|
||||
|
||||
- Web 记录 `tooledit1`、`tool.tbl`、17 把刀、可见 XYZAB 轴和 M6/M61 工具动作边界。
|
||||
- `GMOCAPY_TOOL_EDITOR_ACTION` 对 `save`、`add`、`delete`、`touch-off` 等写操作返回 diagnostic-only/operator message,不修改本地 `tool.tbl`。
|
||||
- 工具换刀继续沿用 working5 的 `iocontrol-loopback`,不重新启用手动 gmoccapy toolchange GUI pins。
|
||||
|
||||
原因:
|
||||
|
||||
- 原生 gmoccapy tool editor 可以直接写配置目录中的 `tool.tbl`,但浏览器 Web 仿真没有等价的 LinuxCNC 配置写回权限和进程同步语义。
|
||||
- 未经单独设计直接写文件会混淆“诊断仿真”和“真实机床配置修改”的边界。
|
||||
|
||||
影响:
|
||||
|
||||
- 本轮验收关注 tool table 来源、数量、只读边界和换刀语义一致性。
|
||||
- 后续若要实现真实写回,需要新增持久化设计、备份策略、并发保护和验收任务。
|
||||
|
||||
## DR-W6-006:hard-button 对 native-only/diagnostic-only 页面使用结构化页面诊断
|
||||
|
||||
日期:2026-06-27
|
||||
|
||||
决策:
|
||||
|
||||
- `tbtn_user_tabs`、`tbtn_setup`、`btn_touch`、`btn_tool`、`tbtn_switch_mode` 不再作为普通 Web action 或模式切换伪装执行。
|
||||
- 这些按钮通过 `GMOCAPY_NATIVE_PAGE` 更新 `gmoccapyGui.activeNativePage`、`nativePageMode` 和 operator message。
|
||||
- UI 通过 `data-gmoccapy-page="matrix"` 展示 native GTK 页面实现矩阵。
|
||||
|
||||
原因:
|
||||
|
||||
- gmoccapy 原生 `_button_pin_changed()` 会触发当前可见且敏感的 GTK 按钮,但 Web shell 尚未实现完整 setup/user tabs/touch/tool/switchkins 页面。
|
||||
- 直接把这些按钮映射成其他 Web action 会误表达 native 行为。
|
||||
|
||||
影响:
|
||||
|
||||
- hard-button 模型仍保留 pin 到 native widget 的源码映射。
|
||||
- Web 验收明确区分 implemented、partial、diagnostic-only、native-only 页面,避免后续重复争论“未实现页面是否可点击成功”。
|
||||
33
work/working6/README.md
Normal file
33
work/working6/README.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# working6 README 索引
|
||||
|
||||
本目录用于推进 `/home/meswork/cnc_wams/web-rtcp-5axis-sim-plan` 中 gmoccapy 文件/宏页面、tool editor 页面、native GTK 未实现页面诊断边界的实现、验证和验收。
|
||||
|
||||
前置工作:
|
||||
|
||||
- `/home/meswork/cnc_wams/work/working5`
|
||||
- `/home/meswork/cnc_wams/work/working3/gmoccapy_XYZAB_execution_analysis.md`
|
||||
|
||||
对标基准:
|
||||
|
||||
- `/home/meswork/cnc_wams/linuxcnc/configs/sim/gmoccapy/gmoccapy_XYZAB.ini`
|
||||
- `/home/meswork/cnc_wams/linuxcnc/src/emc/usr_intf/gmoccapy/gmoccapy.py`
|
||||
- `/home/meswork/cnc_wams/linuxcnc/src/emc/usr_intf/gmoccapy/gmoccapy.glade`
|
||||
- `/home/meswork/cnc_wams/linuxcnc/src/emc/usr_intf/gmoccapy/dialogs.py`
|
||||
- `/home/meswork/cnc_wams/linuxcnc/configs/sim/gmoccapy/*.hal`
|
||||
|
||||
工作文件:
|
||||
|
||||
1. [01-项目功能内容.md](01-项目功能内容.md)
|
||||
2. [02-项目程序开发详细步骤.md](02-项目程序开发详细步骤.md)
|
||||
3. [03-推进台账.md](03-推进台账.md)
|
||||
4. [04-任务矩阵.md](04-任务矩阵.md)
|
||||
5. [05-验收证据.md](05-验收证据.md)
|
||||
6. [06-决策记录.md](06-决策记录.md)
|
||||
|
||||
推进规则:
|
||||
|
||||
- 先按 `04-任务矩阵.md` 选择任务,避免重复做同一项。
|
||||
- 每轮结束更新 `03-推进台账.md`,记录做了什么、改了哪些文件、验证了什么、下一步是什么。
|
||||
- 所有命令、页面、report、job_id、PDF、截图、测试输出摘要写入 `05-验收证据.md`。
|
||||
- 影响架构、兼容性、验收口径或 LinuxCNC/gmoccapy 对标边界的判断写入 `06-决策记录.md`。
|
||||
- 本轮是 working5 的后续深化,不回退 working5 已完成的 HAL 输入和按钮门控行为。
|
||||
Reference in New Issue
Block a user