完善 working6 gmoccapy 页面诊断边界
This commit is contained in:
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