# FSD M5 · 订单变更

LLMS 索引： [llms.txt](/llms.txt)

---

> [← 总则](/poms/fsd/00-%E6%80%BB%E5%88%99/) ｜ [附录 →](/poms/fsd/99-%E9%99%84%E5%BD%95/) ｜ 上游：[主 PRD](/poms/%E5%8D%B0%E5%88%B7%E8%A1%8C%E4%B8%9A%E5%B7%A5%E5%8D%95%E7%B3%BB%E7%BB%9F%E4%BA%A7%E5%93%81%E4%B8%8E%E4%BA%A4%E4%BA%92%E8%AE%BE%E8%AE%A1/)（6.2 订单变更部分 / 页面树 4 订单变更屏）｜ 交互稿：[prd/design/order/](/poms/design/order/readme/)（已确认，订单变更屏）+ [prd/design/shipping/](/poms/design/shipping/readme/)（已确认，F05.03 地址边界）
>
> 册边界：订单本体生命周期归 m04；本册只承载**已确认订单的受控字段变更**（前后可对比，PRD 6.2）。在制回写是快照冻结（Q18/R-008）的唯一例外通道；工单侧的执行响应归 m07。本册 **P1**（MVP 上线订单本体，变更流随 P1 落地）。

### M5 订单变更

#### F05.01 变更单创建

**对应 PRD**：6.2 规则「订单确认后不得直接覆盖明细；数量、价格、规格、工艺、交期、地址、付款、发票为受控字段」（`prd/印刷行业工单系统产品与交互设计.md:218`）｜ **交互稿**：[prd/design/order/](/poms/design/order/readme/)（已确认，订单变更屏 `/orders/{orderId}/changes/new`）｜ **实现落点**：待回填 ｜ **操作入口**：`/orders/{orderId}/changes/new`（详情「修改」→变更单入口弹层）｜ **状态**：未实现

##### 1 功能定义

已确认订单修改的唯一通道：受控字段（数量/价格/规格/工艺/交期/地址/付款/发票）修改须创建变更单，**原值 vs 新值逐项对照（勾选生效）**、变更原因必填、与上一版差异留版本链；客户确认凭证上传；审批分级（**假设 Q7**：变更分级 L1/L2/L3，阈值可配置，待客户确认）；生效日期可选。已确认订单详情点「修改」不直接编辑，仅打开变更单入口（B1 归并裁决）。

##### 2 触发条件与前置状态

- 触发：订单详情「修改」→「创建变更单」。
- 前置状态：订单 `已确认`/`生产中`/`已暂停`（`草稿` 直接编辑不走路由 m04 F04.01；`取消` 不可变更）。

##### 3 输入与校验

| 字段 | 必填 | 校验 | 失败处理 |
|------|------|------|----------|
| 受控字段新值（勾选生效项） | ≥1 项 | 新值合法（同 F04.01 字段校验） | 全不勾选不可提交 |
| 变更原因 | 是 | 非空、分类枚举 | 阻断 |
| 与上一版对照 | 自动生成 | 逐项差异可读 | — |
| 客户确认凭证 | 涉及价格/数量/交期时必填 | 上传留痕（电子签 P1+ 假设 Q8） | 缺失阻断提交 |
| 生效日期 | 否 | 不早于当日；留空=审批通过即生效 | — |
| 审批分级 | 自动 | 按变更字段与幅度路由 L1/L2/L3（假设 Q7） | 未配置分级阻断提交 |

##### 4 处理流程

```mermaid
flowchart TD
    A[详情-修改] --> B[变更单入口弹层]
    B --> C[勾选受控字段+填新值]
    C --> D[原值 vs 新值对照]
    D --> E[原因+客户凭证]
    E --> F[提交 → F05.02 评审]
```

##### 5 输出与结果状态

变更单记录（`待审批`）+ 原订单版本链追加一版（未生效）；原值留痕。

##### 6 状态流转

变更单：`[*] → 待审批`；后续见 F05.02。订单本体状态不变（变更生效时受控字段翻转）。

##### 7 边界与异常

| 条件 | 系统行为 | 提示 |
|------|----------|------|
| 同一订单已有在途变更单 | 提示不阻断（人工判断合并或串行） | 「存在在途变更单」 |
| 审批中订单被取消 | 变更单自动作废并标注 | 「订单已取消，变更单作废」 |
| 草稿订单修改 | 不进变更单（直接编辑，m04） | — |
| 修改快照相关字段（工艺/材料） | 标记触发在制影响评估（F05.02） | — |

##### 8 权限与数据规则

- 发起=销售（本人口径）；客户凭证仅发起与审批链可见。
- 变更原因与对照记录进审计（F15.03）。

#### F05.02 变更评审与在制回写

**对应 PRD**：6.2 异常「审批中版本被改须重提」+ 主流程「变更前后可对比」（`prd/印刷行业工单系统产品与交互设计.md:216,220`）+ 调研 R-008（变更刷新例外通道）｜ **交互稿**：[prd/design/order/](/poms/design/order/readme/)（已确认，订单变更屏影响评估区）｜ **实现落点**：待回填 ｜ **操作入口**：`/orders/{orderId}/changes/new`（影响评估三卡+审批）｜ **状态**：未实现

##### 1 功能定义

变更单的审批与生效：影响评估三卡（**工单/物料/交期**）作为审批依据；审批分级路由（L1/L2/L3，假设 Q7）；审批通过后受控字段生效并生成订单新版本；**涉及工艺/材料/数量变更时明确刷新在制工单快照**（R-008 例外通道——唯一允许刷新已冻结快照的路径），刷新动作留痕；审批中版本被改须重提（6.2 异常）。

##### 2 触发条件与前置状态

- 触发：变更单提交（F05.01）。
- 前置状态：变更单 `待审批`；订单未被取消。

##### 3 输入与校验

| 字段 | 必填 | 校验 | 失败处理 |
|------|------|------|----------|
| 审批结论（同意/驳回） | 是 | 驳回须附原因 | 缺原因阻断 |
| 分级路由 | 自动 | L1/L2/L3 审批人配置（假设 Q7） | 未配置阻断 |
| 影响评估三卡 | 自动生成 | 工单影响数/物料差异数/交期变化可读 | — |
| 刷新在制确认 | 涉及快照字段时 | 逐工单勾选刷新范围 | 未勾选=仅影响后续新建工单 |

##### 4 处理流程

```mermaid
flowchart TD
    A[变更单待审批] --> B[影响评估三卡]
    B --> C{分级审批}
    C -- 驳回 --> D[退回发起人+原因]
    C -- 同意 --> E[受控字段生效: 订单新版本]
    E --> F{涉及快照字段?}
    F -- 是 --> G[勾选在制工单刷新范围]
    G --> H[工单快照刷新留痕 → m07]
    F -- 否 --> I[仅影响后续新建工单]
```

##### 5 输出与结果状态

变更单 `已生效`/`已驳回`；订单版本链追加（生效版本）；受影响工单快照刷新记录（逐单留痕）；交期变化通知相关方（工作台待办 F01.02 事件源）。

##### 6 状态流转

变更单：`待审批 → 已生效 / 已驳回`；驳回后修改重新提交生成新审批（旧审批留痕）。

##### 7 边界与异常

| 条件 | 系统行为 | 提示 |
|------|----------|------|
| 审批中受控字段被再改 | 禁止；改动须驳回后重提（6.2 异常） | 「审批中版本已变更，须重新提交」 |
| 在制工单已报工 | 刷新前提示报工差异，逐单确认 | 「该工单已有报工 N 笔」 |
| 已发货后变更数量 | 影响清单加重；超发校验联动 m12 | — |
| 变更生效后排程冲突 | 通知计划员（m07 待办），不自动重排 | — |

##### 8 权限与数据规则

- 审批角色按分级配置（假设 Q7）；财务会签条件沿 m04 取消会签同口径（资金影响时）。
- 快照刷新动作全量审计（F15.03：旧快照版本→新快照版本）。

#### F05.03 发货地址变更

**对应 PRD**：6.9 规则「地址变更需销售/订单审批」（`prd/印刷行业工单系统产品与交互设计.md:268`）｜ **交互稿**：[prd/design/shipping/](/poms/design/shipping/readme/)（已确认，发货单屏地址卡小注——本域地址只读）+ [prd/design/order/](/poms/design/order/readme/)（已确认，变更单入口）｜ **实现落点**：待回填 ｜ **操作入口**：`/shipping/shipments/{shipmentId}`（地址卡「申请变更」）、`/orders/{orderId}/changes/new`（审批落点）｜ **状态**：未实现

##### 1 功能定义

收货地址作为受控字段的变更通路（跨 order/shipping 两域）：发货单屏地址**只读**，展示「申请变更」入口→生成地址类变更单（销售申请）→订单域审批（本册 F05.02 分级）→生效后发货单地址刷新；未生效前发货按原地址，warehouse 拦截提示。审批流不落 shipping 域（B2 边界裁决）。

##### 2 触发条件与前置状态

- 触发：发货单地址卡「申请变更」（销售）；客户联系销售提出。
- 前置状态：发货单存在且未全部签收；订单非取消态。

##### 3 输入与校验

| 字段 | 必填 | 校验 | 失败处理 |
|------|------|------|----------|
| 新地址（联系人/电话/地址） | 是 | 齐备性 | 阻断提交 |
| 变更原因 | 是 | 非空 | 阻断 |
| 关联发货单范围 | 是 | 勾选受影响发货单 | 缺失=仅订单级生效 |
| 审批 | 自动 | 走 F05.02 分级（地址类默认 L1，可配置） | — |

##### 4 处理流程

```mermaid
flowchart TD
    A[发货单地址卡-申请变更] --> B[填新地址+范围]
    B --> C[生成地址类变更单 m05]
    C --> D[订单域审批 F05.02]
    D -- 通过 --> E[发货单地址刷新+待办通知]
    D -- 驳回 --> F[地址维持原值]
```

##### 5 输出与结果状态

地址变更单 + 受影响发货单地址刷新记录；驳回归原值；全部留痕。

##### 6 状态流转

沿变更单状态机（F05.02）；发货单地址字段随变更生效翻转。

##### 7 边界与异常

| 条件 | 系统行为 | 提示 |
|------|----------|------|
| 发货单已交接物流 | 变更仍可审批，物流侧提示重新确认 | 「已交接承运，请同步物流」 |
| 已签收发货单 | 不纳入变更范围（终态） | — |
| 审批期间发货 | 按原地址执行（未生效不拦截） | — |

##### 8 权限与数据规则

- 申请=销售（本人口径）；审批=订单域分级（F05.02）；仓库只读。
- 地址变更全链审计（F15.03）。

## E2E 场景清单（m05 覆盖地图）

| 场景 ID | 场景名 | FSD 功能 ID | 前置种子 | 主干路径 | 关键断言 | 冒烟? | 可并行? | 现状 |
|---------|--------|-------------|----------|----------|----------|-------|---------|------|
| E05.01 | 交期变更主干 | F05.01→F05.02 | 已确认订单 | 创建变更单（新交期）→审批通过 | 受控字段生效；版本链追加；原值留痕 | ✓ | — | 未实现 |
| E05.02 | 原值 vs 新值对照 | F05.01 | 已确认订单 | 勾选字段填新值 | 对照逐项可读；全不勾选不可提交 | ✓ | ✓ | 未实现 |
| E05.03 | 影响评估驱动审批 | F05.02 | 已排产订单+工艺变更 | 提交→三卡生成→分级审批 | 工单/物料/交期影响可读；分级路由正确 | ✓ | — | 未实现 |
| E05.04 | 在制快照刷新（R-008 例外） | F05.02（+F07.01） | 在制工单+工艺变更 | 审批通过→勾选刷新范围 | 工单快照刷新留痕；未勾选工单不刷新 | ✓ | — | 未实现 |
| E05.05 | 审批中修改须重提 | F05.02 | 待审批变更单 | 尝试再改受控字段 | 禁止并提示；驳回后新审批 | — | ✓ | 未实现 |
| E05.06 | 地址变更跨域闭环 | F05.03 | 未签收发货单 | 发货单申请→订单审批→生效 | 地址刷新+通知；shipping 侧只读边界保持 | ✓ | ✓ | 未实现 |
| E05.07 | 订单取消作废变更单 | F05.01/F04.06 | 在途变更单+取消 | 取消订单 | 变更单自动作废并标注 | — | ✓ | 未实现 |

---

反链：

- [印刷工单系统功能规格说明书（FSD）v1.0 · 总则](/poms/fsd/00-%E6%80%BB%E5%88%99/)
