Files

402 lines
38 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 4.6 采购
> **本文件是【采购 PUR】模块需求的编辑入口。**
> 主文件 [`../Continental-Retail-APP-PRD.md`](../Continental-Retail-APP-PRD.md) 第 4.6 节已于 2026-08 从本文件回灌(V1.1),此后的需求变更仍改本文件、再回灌。
> **两者不一致时以本文件为准。** 目录约定见 [`README.md`](./README.md)。
| 项 | 值 |
| --- | --- |
| 模块码 | PUR |
| V1.0 章节 | 4.6 |
| 描述粒度 | 14 维完整模板 |
| 需求依据 | 业务需求 + ROOS 截图 + 设计稿 |
| 现状承载系统 | ROOS(马牌)+ F6(非马牌) |
| 需求条数 | 18(待确认 12,完成度 33% |
| 本次新增待确认 | 5REQ-PUR-014 ~ 018 |
| 配图 | 9 张(设计稿 2 / 现状-ROOS 7 |
模块概要
---
**采购覆盖门店要买的全部商品**,包括马牌商品与耗材、辅料、其它品牌轮胎,一套浏览、加购、结算、收货、售后流程走到底,门店不需要按品牌切换页面。
数据来源上,马牌商品走 ROOS、其余商品走 F6。ROOS 本身就是马牌在 F6 后台之上自建的采购小程序 —— 品牌方要单独管理并统计各门店对自有品牌的采购情况,才有了这一层;对门店而言仍是同一个采购功能。
## 4.6.1 需求描述
**业务目标** —— 门店在 App 内完成**全部品类**的订货全流程(搜索 → 加购 → 结算 → 收货 → 售后),覆盖马牌与非马牌商品,并保留 ROOS 的额度、返利、优惠券结算能力,解决[痛点 2.3](../Continental-Retail-APP-PRD.md#23-进销存--erp-数据)
**目标角色** —— 店长:全部;技工:**需被授权**后功能同店长
**入口** —— 底部导航「采购」tab;首页快捷入口「采购」。全部商品同在此 tab 内,按分类 / 品牌逐级筛选
**前置条件** —— 已登录、已确定门店;采购马牌商品还需门店在 ROOS 有有效的经销商 / 信用账户
**页面内容** —— 商品搜索与筛选 → 商品列表 → 购物车 → 订单确认(费用构成与扣账方式)→ 我的订单(六状态)→ 订单详情 → 售后/退款;扫码收货
**主流程** —— 搜索商品 → 加入购物车 → 调整数量并勾选 → 结算 → 确认费用与扣账方式 → 提交订单 → 扫码收货。马牌与非马牌商品的流程完全一致,门店感知不到品牌差异
**异常流程**
- 信用额度不足 → 提示并阻断提交(校验时机见 [REQ-PUR-017](#467-业务规则)
- 商品无库存 → 加购按钮替换为「缺货登记」入口([REQ-PUR-014](#467-业务规则)
- 商品下架 → 列表不再返回该商品
- 扫码收货条码不匹配 → 提示并拒收
**业务规则** —— 见 [4.6.7](#467-业务规则)
**权限规则** —— 技工默认无采购权限,需店长/后台授权([REQ-PUR-001](#467-业务规则)
**访问链路** —— App → App Backend → ROOS(马牌商品)/ F6(非马牌商品)
**逻辑数据来源** —— **马牌商品:ROOS**;**非马牌商品:F6**。两者的底层服务同为 F6,ROOS 是马牌品牌侧的管理与统计层
**回写目标** —— 购物车、采购订单、扣账方式选择、收货确认、售后申请 → 对应来源系统
**状态变化** —— 采购订单:待支付 → 待发货 → 待收货 → 已收货;可取消 → 已取消(六状态,见 [REQ-PUR-006](#467-业务规则)
**验收标准** —— 见 [4.6.9](#469-验收标准)
## 4.6.2 产品搜索与商品列表
用户通过顶部搜索框与筛选条件收窄范围,查询出搜索结果列表。**马牌商品的搜索接口来源于 ROOS,非马牌商品来源于 F6**,两类结果在同一列表内呈现,门店按品牌 / 分类筛选即可,不需要切换页面。
![设计稿-订单管理-商品列表](../app-design-images/订单管理-商品列表.png)
**页面内容** —— App 采购商品列表的目标形态:搜索框 + 购物车图标、一行规格筛选、「显示有货 / 显示促销」开关与品牌下拉,主体为单列商品卡(**4 张卡为同一份占位数据**,仅库存状态不同)。
**关键交互** —— ①点规格筛选任一项 → 展开该维度取值多选;②切换「显示有货 / 显示促销」→ 列表按开关过滤;③点「马牌 ▾」→ 切换品牌;④有货 / 库存紧张的卡点右下加购图标 → 加入购物车,购物车角标 +1;⑤**缺货卡的加购图标被替换为「去登记」按钮** → 进入缺货登记([REQ-PUR-014](#467-业务规则));⑥点购物车图标 → 进入购物车页。
**可用角色** —— 店长 ✅ 全量;技工 ⚙️ 需店长或后台在[人员管理「可用系统」](./09-STM-门店管理.md#49-门店管理)中授予采购权限后方可进入([REQ-PUR-001](#467-业务规则))。
**需求关联** —— [REQ-PUR-007](#467-业务规则) 数据来源、[REQ-PUR-010](#467-业务规则) 商品域范围、[REQ-PUR-014](#467-业务规则) 缺货登记、[REQ-PUR-015](#467-业务规则) 商品卡字段
![现状-ROOS 商品选择](../mini-program-images/ROOS/商品选择.png)
**页面内容** —— ROOS 小程序的商品选择页,结构与上方设计稿高度一致,差别在于商品卡多出「可延保」与时效标、缺货商品直接在图上压「缺货」并给出「缺货登记」按钮,底部是 ROOS 自身的四 tab。
**关键交互** —— ①同上方设计稿的搜索与筛选;②点「缺货登记」→ 提交该商品的缺货登记;③点加购 → 加入 ROOS 购物车;④点底部 tabbar「购物车」→ 进入购物车页。**整合到 App 后 ROOS 自身的 tabbar 不再出现**,购物车入口收敛到列表页右上角(见上方设计稿)。
**可用角色** —— 同上方设计稿:店长 ✅、技工 ⚙️。
**需求关联** —— [REQ-PUR-007](#467-业务规则) 数据来源、[REQ-PUR-014](#467-业务规则) 缺货登记、[REQ-PUR-015](#467-业务规则) 商品卡字段
> **本节正文原描述与两张图不符,已按图修订**(不新增需求编号):
>
> V1.0 原文写「左侧树形分类(按品牌 / 花纹 / 规格逐级收窄)+ 右侧商品卡」。**两张图都不是这个结构** —— 均为「顶部平铺筛选行 + 单列商品卡」,没有左侧分类树。[4.6.8](#468-业务数据列表) 中 `productCategory` 的备注「树形分类」也应据此复核:该字段可能只是后台的分类层级,并不对应一个前端树形控件。上方正文已改为「顶部搜索框与筛选条件」。
## 4.6.3 购物车与结算
**加入购物车**:用户点击商品卡的加购图标,将商品加入购物车。用户可以调整采购数量,选择商品条目前面的选择图标,点击「结算」按钮进入结算页。
![设计稿-订单管理-购物车](../app-design-images/订单管理-购物车.png)
**页面内容** —— App 购物车的目标形态,商品**按品牌分组**(「德国马牌」组已勾选、「维京轮胎」组未勾选),底部为「合计 / 已减 / 结算」结算条。
**关键交互** —— ①勾选 / 取消单行或整个品牌组 → 合计与已减金额实时重算;②数量步进器 `` / `+` → 改变该行数量;③点「优惠明细 ^」→ 展开本单优惠构成;④点「结算」→ 进入订单确认页。
**可用角色** —— 店长 ✅;技工 ⚙️ 被授权后可加购与调整数量,**能否点「结算」并最终提交订单未定** `TODO(REQ-PUR-002)`,关闭前按不可提交实现。
**需求关联** —— [REQ-PUR-011](#467-业务规则) 购物车与订单是否合并、[REQ-PUR-002](#467-业务规则) 技工下单权限
> **本图不能作为 [REQ-PUR-011](#467-业务规则) 已解决的证据**:图中分组的「德国马牌」与「维京轮胎」**同属 ROOS 的品牌**,两者本来就在一个系统内。真正的分歧点是 ROOS 商品与 F6 非马牌商品能否共用一个购物车,本图未涉及。
![现状-ROOS 购物车](../mini-program-images/ROOS/购物车.png)
**页面内容** —— ROOS 现状购物车,**本图为单商品的轻量态**(无优惠行),商品归在「德国马牌」组下,行内比设计稿多出商品编码与时效标。
**关键交互** —— ①点「编辑」→ 进入批量管理态(可删除 / 移出);②勾选与数量调整同设计稿;③点「结算」→ 进入订单确认页。
**可用角色** —— 同上方设计稿:店长 ✅、技工 ⚙️ + `TODO(REQ-PUR-002)`
**需求关联** —— [REQ-PUR-015](#467-业务规则) 商品卡字段(商品编码、时效标)
> 时效标在三张图里出现了**三种写法** —— 设计稿购物车「最快45分钟」、ROOS 商品选择「⏱45分钟」、ROOS 购物车「⏱1小时」。该标是随商品与仓库动态计算的,App 侧需统一文案模板,一并归入 [REQ-PUR-015](#467-业务规则)。
**结算与提交订单**:用户在订单确认页核对费用构成后,点击「提交订单」,完成采购流程。
![现状-ROOS 订单确认](../mini-program-images/ROOS/订单确认.png)
**页面内容** —— ROOS 现状订单确认页,自上而下为收货地址、订单商品区、费用构成(立减 / 优惠券 / **运费待双方商定** / **返利请选择** / 备注)与底部支付条(**信用额度不可用**),**本图为测试数据**(收货人「测试」、地址为重复拼接的脏数据)。
**关键交互** —— ①点收货地址 → 切换 / 编辑地址;②点「优惠券」→ 选择可用券;③点「返利 请选择」→ 选择本单抵扣的返利额度(见[返利中心](./11-RBT-返利中心.md#411-返利中心));④填写备注;⑤点「提交订单」→ 提交(额度校验结果见下图)。
**可用角色** —— 店长 ✅;技工 ❓ `TODO(REQ-PUR-002)`。返利抵扣涉及门店资金账户,即便技工被授权采购,是否可动用返利额度需一并确认。
**需求关联** —— [REQ-PUR-004](#467-业务规则) 支付方式、[REQ-PUR-016](#467-业务规则) 订单确认页费用构成、[REQ-PUR-011](#467-业务规则) 购物车与订单是否合并
> **本图给出两条与 V1.0 正文冲突的事实**:
>
> 1. **页面上没有任何支付方式选择器。** V1.0 的 4.6.3 原文写「用户选择支付方式后,点击提交订单」,现状实际是「信用额度 + 返利 + 优惠券」三者构成扣账,没有微信/支付宝式的支付方式单选。整合后的形态归入 [REQ-PUR-016](#467-业务规则) 与 `TODO(REQ-PUR-004)`。
> 2. **订单标题为「订单1–德国马牌」并标「普通订单」** —— 说明 ROOS 现状**已经按品牌把一次结算拆成多张订单**。这对 [REQ-PUR-011](#467-业务规则) 是重要输入:连同属 ROOS 的两个品牌都要拆单,跨 ROOS / F6 合并成一张订单的可行性更低,更现实的形态是「一个购物车 → 按来源拆多张子订单 → 列表侧聚合展示」。
**信用额度校验**:额度不足时给出明确提示并阻断下单。
![现状-ROOS 订单确认-额度不足提示](../mini-program-images/ROOS/订单确认-额度不足提示.png)
**页面内容** —— 订单确认页上弹出的失败弹窗,标题「订单提交失败」,正文「账户额度不足,请联系经销商处理」,单按钮「我知道了」。
**关键交互** —— ①点「我知道了」→ 关闭弹窗回到订单确认页,订单未生成。**无重试、无跳转充值 / 联系经销商的入口**,门店只能自行线下联系。
**可用角色** —— 店长 ✅、技工 ❓ `TODO(REQ-PUR-002)`(能提交才会遇到本弹窗)。
**需求关联** —— [REQ-PUR-003](#467-业务规则) 额度校验、[REQ-PUR-017](#467-业务规则) 额度校验时机
> **本图与 [REQ-PUR-003](#467-业务规则)、[验收标准第 2 条](#469-验收标准)直接冲突**:现状是**点击提交之后**才由服务端返回「订单提交失败」,而 REQ-PUR-003 要求「提交订单前校验」、验收标准要求「『提交订单』不可点击,且提示包含可用额度与本单金额」。现状弹窗既不置灰按钮,也不告知可用额度与本单金额差额。已新增 [REQ-PUR-017](#467-业务规则) 明确校验时机与提示内容。
> 支付方式的可选集合、优先级与扣账逻辑由「[支付优先级设置](./08-MIN-我的.md#48-我的--个人中心)」决定。整合后支付方式与 CDMS 支付的关系 —— `TODO(REQ-PUR-004)`。
## 4.6.4 收货
用户扫描商品,完成收货流程。扫码为 **App 原生实现**(见 [REQ-INT-003](../Continental-Retail-APP-PRD.md#73-f6-集成边界)),非嵌入 H5。
> 收货扫码与[扫码入库](./07-INV-库存.md#47-库存)是否为同一动作、是否一次扫码同时完成收货与入库 —— `TODO(REQ-PUR-005)`。
>
> [附录 A.5](../Continental-Retail-APP-PRD.md#a5-采购) 第 5 条已经把这两件事写成同一个数据集「收货(扫码入库)」,倾向于合并;但正文与 REQ-PUR-005 仍按未定处理,需业务正式确认后统一两处口径。
本节无配图 —— **收货页面既无设计稿也无现状截图**,扫码后的收货确认页(是否逐条核对、是否支持部分收货、拒收如何记录)目前没有任何页面材料。
## 4.6.5 订单管理与售后
**采购订单列表**:tag 分为**全部、待支付、待发货、待收货、已收货、已取消**六个状态。
![现状-ROOS 我的订单-全部](../mini-program-images/ROOS/我的订单-全部.png)
**页面内容** —— ROOS「我的订单」列表,顶部为搜索框与「筛选」、其下六个状态 tab(全部 / 待支付 / 待发货 / 待收货 / 已收货 / 已取消,当前选中「全部」),**本截图为空态**(「您还没有相关的订单」),故订单行的字段与操作按钮无法从本图确认。
**关键交互** —— ①在搜索框输入订单号 / 商品名称 / 商品编码 → 检索订单;②点「筛选」→ 打开 tab 之外的附加筛选条件(**本图未展开,筛选维度无法确认**);③点任一状态 tab → 切换列表;④点订单行 → 进入订单详情。
**可用角色** —— 店长 ✅ 全量;技工 ⚙️ 被授权后可查看订单([附录 B](../Continental-Retail-APP-PRD.md#附录-b-权限矩阵)「搜索 / 加购 / 查看订单」为 ⚙️)。
**需求关联** —— [REQ-PUR-006](#467-业务规则) 订单状态机
> **状态集合按本图修订。** V1.0 原写五状态「全部 / 待支付 / 待发货 / **已发货** / 已取消」,现状实为六个 tab:把「已发货」叫作「**待收货**」,并且多出「**已收货**」这一独立状态 —— 后者正对应 REQ-PUR-006 原文里那个没有 tab 的「(收货)完成」。[REQ-PUR-006](#467-业务规则) 与[验收标准第 4 条](#469-验收标准)已同步改为六状态。
>
> 另:**现状 tab 上不带条数角标**,而验收标准第 4 条要求「tab 计数与列表条数一致」—— 该计数是 App 侧的新增要求,接口需支持按状态返回计数。
![现状-ROOS 我的订单-待支付](../mini-program-images/ROOS/我的订单-待支付.png)
**页面内容** —— 同一页面切到「待支付」tab,搜索、筛选与六个 tab 均不变,**同样是空态**。
**关键交互** —— 与上一张图一致;本图仅用于佐证 tab 切换后页面骨架不变、六状态集合稳定。
**可用角色** —— 同上:店长 ✅、技工 ⚙️。
**需求关联** —— [REQ-PUR-006](#467-业务规则) 订单状态机
**采购订单详情**:查看订单流转状态。**本节无订单详情配图**,详情页的字段、可执行操作(取消 / 再次购买 / 申请售后的入口位置)缺少页面材料。
**售后 / 退款**:进入订单详情页面,点击「售后/退款」,进入「售后/退款」流程。
![现状-ROOS 售后退款](../mini-program-images/ROOS/售后退款.png)
**页面内容** —— ROOS「售后/退款」列表页,顶部依次为橙色提示条「退货订单将不会退回抵扣券」、售后单号搜索框与日期区间,**本截图为空态**,故售后单行的字段与状态无法从本图确认。
**关键交互** —— ①输入售后单号或销售订单号 → 检索售后单;②点「开始时间」/「结束时间」→ 选择日期区间过滤;③点售后单行 → 进入售后详情。**本页只做查询,发起售后的入口在订单详情页内**。
**可用角色** —— 店长 ✅;技工 ⚙️[附录 B](../Continental-Retail-APP-PRD.md#附录-b-权限矩阵)「售后 / 退款」为 ⚙️,需授权)。售后涉及退款去向,技工被授权后能否发起而非仅查看,随 `TODO(REQ-PUR-002)` 一并确认。
**需求关联** —— [REQ-PUR-018](#467-业务规则) 售后退款规则
> **本图暴露一条涉及资金、却完全未成文的规则**:「退货订单将不会退回抵扣券」—— 门店用抵扣券下单后退货,券不退回,实际损失由门店承担。V1.0 的 4.6.5 对售后只有一句「进入订单详情,点击售后/退款」,售后类型、可申请时限、退款去向(退回信用额度 / 返利 / 抵扣券)一概未定义。已新增 [REQ-PUR-018](#467-业务规则)。
>
> 另注意搜索框写的是「**销售订单号**」—— 这是 ROOS 站在**平台售货方**视角的措辞,而门店视角同一张单叫「采购订单」。整合进 App 后必须统一为门店视角,否则会与[销售模块](./03-SAL-销售.md#43-销售)的销售订单混淆。
> 采购订单的六状态(待支付 / 待发货 / 待收货 / 已收货 / 已取消 / 全部)与 O2O 销售订单的五状态([4.3.5](./03-SAL-销售.md#435-线上订单管理))**是两套完全不同的状态机**,UI 上必须明确区分,不可复用同一组件文案。
## 4.6.6 角色差异
| 角色 | 权限 |
| --- | --- |
| 店长 | 搜索、加购、结算、提交订单、收货、查看订单、发起售后 |
| 技工 | 默认不可见;被授权后功能同店长。是否允许技工提交订单(涉及资金)—— `TODO(REQ-PUR-002)` |
采购模块角色差异。资金相关动作(提交订单、选择返利抵扣、发起售后)在 `TODO(REQ-PUR-002)` 关闭前一律按技工不可执行实现。
## 4.6.7 业务规则
**REQ-PUR-001 采购授权** —— 技工需被显式授权才能进入采购模块;授权维度参见[人员管理「可用系统」](./09-STM-门店管理.md#49-门店管理)
**REQ-PUR-002 技工下单权限** —— 技工被授权后是否可提交订单待定 `TODO(REQ-PUR-002)`。该条同时覆盖「选择返利抵扣」与「发起售后」两个资金相关动作
**REQ-PUR-003 额度校验** —— 提交订单前校验信用额度;不足时阻断并提示。**校验时机与提示内容见 [REQ-PUR-017](#467-业务规则)**
**REQ-PUR-004 支付方式** —— 由支付优先级设置决定默认扣账方式;与 CDMS 支付的关系待定 `TODO(REQ-PUR-004)`
**REQ-PUR-005 收货与入库** —— 扫码收货与扫码入库是否合并为一次动作待定 `TODO(REQ-PUR-005)`
**REQ-PUR-006 订单状态机** —— 待支付 → 待发货 → 待收货 → 已收货;可取消 → 已取消。列表 tag 为「全部 / 待支付 / 待发货 / 待收货 / 已收货 / 已取消」六个,与销售订单状态机隔离
> 本条状态集合于 V1.1 按 [ROOS 我的订单截图](#465-订单管理与售后)修订:原写五状态、把「待收货」写作「已发货」且缺「已收货」。
**REQ-PUR-007 数据来源** —— 商品、价格、库存、订单、售后:马牌商品以 **ROOS** 为准,非马牌商品以 **F6** 为准;App 不落地二次计算的价格
**REQ-PUR-008 扫码实现** —— 收货扫码使用 App 原生扫码能力,不嵌入第三方 H5 扫码页
**REQ-PUR-009 车型字段来源** —— 商品的车型(`carModel`)是否取自 RMS 待确认 `TODO(REQ-PUR-009)`,见 [4.6.8](#468-业务数据列表)
**REQ-PUR-010 商品域范围** —— 采购覆盖门店需要的**全部商品**,含马牌商品与耗材、辅料、其它品牌轮胎。**只有一个采购入口**,门店在同一 tab 内按分类 / 品牌筛选,不因商品来源不同而切换页面。这是[痛点 2.1](../Continental-Retail-APP-PRD.md#21-多小程序分散)「多系统来回切换」在采购域的最后一块拼图
**REQ-PUR-011 购物车与订单是否合并** —— 马牌商品与非马牌商品能否放进同一个购物车、生成同一张订单待确认 `TODO(REQ-PUR-011)`。合并则需要跨来源的订单拆分与状态聚合;不合并则购物车与订单列表需按来源分列。**这是本模块最大的架构分歧点**
> V1.1 的实证输入:ROOS 订单确认页把一次结算按品牌拆成「订单1–德国马牌」等多张订单(见 [4.6.3](#463-购物车与结算))。**连同属 ROOS 的两个品牌都要拆单**,因此「一个购物车 + 提交后按来源拆多张子订单 + 订单列表聚合展示」是比「真正合并成一张订单」更现实的落点,建议以此为决策起点。
**REQ-PUR-012 非马牌结算与账期** —— 非马牌采购的支付方式、信用额度与账期是否与马牌采购一致待确认 `TODO(REQ-PUR-012)`。马牌侧的信用额度与支付提醒来自 ROOS / CDMS,非马牌侧是否共用同一套额度未知
**REQ-PUR-013 接入路径** —— ROOS 建于 F6 后台之上,F6 侧本身具备采购服务能力。App Backend 是走「马牌经 ROOS、非马牌直连 F6」两条链路,还是统一经 ROOS 代理,待确认 `TODO(REQ-PUR-013)`。无论哪种,**马牌商品的采购记录必须仍然进入 ROOS** —— 品牌方按门店统计自有品牌采购情况正是 ROOS 存在的原因。这一条需优先于 [REQ-PUR-011](#467-业务规则) 确认
**REQ-PUR-014 缺货登记与到货通知** —— 商品列表中缺货商品**不置灰**,而是把加购按钮替换为「缺货登记 / 去登记」入口,门店可登记采购意向。登记后的到货通知形式(是否推送、是否自动加购、登记记录在哪里查看)未定 `TODO(REQ-PUR-014)`;缺货登记对非马牌商品是否同样可用,随 [REQ-PUR-013](#467-业务规则) 一并确认
> 本条修正了 [4.6.1](#461-需求描述) 原异常流程「商品下架/无库存 → 列表置灰」的写法:**无库存不是置灰,而是换成一个可点的登记入口**;下架商品则根本不在列表中返回。
**REQ-PUR-015 商品卡与购物车字段** —— 商品卡除[业务数据列表](#468-业务数据列表)已有字段外,还需承载:**发货仓**(截图为「浦东新仓」)、**销量**(「已售 3426」)、**库存状态标**(有货 / 库存紧张 / 库存不足 / 缺货)、**可延保标**、**配送时效标**、**商品编码**(购物车内展示)。这些字段当前均不在 4.6.8 的 10 个字段内,来源与取值集合待补 `TODO(REQ-PUR-015)`。配送时效标现状有「最快45分钟」「⏱45分钟」「⏱1小时」三种写法,App 侧须统一为一个文案模板
**REQ-PUR-016 订单确认页费用构成** —— 订单确认页按「立减 → 优惠券 → 返利抵扣 → 运费 → 信用额度」的顺序展示费用构成,并给出「优惠后订单金额」与「剩余应付合计」。其中:**运费现状为「待双方商定」**(线下协商,无金额),**返利为「请选择」**(门店主动选择本单抵扣额度)。整合后 App 内运费如何呈现与确认、返利抵扣的可选额度来源、以及是否存在独立的支付方式单选(现状**没有**)待确认 `TODO(REQ-PUR-016)`,与 [REQ-PUR-004](#467-业务规则) 一并决策
**REQ-PUR-017 额度校验时机** —— 信用额度校验必须**在提交前**完成:额度不足时「提交订单」置为不可点击,并在按钮上方直接给出**可用额度与本单金额的差额**。服务端在提交时仍需二次校验兜底,但该兜底不得成为门店感知到的唯一提示。现状为提交后弹「订单提交失败 / 账户额度不足,请联系经销商处理」,无差额、无置灰、无后续入口 —— 是否需要在提示中提供「联系经销商」的跳转或经销商联系方式待确认 `TODO(REQ-PUR-017)`
**REQ-PUR-018 售后退款规则** —— 售后单支持按售后单号 / 采购订单号检索与日期区间过滤。**已确认的资金规则:退货订单不退回抵扣券**,该规则须在门店发起售后前显式告知并留痕。售后类型(退货 / 退款 / 换货)、可申请时限、退款去向(原路退回信用额度 / 返利 / 抵扣券)、审核流程均未定义 `TODO(REQ-PUR-018)`。**页面文案须统一为门店视角**:现状 ROOS 用的是平台视角的「销售订单号」,App 内应称「采购订单号」,避免与[销售模块](./03-SAL-销售.md#43-销售)的销售订单混淆
## 4.6.8 业务数据列表
| # | 字段 | 字段名 | 数据来源 | 说明 |
| --- | --- | --- | --- | --- |
| 1 | 商品名称 | productName | ROOS | |
| 2 | 商品编码 | productCode | ROOS | 现状购物车行内直接展示 |
| 3 | 品牌标识 | brandTag | ROOS | |
| 4 | 品牌 | brand | ROOS | 马牌 / 维京 等 |
| 5 | 单价 | price | ROOS | 不在 App 侧二次计算 |
| 6 | 计价单位 | priceUnit | ROOS | |
| 7 | 尺寸 | tireSize | ROOS | |
| 8 | 车型 | carModel | RMS | 车型匹配 `TODO(REQ-PUR-009)` |
| 9 | 安装位置 | installPositon | ROOS | 现有字段名拼写为 `installPositon`,接口对齐时需确认是否应为 `installPosition` |
| 10 | 产品分类 | productCategory | ROOS | 分类层级;是否对应前端树形控件需复核,见 [4.6.2](#462-产品搜索与商品列表) |
采购业务数据表。上表按马牌商品(ROOS)列出;非马牌商品的同名字段以 F6 为准,字段能否一一对齐随 [REQ-PUR-013](#467-业务规则) 的接入路径一并确认。
**上表尚未覆盖**截图中实际出现的以下字段,随 `TODO(REQ-PUR-015)` 补齐:发货仓、销量、库存状态、可延保标、配送时效、以及订单确认页的立减 / 优惠券 / 运费 / 返利抵扣 / 信用额度五项金额字段。
## 4.6.9 验收标准
1. 技工未被授权时,采购 tab 不下发、深链跳转也被拦截;
2. 信用额度不足时「提交订单」不可点击,且提示包含可用额度与本单金额;提交接口在服务端仍做二次校验([REQ-PUR-017](#467-业务规则));
3. 购物车勾选、数量修改在弱网下不丢失,恢复网络后与后端一致;
4. 采购订单**六**状态的 tab 计数与列表条数一致;
5. 扫码收货使用原生扫码,无 WebView 加载过程;
6. 采购 tab 内可同时检索到马牌与非马牌商品,两类商品的下单、支付、收货、售后在交互上完全一致,商品来源对门店可见但不改变操作路径;
7. 门店未接入 F6 时,非马牌商品不出现在采购 tab 内且不报错,见[门店能力开关](../Continental-Retail-APP-PRD.md#74-门店能力开关)
8. 缺货商品的卡片给出「缺货登记」入口而非置灰,登记成功后有明确反馈([REQ-PUR-014](#467-业务规则));
9. 发起退货前,「退货订单不退回抵扣券」的提示对门店可见([REQ-PUR-018](#467-业务规则))。
> 第 2、4 条按本次逐图核看结果修订,第 8、9 条为本次新增。
---
## 附:本模块归拢信息
> 以下内容从主文件的其它章节归拢而来,便于本模块独立评审。**回灌主文件时不处理本分界线以下的部分**——主文件的附录仍是全局视图。
### 附-1 业务数据字典(主文件附录 A.5)
| # | 数据集 | 来源 | 安全 | 备注 |
| --- | --- | --- | --- | --- |
| 1 | 商品信息(名称/规格/型号/价格/库存/详情/参数) | Mini Program Backend | HTTPS | ROOS |
| 2 | 当前用户购物车信息数据集 | Mini Program Backend | HTTPS | 保存至 ROOS |
| 3 | 促销日历数据集 | Mini Program Backend | HTTPS | 活动数据接口待确定 |
| 4 | 结算信息结果集 | App Backend | **证书令牌** | 需调用三方接口,银行接口可能需令牌或证书 |
| 5 | 收货(扫码入库) | **原生 `native_scan`** | — | ⚠️ 前期材料写「嵌入 F6 扫码入库页面」,已按 [REQ-INT-003](../Continental-Retail-APP-PRD.md#71-访问链路原则) 校正 |
| 6 | 采购订单列表 / 采购订单详情 | Mini Program Backend | HTTPS | |
采购模块数据集(摘自主文件[附录 A.5](../Continental-Retail-APP-PRD.md#a5-采购))。字段级清单见上方 [4.6.8](#468-业务数据列表)。
两处需要注意的对不齐:
1. **第 3 条「促销日历数据集」在正文 4.6 中没有任何对应功能。** 商品列表有「显示促销」开关、购物车有「已减 / 优惠明细」、订单确认页有「优惠券」,但都不是「促销日历」。该数据集究竟服务于采购页的哪个位置,还是应归到[营销与会员](./13-MKT-营销与会员.md#413-营销与会员),需在 `TODO(REQ-PUR-016)` 一并厘清。
2. **第 5 条已把「收货」与「扫码入库」并为同一数据集**,实际上给 `TODO(REQ-PUR-005)`(两者是否合并)预设了答案。正文仍按未定处理,两处口径需在该 TODO 关闭时统一。
### 附-2 权限矩阵(主文件附录 B 本模块分行)
**图例**:✅ 完整权限 · 🔸 受限 · ⚙️ 需店长/后台显式授权 · ✗ 无权限 · ❓ 待确认
| 功能 | 店长 | 技工 | 备注 / 待确认 |
| --- | --- | --- | --- |
| 搜索 / 加购 / 查看订单 | ✅ | ⚙️ | 技工需被授权 |
| **提交订单**(涉及资金) | ✅ | ❓ | `TODO(REQ-PUR-002)` |
| 收货 | ✅ | ⚙️ | |
| 售后 / 退款 | ✅ | ⚙️ | 能否**发起**(而非仅查看)随 `TODO(REQ-PUR-002)` 一并确认 |
采购模块权限矩阵(摘自主文件[附录 B](../Continental-Retail-APP-PRD.md#附录-b-权限矩阵)
适用的全局权限实施规则:接口层强制(REQ-ACC-004);⚙️ 类由店长或后台经[人员管理「可用系统」](./09-STM-门店管理.md#49-门店管理)授予(REQ-ACC-005);**🔸 与 ❓ 项在待确认关闭前,一律按更严格的一侧实现**(REQ-ACC-006);权限变更后用户下次进入 App 即生效(REQ-ACC-007)。
> 本次拆分发现矩阵**漏了一行**:订单确认页的「**选择返利抵扣**」同样是动用门店资金的动作,且与「提交订单」可分离(可以允许技工提交但不允许选返利)。回灌主文件附录 B 时建议单列一行,取值随 `TODO(REQ-PUR-002)`。
### 附-3 待确认项(主文件 10.2.6 + 本次新增)
| 编号 | 待确认内容 | 建议决策方 |
| --- | --- | --- |
| REQ-PUR-002 | 技工被授权后是否可提交订单(涉及资金) | 业务 |
| REQ-PUR-004 | 支付方式与 CDMS 支付的关系 | 财务 / 架构 |
| REQ-PUR-005 | 扫码收货与扫码入库是否合并为一次动作 | 业务 |
| REQ-PUR-009 | 车型字段(carModel)是否取自 RMS | 架构 |
| REQ-PUR-011 | **马牌与非马牌商品是否共用购物车与订单**(合并需跨来源拆单与状态聚合) | 架构 / 产品 |
| REQ-PUR-012 | 非马牌采购的支付方式、信用额度与账期是否与马牌一致 | 业务 / 财务 |
| REQ-PUR-013 | **非马牌商品是直连 F6 还是经 ROOS 代理**(需保证马牌采购记录仍进 ROOS) | 架构 / F6 |
| **REQ-PUR-014** | 缺货登记后的到货通知形式、登记记录的查看入口;非马牌商品是否同样支持 | 产品 / 业务 |
| **REQ-PUR-015** | 发货仓 / 销量 / 库存状态 / 可延保标 / 配送时效 / 商品编码的来源与取值集合;时效文案统一模板 | 业务 / 架构 |
| **REQ-PUR-016** | 运费「待双方商定」在 App 内如何呈现与确认;返利抵扣的可选额度来源;**是否存在独立的支付方式单选**(现状没有) | 财务 / 产品 |
| **REQ-PUR-017** | 额度不足的提示中是否提供「联系经销商」跳转或联系方式 | 业务 |
| **REQ-PUR-018** | 售后类型、可申请时限、退款去向(信用额度 / 返利 / 抵扣券)与审核流程 | 业务 / 财务 |
采购模块待确认项,共 12 条(主文件 [10.2.6](../Continental-Retail-APP-PRD.md#1026-采购pur) 原 7 条 + 本次新增 5 条)。**加粗编号为本次拆分新增**,回灌时需一并写入主文件 10.2.6,并同步[附录 D.2](../Continental-Retail-APP-PRD.md#d2-模块级追溯汇总) 的 PUR 行(13 / 7 / 46% → 18 / 12 / 33%)与第 10.2 节总数。
### 附-4 配图清单(主文件附录 C 4.6 节)
| 序 | 说明 | 文件 |
| --- | --- | --- |
| 1 | 设计稿-订单管理商品列表(规格 + 黑科技筛选、有货/促销开关、品牌下拉、4 张同款占位卡、缺货卡「去登记」) | `../app-design-images/订单管理-商品列表.png` |
| 2 | 现状-ROOS 商品选择(同构筛选、可延保 / 时效标、库存紧张 / 不足、缺货登记、ROOS 自身 tabbar | `../mini-program-images/ROOS/商品选择.png` |
| 3 | 设计稿-订单管理购物车(按品牌分组、合计 / 已减 / 优惠明细 / 结算) | `../app-design-images/订单管理-购物车.png` |
| 4 | 现状-ROOS 购物车(共 1 件、编辑态入口、行内展示商品编码、⏱1小时) | `../mini-program-images/ROOS/购物车.png` |
| 5 | 现状-ROOS 订单确认(**测试地址数据**;订单按品牌拆为「订单1–德国马牌」;立减 / 优惠券 / 运费待双方商定 / 返利请选择 / 信用额度不可用;**无支付方式选择器**) | `../mini-program-images/ROOS/订单确认.png` |
| 6 | 现状-ROOS 订单确认额度不足(**提交后**弹「订单提交失败 / 账户额度不足,请联系经销商处理」,单按钮「我知道了」) | `../mini-program-images/ROOS/订单确认-额度不足提示.png` |
| 7 | 现状-ROOS 我的订单全部(**空态**;搜索 + 筛选;**六状态 tab**:全部/待支付/待发货/待收货/已收货/已取消) | `../mini-program-images/ROOS/我的订单-全部.png` |
| 8 | 现状-ROOS 我的订单待支付(**空态**;佐证 tab 切换后骨架不变) | `../mini-program-images/ROOS/我的订单-待支付.png` |
| 9 | 现状-ROOS 售后退款(**空态**;橙色提示条「退货订单将不会退回抵扣券」;按售后单号 / 销售订单号 + 日期区间检索) | `../mini-program-images/ROOS/售后退款.png` |
采购模块配图清单,9 张(设计稿 2 / 现状-ROOS 7)。说明较主文件[附录 C](../Continental-Retail-APP-PRD.md#附录-c-图表清单)已按实际截图内容补充,主文件附录 C 回灌时应一并更新。
**本模块配图的两处硬缺口**
- **9 张图里有 3 张是空态**(第 7、8、9 张),1 张是重复占位数据(第 1 张),1 张是脏测试数据(第 5 张)。订单行、售后单行的实际字段与操作按钮**全部无法从现有材料确认**,建议向有真实订单的门店账号补采截图。
- **收货流程与订单详情页完全没有配图**(既无设计稿也无现状截图)。收货确认页是否逐条核对、能否部分收货、拒收如何记录,以及订单详情页的可执行操作,目前没有任何页面材料支撑 —— 这两处直接影响 `TODO(REQ-PUR-005)` 的决策,建议优先补稿。
### 附-5 本次拆分新增发现
逐张核看 9 张配图后,新增 **5 条编号需求**REQ-PUR-014 ~ 018)、**修订 3 处既有内容**、另记 **3 条无编号观察**
**新增需求**
| 编号 | 名称 | 触发证据 |
| --- | --- | --- |
| REQ-PUR-014 | 缺货登记与到货通知 | 设计稿与 ROOS 商品列表的缺货卡都给「去登记 / 缺货登记」按钮,而非正文写的「置灰」 |
| REQ-PUR-015 | 商品卡与购物车字段 | 发货仓「浦东新仓」、销量「已售 3426」、可延保标、时效标、商品编码均不在 4.6.8 的 10 个字段内 |
| REQ-PUR-016 | 订单确认页费用构成 | 现状为「立减 / 优惠券 / 运费待双方商定 / 返利请选择 / 信用额度」,**没有支付方式选择器** |
| REQ-PUR-017 | 额度校验时机 | 现状是提交后弹失败框,与 REQ-PUR-003「提交前校验」及验收标准第 2 条冲突 |
| REQ-PUR-018 | 售后退款规则 | 「退货订单将不会退回抵扣券」是一条涉及资金、却完全未成文的规则 |
**修订的既有内容**
1. **[REQ-PUR-006](#467-业务规则) 订单状态机由五状态改为六状态** —— 现状 tab 为「全部 / 待支付 / 待发货 / 待收货 / 已收货 / 已取消」;原文把「待收货」写作「已发货」,且漏掉了「已收货」。同步改了 [4.6.1](#461-需求描述) 的状态变化、[4.6.5](#465-订单管理与售后) 正文与[验收标准第 4 条](#469-验收标准)。
2. **[4.6.2](#462-产品搜索与商品列表) 的「左侧树形分类」描述被两张图否定** —— 实际是顶部平铺筛选 + 单列商品卡,无分类树。正文已改,`productCategory` 的「树形分类」备注也需复核。
3. **[4.6.1](#461-需求描述) 异常流程「商品下架/无库存 → 列表置灰」拆成两条** —— 无库存换成「缺货登记」入口,下架商品不在列表返回。
**无编号观察**(属现状材料或设计稿状态问题,不新增需求):
1. **配送时效标有三种写法** —— 「最快45分钟」「⏱45分钟」「⏱1小时」,App 侧需统一文案模板,已并入 REQ-PUR-015。
2. **购物车设计稿的「德国马牌 / 维京轮胎」分组不能证明 [REQ-PUR-011](#467-业务规则) 已解决** —— 两者同属 ROOS,真正的分歧是 ROOS 与 F6 商品能否共用购物车,图中未涉及。但订单确认页「订单1–德国马牌」说明 ROOS 内部**已按品牌拆单**,这是决策的重要实证输入。
3. **售后页搜索框用的是平台视角的「销售订单号」** —— 门店视角同一张单叫「采购订单」,整合进 App 后须统一措辞,否则与[销售模块](./03-SAL-销售.md#43-销售)的销售订单混淆。已写入 REQ-PUR-018。
另有一条给主文件附录 B 的建议:**补一行「选择返利抵扣」** —— 该动作动用门店资金且可与「提交订单」分离授权,现有矩阵未覆盖,见[附-2](#附-2-权限矩阵主文件附录-b-本模块分行)。