Files
cnc_wams/work/working6/06-决策记录.md

128 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 06-决策记录
## DR-W6-001working6 作为 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-004XYZAB 宏页按已配置 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-005tool 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-006hard-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 页面,避免后续重复争论“未实现页面是否可点击成功”。