版本:v1.1 | 日期:2026-09-03 | 状态:设计已评审定稿 适用读者:需求、测试
连锁商家(如麦当劳)一个账号下开了多家门店,各家门店的商品菜单基本一致。目前分类和商品都挂在单个门店下,商家新开一家门店只能在商家端逐条重新录入,30 个商品的菜单录入要 1 小时以上,还容易漏录、录错价格。
本功能提供「复制商品」:把一家门店的菜单一键复制到另一家门店,开新店的菜单初始化 1 分钟内完成。
商家 PC 端「商品管理」页:
点「复制商品」
↓
① 选源门店(下拉框,自动排除当前门店)
↓ 选定后自动显示差异概览
② 查看差异概览;如有"内容不同"的商品,选择处理方式
↓
③ 点「确定复制」→ 完成提示 → 商品列表自动刷新
┌─ 复制商品 ──────────────────────┐
│ 从「台北忠孝店」复制到「台北信义店」 │
│ │
│ 新增分类 1(同名合并 4) │
│ 新增商品 12 │
│ 同名且内容一致,跳过 23 │
│ │
│ ▸ 同名但内容不同:3 个(点击展开) │
│ 麦辣鸡腿堡 价格 65 → 75 │
│ 薯条(大) 图片已更换 │
│ 可乐(大) 介绍已修改 │
│ │
│ 这 3 个商品怎么处理? │
│ ○ 保留本店版本(默认) │
│ ● 用源店版本覆盖 │
│ │
│ [取消] [确定复制] │
└────────────────────────────────┘
| 场景 | 弹窗表现 |
|---|---|
| 两店菜单完全一致 | 显示「已是最新,无新增」,确定按钮不可点 |
| 源门店没有任何商品 | 提示「该门店没有可复制的商品」,确定按钮不可点 |
| 复制完成 | 提示「新增分类 X、新增商品 Y、跳过 Z、覆盖 W」 |
先记住两条判定规则:
| 情况 | 系统行为 |
|---|---|
| 目标店没有这个分类 | 新建分类 |
| 目标店已有同名分类 | 复用已有分类,新商品挂进去(不会出现两个"汉堡"分类) |
| 目标店没有这个商品 | 新增,内容照搬源店,上下架、审核状态跟源店一致(复制完即可营业) |
| 同名且内容一致 | 跳过,不动 |
| 同名但内容不同 | 商家选择:保留本店版本(默认)或 用源店版本覆盖 |
「内容」指:价格、图片、商品介绍、属性(加料等)、规格、排序、是否推荐。
选「用源店版本覆盖」时:
| 用例 | 前置 | 步骤 | 预期 |
|---|---|---|---|
| TC01 空店全量复制 | 商家有店 X(5 分类 38 商品,含带规格、带属性商品)、空店 Y | X→Y 复制(默认保留) | Y 生成 5 分类 38 商品,内容一致;规格可选且加价正确;图片正常显示 |
| TC02 上下架状态继承 | 源店商品一半上架一半下架 | 复制到空店 | 新店商品上下架状态与源店一致;上架商品顾客端可下单 |
| TC03 重复执行 | TC01 完成后 | 再执行一次相同复制 | 提示新增 0、覆盖 0;数据无变化 |
| TC04 预览与执行一致 | X 有 38 商品,Y 已有 26 个(23 个一致 3 个差异) | 打开预览后确认复制 | 预览计数=新增 12、跳过 23、差异 3;实际执行结果与预览一致 |
| 用例 | 前置 | 步骤 | 预期 |
|---|---|---|---|
| TC05 差异-保留(默认) | Y 的「麦辣鸡腿堡」价格 65,X 为 75 | 选保留复制 | Y 该商品价格仍 65,其余新增正常 |
| TC06 差异-覆盖内容 | 同上 | 选覆盖复制 | Y 该商品价格变 75,图片/介绍/属性/排序/推荐对齐 X |
| TC07 覆盖不动上下架 | Y 的「薯条」已下架 | 选覆盖复制 | 薯条内容对齐 X,但仍为下架 |
| TC08 覆盖不动审核 | Y 的商品审核状态与 X 不同 | 选覆盖复制 | Y 审核状态不变 |
| TC09 覆盖不动规格加价 | Y 的「大小杯」模板"大杯+5",X 为"大杯+3" | 选覆盖复制 | Y 模板仍"大杯+5";若 X 多关联了「温度」规格,Y 商品补挂「温度」 |
| 用例 | 前置 | 预期 |
|---|---|---|
| TC10 分类合并 | Y 已有「汉堡」分类 | 不产生第二个「汉堡」,新增商品挂入已有分类 |
| TC11 多语言独立匹配 | Y 只有中文「可乐」,X 有中英两行 | 英文行新增、中文行按一致/差异规则处理 |
| TC12 源店同名分类脏数据 | X 有两个同名分类 | 与第一个合并,不报错 |
| TC13 名字不同内容相同 | X「麦辣鸡腿堡」、Y「辣鸡腿堡」价格相同 | 判定为不同商品,X 的作为新增 |
| 用例 | 前置 | 预期 |
|---|---|---|
| TC14 单店隐藏入口 | 商家只有 1 家门店 | 商品管理页无「复制商品」按钮 |
| TC15 源=目标 | 两个下拉选到同一家(或构造请求) | 系统拒绝,提示错误 |
| TC16 分管账号越权 | 分管账号甲授权 A、B,未授权 C | A→B 成功;伪造参数 A→C 被拒绝,C 数据不变 |
| TC17 源店为空 | 源店无分类无商品 | 提示无可复制,无任何写入 |
| TC18 中途失败 | 模拟复制过程中出错 | 目标店无任何新增(不留半个菜单) |
| TC19 大菜单性能 | 源店 100 商品 | 复制 10 秒内完成,无超时 |
| TC20 多语言界面 | 分别切简中/繁中/英文/越南文打开弹窗 | 文案全部正确翻译,无乱码或显示 key |