25 KiB
4.7 库存
本文件是【库存 INV】模块需求的编辑入口。 主文件
../Continental-Retail-APP-PRD.md第 4.7 节已于 2026-08 从本文件回灌(V1.1),此后的需求变更仍改本文件、再回灌。 两者不一致时以本文件为准。 目录约定见README.md。
| 项 | 值 |
|---|---|
| 模块码 | INV |
| V1.0 章节 | 4.7 |
| 描述粒度 | 6 维精简模板 |
| 需求依据 | 现状截图反推 |
| 现状承载系统 | O2O(库存查询、扫码入库)+ ROOS(条码库存、扫码出库) |
| 需求条数 | 11(待确认 9,完成度 18%) |
| 本次新增待确认 | 4(REQ-INV-008 / 009 / 010 见附-5;REQ-INV-011 见附-1) |
| 配图 | 12 张(设计稿 1 / 现状-O2O 9 / 现状-ROOS 2) |
模块概要
底部导航的三版方案中,业务菜单版有「库存」tab、设计稿 5 tab 方案有「入库」tab(见三版底部导航方案)。本节内容由现状截图反推。
业务目标 —— 把「查得到货、扫得进库、对得上账」收敛到 App 内,解决痛点 2.3中「门店无法实时判断可售库存」的问题
入口 —— 底部导航「库存 / 入库」tab;首页快捷入口「扫码入库」「扫码出库」;采购收货流程
页面内容 —— 库存查询(SKU 列表 + 四级轮胎参数筛选)、扫码入库记录、扫码出库、条码库存(入库记录 / 出库记录 / 在库条码)
主流程:
- 查询:选择搜索类型 → 输入关键字或逐级筛选 → 查看 SKU 库存状态与结算价
- 入库:扫描轮胎条码 → 校验 → 写入在库条码 → 生成入库记录
权限规则 —— 店长全量;技工可查询与扫码入/出库,TODO(REQ-INV-001) 确认技工是否可见结算价
数据来源 —— O2O(库存查询、扫码入库)、ROOS(条码库存、扫码出库)
4.7.1 库存查询
页面内容 —— App 目标形态:搜索框 + 一行五个下拉筛选(胎面宽 / 扁平比 / 直径 / 花纹 / 黑科技),主体为 SKU 卡片列表,卡上含库存状态标签与小程序结算价(稿中含普利司通 / 米其林 / 倍耐力,规格与级别为占位数据)。
关键交互 —— ①点搜索框输入关键字 → 检索;②点五个下拉任一 → 展开取值面板,逐级收窄;③上下滑动卡片列表。稿中未画搜索类型切换、未画筛选重置入口、未画分页或上拉加载。
可用角色 —— 店长 ✅ 全量;技工 ✅ 可查询。卡片右下「小程序结算价」对技工是否可见未定 TODO(REQ-INV-001)——若判定不可见,本卡片布局需出一版无价格的技工态。
需求关联 —— REQ-INV-002 SKU 与产品编码、REQ-INV-003 库存状态覆盖、REQ-INV-004 筛选维度
页面内容 —— O2O 小程序现状:搜索行为「搜索类型下拉 + 输入框 + 搜索按钮」三段式,筛选行只有四个(无黑科技),列表为通栏分隔行含产品编码、库存状态、商品名与小程序结算价,本图为测试环境数据(编码多值且被截断、库存状态列大多为空)。
关键交互 —— ①点「产品信息 ▾」→ 切换搜索类型(见下一张图);②输入关键字点「搜索」→ 检索;③点四个筛选任一 → 展开取值面板;④上下滑动列表。
可用角色 —— 店长 ✅;技工 ✅ 可查询,结算价可见性待定 TODO(REQ-INV-001)。
需求关联 —— REQ-INV-002(一行多编码正是本图实证)、REQ-INV-003(库存状态大面积为空正是本图实证)、REQ-INV-004(促销标签的去留)
页面内容 —— 「产品信息」下拉的展开态,浮层给出产品信息(当前选中)与产品code 两个搜索类型,其余区域被遮罩。
关键交互 —— ①点搜索行「产品信息 ▾」→ 展开 / 收起本浮层;②选「产品信息」→ 按商品名称检索;③选「产品code」→ 按产品编码检索;④点遮罩区 → 收起浮层。
可用角色 —— 店长 ✅;技工 ✅。
需求关联 —— REQ-INV-002——现状把「产品信息」与「产品code」做成两种并列的搜索类型,正是「主键到底是 SKU 还是产品编码」这一口径问题在交互层的外显;App 若统一为 SKU,这个下拉是保留还是取消需一并裁决。
四级轮胎参数筛选:胎面宽、扁平比、直径、花纹逐级收窄。以下四张图为四级筛选各自展开后的取值面板。
页面内容 —— 「胎面宽」的展开态,面板为 4 列 chip 网格、实测 20 项取值(0、13、175…325),底部并排「重置」「确认」。
关键交互 —— ①点 chip 选取值(单选还是多选本图无法确认,图中无任何 chip 处于选中态);②「重置」清空本级已选;③「确认」应用筛选并收起面板;④点遮罩收起。
可用角色 —— 店长 ✅;技工 ✅。
需求关联 —— REQ-INV-004;取值中的 0 与 13 不是合法胎面宽 → REQ-INV-008
页面内容 —— 「扁平比」的展开态,结构同上但取值远多于胎面宽(首屏可数 60 余项且可继续滚动,第 2、3 项即为 ssss 和 测试),本图底部被截断未拍到按钮。
关键交互 —— ①上下滚动取值网格;②点 chip 选取值;③滚到底部使用重置 / 确认(本图未拍到该区域)。
可用角色 —— 店长 ✅;技工 ✅。
需求关联 —— REQ-INV-004;取值含 ssss、测试 两个非数值项,且 107 / 120 / 255 等远超乘用车胎扁平比常见区间(约 25–80)→ REQ-INV-008
页面内容 —— 「直径」的展开态,结构同前两级,取值同样 60 余项且可滚动(首项即 测试),底部截断。
关键交互 —— 同扁平比:滚动网格 → 点 chip 选取值 → 底部重置 / 确认。
可用角色 —— 店长 ✅;技工 ✅。
需求关联 —— REQ-INV-004;列表首项即为 测试,且含 348 等远超乘用车轮辋直径区间(13–24 英寸)的取值 → REQ-INV-008
页面内容 —— 「花纹」的展开态,4 列 chip 网格完整拍到全部 42 项取值,超长名称在 chip 内以 … 截断。
关键交互 —— ①点 chip 选取值;②「重置」/「确认」;③点遮罩收起。
可用角色 —— 店长 ✅;技工 ✅。
需求关联 —— REQ-INV-004;本图是四级筛选数据质量问题最集中的一张 → REQ-INV-008:测试残留(bang123、cpsx、测试、自动化测试、CPC2自动…、CC7item / CSC5 item / MC6 item)、疑似重复(CCC LX2 与 CCCLX2、UC6 SUV 出现两次)、字段串位(123/45R / 17 / 195/55R 是规格串误入花纹字段)、以及长名截断导致的不可辨识。
现状与目标的三处差异(均需确认):
| # | 现状(O2O) | 设计稿(App) | 说明 |
|---|---|---|---|
| 1 | 主键是产品编码,且一行可能是逗号分隔的多个编码 | 主键是 SKU | 两者是否同一概念、多编码如何在 SKU 视图下展示 —— TODO(REQ-INV-002) |
| 2 | 「库存状态」一列大多为空/置灰,仅个别显示「库存充足」 | 每条都有库存充足 / 紧张 / 缺货标签 | 库存状态数据是否已具备全量覆盖能力 —— TODO(REQ-INV-003) |
| 3 | 无「黑科技」筛选,有「促销」标签 | 有「黑科技」筛选,无促销标签 | 两个维度是否都保留 —— TODO(REQ-INV-004) |
库存查询现状与目标差异
4.7.2 扫码入库
页面内容 —— 入库记录查询页(非扫码页),筛选行为日期区间 2026.04.01–2026.04.27 + 品牌下拉(图中已选中「马牌」),其下是橙色汇总条「总入:0 条」,本图为空态故记录行的字段构成无法确认。
关键交互 —— ①点日期区间 → 打开日期筛选浮层(见下方第二张图);②点品牌下拉 → 展开品牌筛选(见下方第一张图);③汇总条「总入:N 条」随筛选条件变化;④页面本身未见扫码按钮——本页是入库记录查询页,扫码动作的入口在 O2O 首页而非此处。
可用角色 —— 店长 ✅ 全量;技工 ✅ 可扫可查(一线高频操作)。
需求关联 —— REQ-INV-005 入库写入目标、REQ-INV-006 扫码由 App 原生实现、REQ-INV-007 重复条码拒绝
页面内容 —— 品牌下拉的展开态,三个选项:全部品牌 / 马牌(✓ 当前选中)/ 维京。
关键交互 —— ①点品牌下拉 → 展开 / 收起;②点选项 → 单选切换,选中项右端显示 ✓;③点遮罩 → 收起。
可用角色 —— 店长 ✅;技工 ✅。
需求关联 —— 品牌可选值只有马牌与维京两个 Continental 集团品牌,而 4.7.1 的库存查询里出现普利司通 / 米其林 / 倍耐力——两者覆盖范围不同,佐证「入库」与「库存查询」在现状下是两套口径不一致的数据,是 REQ-INV-005 需要一并裁决的部分。
页面内容 —— 日期区间的展开态,浮层有「月份选择」「自定义」两个 tab(当前停在自定义),其下为两个日期输入框构成区间,底部并排「全部日期」「确认」。
关键交互 —— ①切换「月份选择」/「自定义」两种取期模式;②点任一日期框 → 唤起日期选择器;③「全部日期」→ 取消区间限制,查全部;④「确认」→ 应用区间并收起。
可用角色 —— 店长 ✅;技工 ✅。
需求关联 —— —(仅作现状佐证)。App 整合后是否保留「月份选择 / 自定义」双模式,随 REQ-INV-005 的入库页形态一并确定。
4.7.3 扫码出库与条码库存
页面内容 —— ROOS 首页扫码后弹出的模态弹窗「请选择需要执行的操作」,底部两个并排按钮 「去延保」 与 「直接出库」,背景可见 ROOS 首页与四宫格互跳入口,标题栏写明「MF ROOS UAT 测试环境」。
关键交互 —— ①在 ROOS 首页点扫码入口扫描轮胎条码 → 弹出本弹窗;②点「去延保」→ 携该条码进入延保建单流程;③点「直接出库」→ 仅登记出库、不建延保单;④弹窗未提供取消或关闭按钮,能否点遮罩关闭本图无法确认。
可用角色 —— 店长 ✅;技工 ✅(扫码出库属一线高频操作)。但「去延保」分支会创建延保单,而延保建单对技工是否开放尚未定 TODO(REQ-WTY-003)——两处口径必须对齐,否则会出现「技工能出库却在弹窗第二步被拦」的断流。
需求关联 —— REQ-INV-005、REQ-INV-006;出库时的「去延保 / 直接出库」二选一分支是本模块与延保的关键衔接点,现有 7 条需求中没有任何一条描述它 → REQ-INV-009
条码库存:在「我的」菜单中点击「条码库存」,进入「条码库存」,tab 为入库记录、出库记录、在库条码。
页面内容 —— 条码库存页:橙色头部含搜索框与一个独立的扫码图标,其下三个 tab(入库记录选中 / 出库记录 / 在库条码)与筛选行 品牌 / 选择日期 / 是否有效,本图为空态故记录行的字段构成无法确认。
关键交互 —— ①切换入库记录 / 出库记录 / 在库条码三个 tab;②搜索框按商品编号或名称检索;③点右侧扫码图标 → 扫码直接定位条码;④三个下拉分别按品牌、日期、有效性筛选;⑤「清除筛选」一键复位全部筛选条件。
可用角色 —— 店长 ✅ 全量;技工 ✅ 可查。本页在 ROOS 中的入口位于「我的」菜单下,App 整合后入口位置需随导航收敛重新安排。
需求关联 —— REQ-INV-005 入库写入目标、REQ-INV-007 重复条码;「是否有效」这个筛选维度说明条码存在**有效 / 失效(作废)**两种状态,而现有需求未定义该状态、也未定义谁能作废条码 → REQ-INV-010
入库来源双写问题:扫码入库在 O2O 和 ROOS 两侧都有记录(O2O 的「扫码入库」与 ROOS 的「条码库存-入库记录」),经营业绩同时统计「扫码入库总数」与「扫码入库门店数」。整合后是一次扫码双写、还是以其中一侧为准 ——
TODO(REQ-INV-005),这是本模块的关键前置决策。
4.7.4 业务规则
REQ-INV-001 结算价可见性 —— 技工是否可见小程序结算价待定 TODO(REQ-INV-001)
REQ-INV-002 SKU 与产品编码 —— 主键口径待统一 TODO(REQ-INV-002)
REQ-INV-003 库存状态覆盖 —— 库存状态标签的数据覆盖率与刷新频率待定 TODO(REQ-INV-003)
REQ-INV-004 筛选维度 —— 黑科技 / 促销两个维度的取舍待定 TODO(REQ-INV-004)
REQ-INV-005 入库写入目标 —— 扫码入库的权威写入目标待定 TODO(REQ-INV-005)
REQ-INV-006 扫码实现 —— 入库/出库扫码均为 App 原生实现(REQ-INT-003)
REQ-INV-007 重复条码 —— 同一条码重复扫描应拒绝并提示已入库时间与门店
REQ-INV-008 筛选取值清洗 —— 品牌 / 花纹 / 规格 / 级别四级筛选的取值直接取自库存主数据,现状含测试残留、越界值、疑似重复与字段串位。App 是照搬现状取值还是由后端出清洗后的枚举,待定 TODO(REQ-INV-008)
REQ-INV-009 扫码出库的延保分支 —— 现状扫码出库后弹窗强制在「去延保 / 直接出库」二选一,是库存与延保的衔接点。App 是否保留该弹窗、传递哪些参数、技工能否走「去延保」,待定 TODO(REQ-INV-009)
REQ-INV-010 条码有效性状态 —— 条码存在有效 / 失效两态,其流转规则、作废权限、作废后能否重新入库,以及与 REQ-INV-007 重复校验的关系待定 TODO(REQ-INV-010)
REQ-INV-011 字段清单缺失 —— 附录 A 未收录本模块的字段清单,需业务补齐后再定接口契约 TODO(REQ-INV-011)
4.7.5 验收标准
- 四级参数筛选任意组合下,列表结果与筛选条件一致,清空筛选可一键还原;
- 同一条码重复扫描时给出明确提示,不产生重复入库记录;
- 扫码入库在断网时可暂存,恢复网络后批量提交且不重复;
- 库存状态标签与结算价来自同一次查询,不出现价格已更新而状态未更新的错位。
附:本模块归拢信息
以下内容从主文件的其它章节归拢而来,便于本模块独立评审。回灌主文件时不处理本分界线以下的部分——主文件的附录仍是全局视图。
附-1 业务数据字典(主文件附录 A)
主文件附录 A 业务数据字典未收录本模块。 附录 A 现有 A.1 登录、A.2 首页、A.3 销售、A.4 提醒、A.5 采购、A.6 延保、A.7 门店管理、A.8 经营分析与财务、A.9 个人中心共 9 节,库存(INV)无对应节。
本模块涉及的字段(SKU / 产品编码、库存状态、小程序结算价、胎面宽 / 扁平比 / 直径 / 花纹、条码、入库时间、操作人、条码有效性等)目前散落在正文与截图中,未形成字段清单,也未标注权威数据来源。此处不自行编造字段表,需业务与架构补充 —— TODO(REQ-INV-011)。
同样缺失的还有返利中心(RBT)、营销与会员(MKT)、福利兑换(MSP)三个模块,见 README.md 待办。
附-2 权限矩阵(主文件附录 B 本模块分行)
图例:✅ 完整权限 · 🔸 受限(详见备注)· ⚙️ 需店长/后台显式授权 · ✗ 无权限 · ❓ 待确认
| 功能 | 店长 | 技工 | 备注 / 待确认 |
|---|---|---|---|
| 库存查询 | ✅ | ✅ | |
| 查看小程序结算价 | ✅ | ❓ | TODO(REQ-INV-001) |
| 扫码入库 / 出库 | ✅ | ✅ | 一线高频操作 |
库存模块权限矩阵(摘自主文件附录 B)
适用的全局权限实施规则:接口层强制(REQ-ACC-004);⚙️ 类由店长或后台经人员管理「可用系统」授予(REQ-ACC-005);🔸 与 ❓ 项在待确认关闭前,一律按更严格的一侧实现(REQ-ACC-006);权限变更后用户下次进入 App 即生效(REQ-ACC-007)。
本模块新增的三条待确认项也各带权限口径:REQ-INV-009 的「去延保」分支须与延保建单权限
TODO(REQ-WTY-003)对齐;REQ-INV-010 的条码作废属高风险操作,建议默认仅店长。
附-3 待确认项(主文件 10.2.7)
| 编号 | 待确认内容 | 建议决策方 |
|---|---|---|
| REQ-INV-001 | 技工是否可见小程序结算价 | 业务 |
| REQ-INV-002 | SKU 与产品编码的口径统一(一行多编码如何呈现) | 业务 / 架构 |
| REQ-INV-003 | 库存状态标签的数据覆盖率与刷新频率 | 业务 |
| REQ-INV-004 | 「黑科技」与「促销」两个筛选维度的取舍 | 产品 |
| REQ-INV-005 | 扫码入库的权威写入目标(O2O / ROOS / 双写) | 架构 |
库存模块待确认项(摘自主文件 10.2.7,5 条)
本次拆分新增 4 条(回灌主文件时并入 10.2.7):
| 编号 | 待确认内容 | 建议决策方 |
|---|---|---|
| REQ-INV-008 | 四级筛选取值需数据清洗 —— 现状取值含测试残留、越界值、疑似重复与字段串位,详见附-5 | 业务 / 架构 |
| REQ-INV-009 | 扫码出库的「去延保 / 直接出库」分支 —— 本模块与延保模块的衔接点,现有需求完全未描述 | 产品 / 业务 |
| REQ-INV-010 | 条码有效性状态 —— 有效 / 失效(作废)两态的流转规则、作废权限与重新入库规则均未定义 | 业务 / 架构 |
| REQ-INV-011 | 本模块字段清单缺失 —— 主文件附录 A 无库存节,字段与权威数据来源需业务与架构补齐,详见附-1 | 业务 / 架构 |
合计 9 条待确认(原 5 条 + 新增 4 条)。回灌时需同步附录 D.2 的 INV 行(7 / 5 / 29% → 11 / 9 / 18%)与第 10.2 节总数。
附-4 配图清单(主文件附录 C 4.7 节)
| 序 | 说明 | 文件 |
|---|---|---|
| 1 | 设计稿-库存查询(App 目标形态,五级筛选 + SKU 卡片) | ../app-design-images/库存查询.png |
| 2 | 现状-O2O 库存查询(四级筛选 + 通栏行,多编码 / 库存状态空缺) | ../mini-program-images/O2O/库存查询.png |
| 3 | 现状-O2O 库存查询(搜索类型选择:产品信息 / 产品code) | ../mini-program-images/O2O/库存查询-搜索类型选择.png |
| 4 | 现状-O2O 库存查询(筛选胎面宽,20 项取值 + 重置/确认) | ../mini-program-images/O2O/库存查询-筛选胎面宽.png |
| 5 | 现状-O2O 库存查询(筛选扁平比,含 ssss / 测试 脏值) |
../mini-program-images/O2O/库存查询-筛选扁平比.png |
| 6 | 现状-O2O 库存查询(筛选直径,首项即 测试) |
../mini-program-images/O2O/库存查询-筛选直径.png |
| 7 | 现状-O2O 库存查询(筛选花纹,42 项,脏值 / 重复 / 串位最集中) | ../mini-program-images/O2O/库存查询-筛选花纹.png |
| 8 | 现状-O2O 扫码入库(空态,日期区间 + 品牌筛选 +「总入:N 条」汇总条) | ../mini-program-images/O2O/扫码入库.png |
| 9 | 现状-O2O 扫码入库(筛选品牌:全部品牌 / 马牌 ✓ / 维京) | ../mini-program-images/O2O/扫码入库-筛选品牌.png |
| 10 | 现状-O2O 扫码入库(自定义日期筛选,月份选择 / 自定义双 tab) | ../mini-program-images/O2O/扫码入库-自定义日期筛选.png |
| 11 | 现状-ROOS 首页扫码出库(「去延保 / 直接出库」操作选择弹窗,UAT 环境) | ../mini-program-images/ROOS/首页-扫码出库操作选择弹窗.png |
| 12 | 现状-ROOS 条码库存(入库记录 tab,空态,含「是否有效」筛选) | ../mini-program-images/ROOS/条码库存-入库记录.png |
库存模块配图清单,12 张(设计稿 1 / 现状-O2O 9 / 现状-ROOS 2)。说明较主文件附录 C已按实际截图内容补充,主文件附录 C 回灌时应一并更新。
附-5 本次拆分新增发现(待业务确认)
以下三条不在主文件现有 7 条 INV 需求内,是本次逐张核看 12 张截图时发现的、现有需求未覆盖的事项。编号接 REQ-INV-007 顺延,尚未登记进主文件 10.2.7,回灌时需一并并入并更新主文件的规模声明与附录 D.2 计数。
| 编号 | 待确认内容 | 证据 | 建议决策方 |
|---|---|---|---|
| REQ-INV-008 | 四级筛选取值需数据清洗:现状取值直接取自库存主数据未做清洗,含测试残留(ssss、测试、自动化测试、bang123、cpsx、CPC2自动…、*item)、越界值(扁平比 107/120/255,直径 348,胎面宽 0/13)、疑似重复(CCC LX2 vs CCCLX2、UC6 SUV ×2)、字段串位(123/45R、195/55R 落入花纹)。App 是照搬现状取值,还是由后端出清洗后的枚举?超长花纹名的截断展示如何处理? |
本节图 4–7 | 业务 / 架构 |
| REQ-INV-009 | 扫码出库的「去延保 / 直接出库」分支:ROOS 扫码出库后弹窗强制二选一,该分支是本模块与延保模块的衔接点,现有需求完全未描述。App 是否保留该弹窗?「去延保」传递哪些参数?技工能否走「去延保」(需与 TODO(REQ-WTY-003) 对齐)?弹窗能否取消? |
本节图 11 | 产品 / 业务 |
| REQ-INV-010 | 条码有效性状态:ROOS 条码库存有「是否有效」筛选,说明条码存在有效 / 失效(作废)两态。该状态的流转规则、谁有权作废、作废后是否可重新入库、与 REQ-INV-007 重复条码校验的关系均未定义。 | 本节图 12 | 业务 / 架构 |
本次拆分新增待确认项,3 条
另有一项非需求性观察:本模块 12 张截图中,
库存查询、库存查询-搜索类型选择的列表、以及首页-扫码出库操作选择弹窗(标题栏写明「MF ROOS UAT 测试环境」)均取自测试环境且含测试数据,扫码入库与条码库存-入库记录为空态。这些截图可用于确认页面结构与控件,不可用于推断线上真实数据形态与字段取值。











