# 配送设置 — 功能需求说明

> 本文档在《配送设置功能需求-草稿》基础上整理，并关联 **《关联需求分析.md》** v1.6、平台侧 **《店铺管理功能需求》** v1.3.7、《订单管理功能需求》** v1.0.1、《商品管理功能需求》** v1.3.3、《会员管理功能需求》** v1.0.1 及商家侧 **《运费模版功能需求》** v1.0、《店铺设置功能需求》** v1.0、《发货管理功能需求》** v1.0、《全部订单功能需求》** v1.0、《商品列表功能需求》** v1.5、《商家端店铺上下文接口说明》做边界与流程对齐。  
> 范围：**店铺经营管理端 · 物流相关 · 配送设置** 对 **当前店铺** **发货信息** 的查看与维护。  
> **说明：** 本文档 **仅描述功能需求与业务规则**；不涉及数据库结构、接口定义及技术实现细节。  
> **命名区分：** 本模块维护 **发货人/发货地址**（店铺级 **一份**）；**运费模版** 维护 **运费规则**；**发货管理/全部订单** 维护 **单笔订单履约**；三者 **职责不同、菜单独立**。

---

## 1. 模块定位

### 1.1 业务目标

在农资商城 **店铺经营管理端（Web）· 物流相关** 提供 **配送设置** 能力，使 **店铺管理员**（商户经营账号及已授权子管理员）能够：

- 查看 **当前店铺** 已保存的 **发货信息**；
- **编辑并保存** 发货人、联系方式、**发货地区（省市区）** 及 **发货详细地址**；
- 为 C 端 **商品详情 · 物流说明** 中的 **发货地（发货城市）** 提供 **店铺级数据源**；
- 统一维护本店 **对外展示的发货地口径**，避免各商品各自维护。

**不包含（本期或与它模块分工）：**

| 能力 | 说明 |
|------|------|
| **平台 · 配送设置** | **无** 平台级发货地址；**仅** 商家维护 **本店** 设置；平台 **不** 代配、 **不** 查看维护页 |
| **运费模版** | 见 **运费模版** 专册；维护 **计价/包邮/地区运费/发货承诺时间**；**不** 维护发货人地址 |
| **订单去发货** | 见 **发货管理 / 全部订单 / 平台订单管理**；单笔订单 **配送方式、物流单号、配送员** 等在 **发货时** 填写 |
| **店铺基础资料** | 见 **商家 · 店铺设置**（名称、头像、简介、商家电话）；**不含** 发货人/发货仓库地址 |
| **C 端收货地址** | 见 **我的服务 · 收货地址**；买家地址 **与本模块无关** |
| **物流公司、电子面单** | **非本期** |

### 1.2 与草稿的对应关系

| 草稿条目 | 定稿处理 |
|----------|----------|
| §1 发货信息字段（四字段） | §6.1 |
| §2 每店一份 | §1.5、§6.2、**DS2** |
| §3 按店铺查询 | §1.5、§8 |
| §4 店铺上下文 | §2.7、§8、**DS1** |
| §5 异常 code/msg/data | §12 **提示要点**；**不纳入** 实现格式 |
| §6 技术栈 | **不纳入** 本文档 |

### 1.3 在供给链中的位置

依据 **《关联需求分析.md》§5.1、§3.1**：

```text
【平台】店铺管理 ── 开店（本模块数据初始为空）
            ↓
【商家】登录 → 选择当前店铺（X-Shop-Id）
            ↓
【商家】配送设置（本模块）── 维护本店发货人 + 发货地址（一份）
            ├── 与运费模版（并列）── 发品/下单运费规则
            └── 与订单发货（下游）── 单笔履约信息
            ↓
【C 端】商品详情 GD ── 物流说明区展示 **发货城市**（读本模块；未维护则隐藏或兜底文案）
            ↓
【平台/商家】订单管理 ── 去发货填写 **本单** 物流/配送员（**不自动** 等于本模块全部字段）
```

| 关联模块 | 关系 | 边界说明 |
|----------|------|----------|
| **运费模版** | **并列** | 同属 **物流相关**；模版管 **运费与发货承诺**；本模块管 **发货地/发货人** |
| **商品列表** | 间接 | 发品 **快递运费** 仍走 **固定运费/运费模版**；**不** 在发品表单重复录入发货地址 |
| **店铺设置（商家）** | 并列 | 店名/头像/电话 vs **发货仓库地址**；**分区维护** |
| **发货管理 / 全部订单** | 下游履约 | 订单 **去发货** 填 **配送方式、单号、配送员**；**不以** 本模块替代 |
| **平台 · 订单管理** | 下游 | 平台代运营发货；**不** 维护商家配送设置 |
| **C 端 · 商品详情** | 下游只读 | **发货地** 展示 **发货城市**（§2.6）；**运费/承诺发货** 来自 **其它数据源** |

### 1.4 使用端与角色

| 端 | 可操作角色 | 能力 |
|----|------------|------|
| **店铺经营管理端** | **商户经营账号** | 本模块全部能力（含切换店铺后维护 **对应店** 设置） |
| **店铺经营管理端** | 员工（子管理员） | 是否可访问由 **角色管理** 中商家端菜单权限决定 |
| **平台管理端** | 平台管理员 | **不使用** 本模块；**不** 查看/维护商家发货信息 |
| **C 端** | 买家/访客 | **不可** 访问维护页；**只读** 商品详情中的 **发货城市** 展示 |

### 1.5 数据范围

- **纳入：** 请求上下文 **当前店铺** 下 **唯一一份** 发货信息设置（已保存或未首次保存）；
- **排除：** 其他店铺设置；平台级配置；
- **上下文：** 页头展示 **当前店铺名称**（只读）；切换店铺后 **整页刷新** 为 **另一店** 的设置。

---

## 2. 关联需求分析

### 2.1 与《关联需求分析》— 供给链

| 关联点 | 定稿 |
|--------|------|
| **§3 模块职责** | 商家维护 **本店** 物流辅助数据；平台 **商品/订单** 监管 **交易**，**不** 维护发货地址 |
| **§5.1 开业流程** | 开店后本模块 **初始无数据**（或空表单）；**不阻塞** 发品/上架；C 端 **发货地** 在未维护前 **隐藏或兜底** |
| **§5.3 店铺停业** | 停业后商家端 **仍可** 维护配送设置；C 端该店 **禁止下单**（**不自动** 清空本模块） |
| **§8 不级联** | 修改发货地址 **不自动** 改变商品上下架/审核状态；**不追溯** 历史订单 |
| **§9.1 经营账号** | 须 **选定当前店铺** 再操作；多店 **各店一份** 设置 |
| **硬前置** | **无有效店铺** → 不可进入本模块 |

### 2.2 与平台《店铺管理功能需求》

| 项 | 定稿 |
|----|------|
| 店铺创建 | 本店配送设置 **初始为空**；**不在** 平台开店表单采集发货地址 |
| 店铺资料 | 平台维护 **店名、营业状态、经营账号** 等；**不含** 商家发货仓库信息 |
| 店铺停业 | 商家 **可维护** 本模块；C 端 **不可下单** |
| 店铺逻辑删除 | 本店设置 **不可再维护**（与店生命周期一致） |
| 多店 | **每店独立一份**；须 **切换当前店铺** |

### 2.3 与平台《订单管理功能需求》

| 项 | 定稿 |
|----|------|
| 订单履约 | 平台 **去发货** 填写 **发货时间、配送方式、物流/配送员**（O5 整单发货） |
| 与本模块 | 订单 **收货地址** 为买家地址；**发货侧** 本模块提供 **店铺默认发货地展示口径**；**不替代** 订单级物流字段 |
| 平台监管 | 平台 **只读** 订单物流信息；**不** 维护商家配送设置 |
| 历史订单 | 已生成订单 **不因** 本模块修改而 **变更** 已存物流快照 |

### 2.4 与商家《运费模版功能需求》

| 维度 | 运费模版 | **本模块 · 配送设置** |
|------|----------|----------------------|
| 维护内容 | 模版名称、包邮、计价、地区运费、**发货承诺时间** | **发货人、联系方式、发货地区（省市区）、详细地址** |
| 数量 | **多条** 模版 | **每店一份** |
| 发品 | 商品 **选用** 模版或固定运费 | **不参与** 发品表单字段 |
| C 端展示 | 运费说明、发货承诺类文案 | **发货城市**（§2.6） |
| 删除/默认 | 模版可删、可设默认 | **无** 多条/默认概念；**覆盖保存** 唯一一份 |

### 2.5 与商家《发货管理》《全部订单功能需求》

| 项 | 定稿 |
|----|------|
| 去发货 | 填写 **本单** 配送方式、物流公司/单号 或 车辆/配送员（FM13/SO13） |
| 与本模块 | **不预填** 至发货弹窗（**DS6**）；**发货成功时** 后端 **读取并快照** 本模块至 `biz_order` |
| 列表/详情 | **已发货** 展示 **订单快照**；**待发货** 详情 **可选只读** 展示当前设置（见 **《发货管理功能需求》** §7.2） |
| 数据隔离 | 订单 `shop_id` 一致；本模块 **仅服务** 店铺展示与内部规范 |

### 2.6 与 C 端《商品详情内页功能需求》— 物流说明

| 项 | 定稿 |
|----|------|
| 发货地 | 展示 **发货城市**（**市级** 文案即可，如「拉萨市」）；数据来自 **本模块当前店设置** |
| 未维护 | **隐藏** 该行，或展示 **「请咨询客服」**（以前台 UX 择一，全站统一） |
| 承诺发货时间 | 来自 **商品服务快照** 或 **运费模版发货承诺** 等；**非** 本模块字段 |
| 运费 | 来自 **商品固定运费/运费模版**；**非** 本模块 |
| 分区 | **服务说明**（平台服务标签）与 **物流说明**（运费/发货地/时效）**分区展示**（GD §4.4～4.5） |

### 2.7 与《商家端店铺上下文接口说明》

| 项 | 定稿 |
|----|------|
| 当前店铺 | 登录后须 **选定当前店铺**；读写 **仅当前店** 设置 |
| 经营账号 | 多店可 **切换**；切换后 **整页刷新** |
| 员工账号 | 绑定 **单店**；**不可** 切换 |
| 未选店铺 | **不可** 进入本模块；提示 **请先选择当前店铺** |

### 2.8 与商家《店铺设置功能需求》

| 项 | 定稿 |
|----|------|
| 商家电话 | **店铺设置** 维护 **对外联系电话**（C 端售后文案等） |
| 发货人手机 | **本模块** 维护 **发货人联系方式**；**可与** 商家电话 **相同或不同**（业务上允许） |
| 菜单 | **店铺设置** 与 **配送设置** **独立菜单**；**不合并** 为同一表单 |

---

## 3. 业务概念

| 概念 | 说明 |
|------|------|
| 发货信息设置 | **当前店铺** 维度的 **唯一一份** 发货人及发货地址配置 |
| 发货人 | 对外履约/contact 维度的 **发货方姓名**（如仓库负责人、店铺联系人） |
| 发货地址 | **发货地区（省市区）** + **详细地址** 组成的发货地；C 端详情 **至少展示城市** |
| 每店一份 | 同一 `shop_id` **至多一套** 有效设置；保存即 **覆盖更新** |
| 首次保存 | 此前无记录时，提交表单 **创建** 本店设置 |
| 修改保存 | 已有记录时，提交 **覆盖** 原内容 |

---

## 4. 功能结构

```text
配送设置（商家端 · 当前店铺 · 每店一份）
└── 发货信息设置
    ├── 查看（进入页面回显）
    └── 编辑保存（新增或覆盖）
```

> **说明：** 本模块 **无列表、无删除、无批量**；仅 **单页表单** 维护唯一配置。

---

## 5. 页面与数据流

### 5.1 进入与加载

```text
商家登录 → 选定当前店铺
    ↓
进入「配送设置」菜单
    ↓
系统按当前 shop_id 查询发货信息
    ├── 有记录 → 表单 **回显** 全部字段
    └── 无记录 → **空表单** + 可选引导文案（如「请完善发货信息，便于买家了解发货地」）
```

### 5.2 保存流程

```text
商家填写/修改表单
    ↓
点击「保存」
    ↓
前端/服务端校验（§6.3）
    ├── 不通过 → 提示具体字段，**不保存**
    └── 通过 → 写入/更新 **当前店唯一一份**
            ↓
        提示保存成功；C 端商品详情 **后续访问** 读取最新 **发货城市**
```

### 5.3 切换店铺

```text
Navbar 切换当前店铺
    ↓
本页 **整页刷新**
    ↓
加载 **新店** 发货信息（可能为空或与上一店不同）
```

---

## 6. 发货信息设置

### 6.1 表单字段（定稿 · 对齐草稿 §1）

| 字段 | 必填 | 说明 |
|------|:----:|------|
| 发货人 | 是 | 发货方姓名/称呼 |
| 发货人联系方式 | 是 | 手机号；用于 **发货联系**（展示/联系口径由产品定，**不要求** 与商家电话一致） |
| 发货地区 | 是 | **省 / 市 / 区** 级联选择（草稿称「发货地区（省市区）」）；C 端 **发货地** 主要展示 **市级** 名称 |
| 发货详细地址 | 是 | 街道、门牌等 **详细地址** |

> **说明：** 「发货地区」在页面上为 **一个级联控件**，内含省 / 市 / 区三级；**非** 三个独立表单项。草稿未单列「邮编」；**非本期** 增加邮编字段，除非产品另定。

### 6.2 唯一性与归属

| 规则 | 说明 |
|------|------|
| 归属 | 设置 **绑定当前店铺**；**不可** 跨店共用或复制 |
| 数量 | **每店一份**；再次保存 **覆盖** |
| 删除 | **不提供** 「清空/删除设置」按钮；若需停用 C 端展示，产品可 **留空不保存** 或 **后续单独立项**（本期 **以保存完整表单为准**） |

### 6.3 校验规则（功能口径）

| 规则 | 说明 |
|------|------|
| 必填 | §6.1 标记 **是** 的字段 **均须填写** 方可保存 |
| 手机号 | **11 位** 大陆手机号格式（或与全项目 **商家电话** 规则一致） |
| 行政区划 | **发货地区** 须 **省 / 市 / 区** 选全且级联合法；不可 **只选省不选市** |
| 详细地址 | 非空；长度上限由产品/前台约束（建议 ≤200 字） |
| 发货人 | 非空；长度建议 ≤64 字 |

### 6.4 保存后效果

| 维度 | 效果 |
|------|------|
| 本模块 | 再次进入 **回显** 最新内容 |
| C 端 · 商品详情 | **发货城市** 更新为最新 **发货城市** 字段 |
| 历史订单 | **不变** |
| 商品/模版 | **不自动** 修改发品运费或服务快照 |

---

## 7. 本模块不可做能力

| 能力 | 负责方 | 说明 |
|------|--------|------|
| 运费计价、包邮、地区运费 | **运费模版** | |
| 商品发品选运费 | **商品列表** | |
| 订单去发货、物流节点 | **发货管理 / 全部订单 / 平台订单** | |
| 店铺名称、头像、商家电话 | **商家 · 店铺设置** | |
| 平台代配发货地址 | **无** | 平台 **不** 维护 |
| 多仓库、多发货点 | **非本期** | 仅 **每店一份** |
| 从订单反写发货地址 | **非本期** | |
| 买家收货地址 | **C 端 · 我的服务** | |

---

## 8. 店铺上下文与权限

| 项 | 定稿 |
|----|------|
| 查询范围 | **仅** 当前 `shop_id` 对应设置 |
| 保存范围 | **仅** 当前 `shop_id`；**不可** 写入他店 |
| 未选店铺 | **不可** 进入；统一提示 **请先选择当前店铺** |
| 菜单权限 | 商家端菜单 **配送设置**；按钮 **查看/保存** 由 **角色管理** 配置 |
| 员工 | 无权限则 **不可见** 菜单或 **不可保存** |

---

## 9. 业务规则汇总

| 编号 | 规则 |
|------|------|
| **DS1** | 读写范围 = **当前店铺** 唯一一份发货信息 |
| **DS2** | **每店一份**；保存 = **新增或覆盖** |
| **DS3** | 开店后 **初始为空**；**不阻塞** 发品与上架 |
| **DS4** | C 端 **发货地** 展示 **发货城市**；未维护则 **隐藏或兜底文案** |
| **DS5** | 与 **运费模版** **并列**；**不** 互相替代 |
| **DS6** | 弹窗 **不预填**；**发货时快照** 至订单（不修改本表） |
| **DS7** | 修改 **不追溯** 已发货订单快照、 **不级联** 商品状态 |
| **DS8** | 切换店铺后 **整页刷新** 加载对应店数据 |
| **DS9** | 平台端 **无** 本模块菜单 |
| **DS10** | 必填与格式校验 **不通过不可保存** |
| **DS11** | 员工须具 **菜单/保存权限** |

---

## 10. 页面与交互要点

| 场景 | 要求 |
|------|------|
| 首次进入 | 空表单 + 简短说明 **完善发货信息的作用** |
| 回显 | 已有数据 **全部字段回显** |
| 省市区 | **发货地区** 级联选择；变更上级时 **清空下级** |
| 保存 | 主按钮「保存」；成功 **Toast**；失败 **字段级或统一 msg** |
| 切换店铺 | **整页刷新**；**不** 保留上一店表单缓存 |
| 权限 | 只读角色 **禁用保存** 或 **隐藏保存** |
| 与运费模版 | 菜单上 **同属物流相关** 时可 **并列入口**；页面 **不混合** 运费规则表单 |

---

## 11. 与关联模块协作流程

```text
【平台】开店
    ↓
【商家】配送设置 → 保存发货人 + 发货地址（可选但建议尽早）
    ↓
并行：
【商家】运费模版 → 维护运费规则
【商家】商品列表 → 发品（运费仍走固定/模版）
    ↓
【C 端】商品详情 → 物流区：运费（商品侧）+ 发货城市（本模块）
    ↓
【商家/平台】订单待发货 → 去发货（读本模块快照至订单 + 填本单物流/配送员）
```

---

## 12. 提示与异常（功能 msg 口径）

> **不规定** HTTP/code 结构；以下为 **业务提示** 建议文案。

| 场景 | msg（建议） |
|------|-------------|
| 未选店铺 | 请先选择当前店铺 |
| 发货人为空 | 请填写发货人 |
| 联系方式为空/格式错误 | 请填写正确的发货人联系方式 |
| 省市区未选全 | 请选择完整的发货地区 |
| 详细地址为空 | 请填写发货详细地址 |
| 保存成功 | 保存成功 |
| 越权/店无效 | 当前店铺无效或无权操作 |

---

## 13. 草稿对照与修订说明

| 草稿条目 | 本文档处理 |
|----------|------------|
| §1 四字段（含发货地区·省市区） | §6.1 |
| §2 每店一份 | §6.2、DS2 |
| §3 按店铺查 | §5.1、§8 |
| §4 店铺上下文 | §2.7、§8、DS8 |
| §5～§6 | **不纳入** |
| 补充平台/C 端/订单/运费边界 | §2、§7 |
| 补充校验与 C 端发货城市 | §6.3、§2.6、DS4 |

---

## 14. 非本期范围

| 项 | 说明 |
|----|------|
| **多发货点 / 多仓库** | 仅 **每店一份** |
| **订单发货弹窗预填** 本模块地址 | DS6：仍 **不预填**；**快照** 见《发货管理》v1.3 |
| **平台查看/代改** 商家发货信息 | DS9 |
| **邮编、经纬度、地图选点** | 除非产品单独立项 |
| **与第三方物流平台对接** | — |
| **接口、数据库、技术栈** | **不纳入** |

---

## 15. 修订记录

| 版本 | 说明 |
|------|------|
| **v1.2** | DS6 修订：发货时 **快照** 至 `biz_order`；弹窗仍不预填 |
| **v1.1** | 对齐草稿 §1：表单字段由「省/市/区三分项」合并为 **发货地区（省市区）** 一项；交互与接口 `region` 对象一致 |
| **v1.0** | 首版定稿；对齐草稿 §1～§4；关联平台店铺/订单、商家运费模版/发货/店铺设置、C 端商品详情发货地；明确每店一份、与运费模版及订单履约边界 |

---

*文档版本：v1.2（定稿）· 草稿《配送设置功能需求-草稿.md》保持不变 · 商家侧见《发货管理功能需求.md》v1.3、《全部订单功能需求.md》v1.0*
