# FSD M2 · 客户机会

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.1 前置 / 6.9 地址边界 / 页面树 2）｜ 交互稿：[prd/design/customer/](/poms/design/customer/readme/)（已确认）
>
> 册边界：报价与商机转化后的计价归 m03；报价/订单/对账单据本体归 m03/m04/m13（本册只做跨域关联查询）；客户信用/收款策略的**财务审批动作**归 m15 审批中心（本册承载策略字段与启用状态）。地址变更审批归 m05（F05.03）。

### M2 客户机会

#### F02.01 客户建档与档案管理

**对应 PRD**：6.1 前置「客户存在或草稿可存」（`prd/印刷行业工单系统产品与交互设计.md:208`）+ 6.9 地址边界（`:268`）｜ **交互稿**：[prd/design/customer/](/poms/design/customer/readme/)（已确认，客户列表屏 + 客户详情屏）｜ **实现落点**：待回填 ｜ **操作入口**：`/customers`、`/customers/{customerId}` ｜ **状态**：未实现

##### 1 功能定义

客户主数据（档案/联系人/开票资料/付款条款/销售归属）的建档与维护：支持快速建档存草稿（6.1 前置——报价可先行、客户补全）；发货地址只读展示（变更须销售申请、经订单域审批，PRD 6.9——动作归 m05 F05.03）；合同/资质附件留档（**假设 Q8**：MVP 纸质留档+上传，电子签章 P1+，待客户确认）。

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

- 触发：客户列表「新建客户」；报价创建时客户不存在的前置补建（F03.01 联动）。
- 前置状态：无（建档类功能）；草稿转启用须补全档案必填项（联系人/开票资料/付款条款）。

##### 3 输入与校验

| 字段 | 必填 | 校验 | 失败处理 |
|------|------|------|----------|
| 客户名称 | 启用时必填 | 唯一性（重名提示不阻断，人工判断） | 「存在疑似重复客户」 |
| 联系人/电话 | 启用时必填 | 格式校验 | 阻断启用 |
| 开票资料/税率口径 | 开票相关业务时必填 | 齐备性 | 缺失提示（不阻断建档） |
| 付款条款/账期 | 是（启用） | 枚举可选 | 阻断启用 |
| 销售归属 | 是（启用） | 存在且在职 | 阻断启用 |
| 发货地址 | 否 | 只读展示（变更走 m05） | — |
| 合同/资质附件 | 否 | 上传留痕 | — |

##### 4 处理流程

```mermaid
flowchart TD
    A[新建客户] --> B[存草稿]
    B --> C[补全必填项]
    C --> D[启用]
    D --> E[档案维护]
    E --> F[停用: 历史单据与审计保留]
```

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

客户记录（草稿/启用/停用）+ 附件集；停用不影响历史报价/订单/对账（只读保留）。

##### 6 状态流转

`[*] → 草稿（快速建档）→ 启用（补全必填）→ 停用`；停用为终态但历史单据可追溯（见 customer README 状态迁移图）。

##### 7 边界与异常

| 条件 | 系统行为 | 提示 |
|------|----------|------|
| 重复客户（名称/税号近似） | 提示不阻断 | 「存在疑似重复客户」 |
| 客户信息冲突（报价/订单引用中修改关键字段） | 变更不回写已确认单据（Q18：快照在订单域冻结） | 「变更不影响已确认单据」 |
| 停用客户被新建报价引用 | 阻断选择 | 「客户已停用」 |
| 敏感列（应收/信用） | 不进列表（Q41：应收台账归 settlement 财务可见） | — |

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

- 销售：本组织本人口径建档与维护；跨销售数据不可见（数据范围随归属）。
- 客户列表不放应收/信用敏感列（Q41 矩阵，F15.02 收口）。
- 全部变更进审计（F15.03）。

#### F02.02 询价与商机管理

**对应 PRD**：6.1 场景与主流程前置（`prd/印刷行业工单系统产品与交互设计.md:208`）｜ **交互稿**：[prd/design/customer/](/poms/design/customer/readme/)（已确认，询价-商机详情屏）｜ **实现落点**：待回填 ｜ **操作入口**：`/customers/{customerId}/inquiries/{inquiryId}` ｜ **状态**：未实现

##### 1 功能定义

客户需求的登记与商机推进：录入询价需求要素（品名/数量档/成品尺寸/材料意向/色数/表面处理/后道/交期/收货地/样品/特殊要求——6.1 字段要点），推进商机阶段，留痕沟通；**转报价**入口生成报价草稿进入 m03（F03.01 联动）。询价列表不设独立屏——以客户详情 tab + 本屏承载（B3 归并裁决）。

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

- 触发：客户详情「登记询价」；外部线索录入。
- 前置状态：客户存在（草稿客户可登记，启用后才能转报价）。

##### 3 输入与校验

| 字段 | 必填 | 校验 | 失败处理 |
|------|------|------|----------|
| 品名/数量档/成品尺寸 | 是 | 齐备性 | 缺失不可转报价 |
| 材料意向/色数/表面处理/后道 | 否 | 枚举+自由文本 | — |
| 交期/收货地/样品要求 | 转报价前必填 | 交期不早于当日 | 阻断转报价 |
| 商机阶段 | 自动/手动 | 按阶段机推进 | — |
| 沟通留痕 | 自动/手动 | 时间线追加 | — |

##### 4 处理流程

```mermaid
flowchart TD
    A[登记询价] --> B[需求确认: 要素齐备]
    B --> C[转报价 → m03 F03.01]
    C --> D{报价结果}
    D -- 成交 --> E[已成交: 回链订单]
    D -- 流失/搁置 --> F[已关闭: 原因留痕]
```

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

询价记录 + 商机阶段状态；转报价后回显关联报价版本链（m03 回链）；**客户确认前不得占用库存承诺**（6.1 异常——本册不产生任何库存/排产动作）。

##### 6 状态流转

`询价登记 → 需求确认 → 已转报价`；`已转报价 → 已成交 / 已关闭（原因留痕）`（见 customer README 状态迁移图）。

##### 7 边界与异常

| 条件 | 系统行为 | 提示 |
|------|----------|------|
| 需求要素缺失点转报价 | 阻断并定位缺失项 | 「请补全需求要素」 |
| 询价对应报价已全部失效 | 询价可再转新报价 | — |
| 商机关闭 | 原因必填留痕 | — |
| 客户确认前 | 不占用库存承诺（6.1） | — |

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

- 销售：本人商机的登记与推进；客服可登记询价（Q41：报价对销售/客服可见，同口径）。
- 商机数据范围随客户归属；转报价动作生成 m03 报价草稿（发起人留痕）。

#### F02.03 客户单据关联与信用策略

**对应 PRD**：6.1 转单回链 + 6.2 前置「客户信用/收款策略由财务启用」（`prd/印刷行业工单系统产品与交互设计.md:216`）｜ **交互稿**：[prd/design/customer/](/poms/design/customer/readme/)（已确认，客户详情屏关联单据 tab）｜ **实现落点**：待回填 ｜ **操作入口**：`/customers/{customerId}`（关联单据 tab）｜ **状态**：未实现

##### 1 功能定义

客户维度的跨域单据聚合查询（报价/订单/对账单 tab，跳转各域详情）与信用/收款策略字段承载：策略由财务启用（6.2 前置），启用结果供订单创建（F04.01）校验信用额度——本节只承载策略状态展示，审批动作归 m15 审批中心（F15.01）。

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

- 触发：客户详情页打开。
- 前置状态：客户存在；跨域单据按客户号关联。

##### 3 输入与校验

| 字段 | 必填 | 校验 | 失败处理 |
|------|------|------|----------|
| 客户 ID 过滤 | 自动 | 存在且在数据范围 | 空列表 |
| 信用额度/账期策略 | 财务启用 | 数值合法、策略类型枚举 | 未启用时显示「未启用」（不阻断建档） |
| 关联单据 tab | 自动 | 跨域只读 | — |

##### 4 处理流程

按客户号聚合三域单据（报价 m03/订单 m04/对账单 m13）→ tab 渲染 → 行点击跳各域详情（复用各域权限校验）→ 信用/收款策略卡片（财务启用状态、额度、账期）。

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

只读聚合视图 + 策略状态卡；不产生业务状态变化（查询类功能）。

##### 6 状态流转

无独立状态；所列单据状态归各域（m03/m04/m13）。

##### 7 边界与异常

| 条件 | 系统行为 | 提示 |
|------|----------|------|
| 无权限范围的单据 | 不渲染（非打码） | — |
| 信用策略未启用 | 策略卡显示未启用；订单创建时按 6.2「财务策略决定是否阻断」处理 | — |
| 对账单为财务敏感 | 按角色渲染 tab（Q41） | — |

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

- 聚合视图复用各域数据范围权限；对账 tab 仅财务与管理层（Q41）。
- 信用/收款策略字段由财务角色维护；策略变更进审计（F15.03）。

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

| 场景 ID | 场景名 | FSD 功能 ID | 前置种子 | 主干路径 | 关键断言 | 冒烟? | 可并行? | 现状 |
|---------|--------|-------------|----------|----------|----------|-------|---------|------|
| E02.01 | 快速建档主干 | F02.01 | 无 | 新建→存草稿→补全→启用 | 草稿可存；启用后可被报价引用 | ✓ | ✓ | 未实现 |
| E02.02 | 询价转报价 | F02.02→F03.01 | 启用客户 | 登记询价→补全要素→转报价 | 报价草稿生成且回链询价；缺失要素阻断 | ✓ | ✓ | 未实现 |
| E02.03 | 商机关闭留痕 | F02.02 | 已转报价商机 | 关闭（流失） | 原因必填；历史报价可追溯 | — | ✓ | 未实现 |
| E02.04 | 停用不影响历史 | F02.01 | 启用客户+历史订单 | 停用 | 历史单据只读保留；新建引用阻断 | ✓ | — | 未实现 |
| E02.05 | 关联单据跨域跳转 | F02.03 | 客户+报价+订单+对账单 | 打开详情关联 tab→逐 tab 跳转 | 三域单据正确聚合；无权限项不渲染 | ✓ | ✓ | 未实现 |
| E02.06 | 信用策略启用联动 | F02.03/F04.01 | 客户+财务角色 | 财务启用信用策略→订单创建校验 | 策略状态正确；订单创建读到策略（F04.01 联动） | — | ✓ | 未实现 |
| E02.07 | 敏感列脱敏 | F02.01/F15.02 | 销售角色 | 列表/详情查看 | 无应收/信用列（Q41）；合同附件可上传 | ✓ | ✓ | 未实现 |

---

反链：

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