﻿P10-05 粗加工 / 半精加工 / 精加工三阶段 + 程序拆分 + M01 + 半精后测尺寸补偿

## 用户需求（2026-10-20 00:50 原话整理）
「轮廓要分精加工和粗加工，保证提高光洁度，外观要好看一点。要工序单增加精加工选项，
重点需要精加工的部分，要分成粗加工（留0.2mm余量），半精加工（0.05mm余量），
精加工（余量手动设置）；针对铣刀，半精加工和精加工为同一把刀，程序拆分开，
独立的分别加M01，不要连载一起。半精加工结束要测量一下尺寸，调整尺寸保证精加工尺寸。」

## 一、工序单要新增的列与选项
在现有列（工序/类型/刀具/φ/S/F/ap/ae/备注/优化类型/优化原因）基础上增加：
- `加工阶段`：下拉三选一 `粗加工` / `半精加工` / `精加工`
- `余量(mm)`：数值；选择阶段时自动带默认值——
  粗加工 0.2、半精加工 0.05、精加工 **手动填**（默认 0，允许改）
- 只对"需要精加工的重点面"允许设后两阶段；其余行可只做粗加工
- 同一把铣刀在半精与精加工两行里**必须是同一刀具名**（界面校验：若不一致，标红提示）

## 二、三阶段参数语义
```
粗加工  ：stock(侧/底余量) = 0.2 mm，大 ap/ae，追求效率
半精加工：stock = 0.05 mm，中 ap/ae，改善轮廓度
精加工  ：stock = 用户手动值（默认 0），小 ap/ae + 更高转速/更低进给，
          追求表面光洁度（Ra 目标可先不建模，但必须用精加工档 S/F）
```
S/F 必须取自现有 `data\rules\rule_engine.py` 的 SpeedFeedTable：
- 粗加工用 roughing 档
- 半精用 finishing 与 roughing 之间的合理档（若无半精档，用 finishing 档并如实标注来源）
- 精加工用 finishing 档
**不许凭空造系数**；若无对应档，日志里写明"该阶段沿用 X 档"。

## 三、程序必须拆开（关键）
- 不允许把粗/半精/精连续写进同一个 NC 文件。
- 每个阶段单独后处理成一个 NC 文件，命名：
  `A01_粗_<零件名>.nc`、`A02_半精_<零件名>.nc`、`A03_精_<零件名>.nc`
  （工序号沿用 A01…A30 规范）
- 每个 NC 文件：
  - 程序头照常（G90/G54/G43…）
  - 程序结尾 `M05` + `M09` + **`M01`**（选择性暂停，让操作工确认后再跑下一段）
  - **不允许**把下一阶段的刀轨接在同一文件里
- 若某阶段没有刀路 → 不生成空文件，日志写明"跳过 <阶段>（无刀路）"

## 四、半精加工结束后必须"测尺寸 → 调整精加工"
- 半精 NC 文件结尾，除 M01 外，增加注释行提示测量，例如：
  `(=== 半精完成，请测量关键尺寸，按实测值与目标值差值调整精加工余量 ===)`
- 工具侧提供"实测修正"通道：
  - `tools\stage_comp.py --part <prt> --feature <名> --target <目标> --measured <实测>`
  - 计算差值 → 自动修正精加工阶段的余量（写入 `状态\overrides\<零件>.json`，
    经 `tools\sheet_feedback.py` 既有机制生效，不动 parameters.json 全局预设）
  - 同时把"目标/实测/差值/修正后余量"记入长期记忆（永久优化机制），
    并写原因 `半精实测 <实测> 目标 <目标>`，供以后同类零件复用
- 修正后重新生成精加工 NC 文件，日志打印新旧余量对比

## 五、工作台接入
`app\NXAIStart.cs`：
- 新增「⑨ 三阶段出程序」按钮：按当前工序单，把勾选了阶段的工序
  依次生成 粗/半精/精 三个 NC 文件（各自独立），完成后列出文件清单与大小
- 执行前弹确认框，说明"将拆成 N 个独立程序，每段末 M01"
- 日志区逐行输出：阶段 → 文件名 → 刀路行数 → 余量值

## 六、验收（必须实测证据）
1. 用 `C:\Users\Administrator\Desktop\数控加工教程\7-17\7-17.prt` 实跑三阶段，
   贴出：三个 NC 文件的实际路径与大小、每个文件的刀路行数
2. 证明程序是**拆开**的：贴出三个文件各自的程序头与程序尾（能看到 M01），
   并证明粗加工文件里**没有**精加工刀轨
3. 证明余量生效：贴出粗 0.2 / 半精 0.05 / 精（手动值）在 NX 工序参数里的实际值
4. 证明半精与精加工用同一把刀（贴出刀具名一致）
5. 实测修正通道：给一个 target=20.00、measured=20.06，贴出
   - 差值计算（-0.06）
   - overrides 文件改动前后内容
   - 精加工余量修正后的值
   - 长期记忆里新增条目全文
6. 门禁全绿：check_py_syntax 0 错误、run_eval 21/21、所有 tests\test_*.py 通过
7. 新增 .py 必须有 `P2-02 控制台编码护栏` 中文原文

## 约束
- 不改 `E:\Program Files\Siemens\NX*`、cloud\、core\license.py、nx_post\
- 不伪造：刀路行数、余量、NC 文件内容必须真实产出
- 完成后写 `状态\P10-05.done.json`

## 工序命名规范（沿用，不得违反）
工序统一 A01、A02…A30；同一零件的三个阶段的编号按加工顺序连续编（如 A01 粗、A02 半精、A03 精）。
