# 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`。
