熟食消费模式 PRD
1. 产品目标
让收银员可以在一笔订单中完成多种熟食的逐项称重和统一结算,同时保留完整的本地熟食明细,并兼容现有单 custom_dish 上传与离线补传能力。
2. 角色与使用场景
- 顾客:拿取多种熟食,等待统一称重结算。
- 收银员:选择当前熟食、确认秤重稳定、主动加入购物车,必要时修改购物车重量后收款。
- 管理员:在“熟食设置”维护熟食名称、单价、启用状态和排序。
3. 页面入口
3.1 收银入口
在首页增加“熟食消费”入口,进入独立的熟食消费页面。页面复用现有称重硬件、数字键盘和支付弹窗能力,但不复用麻辣烫页面的固定称重商品和页面状态;熟食商品交互必须遵守本 PRD 的主动加入规则。
3.2 设置入口
在设置页增加与“汤底设置”同级的“熟食设置”。设置页提供熟食商品列表、添加、编辑、启停和排序能力。
4. 收银主流程
进入熟食消费
↓
首屏:右侧商品列表、左侧空购物车、重量 0g
↓
先选商品后称重,或先称重后选商品
↓
等待重量稳定并确认商品
↓
收银员点击“加入购物车”
↓
系统保存本次重量并按同品合并
↓
归零后选择下一种熟食
↓
重复称重和主动加入
↓
编辑购物车(可选)
↓
输入自定义金额(可选)
↓
统一结算
5. 熟食称重页
5.1 页面区域
| 区域 | 内容 |
|---|---|
| 当前商品区 | 当前选中的熟食名称、单价、计价单位“500g” |
| 实时秤重区 | 当前重量,单位 g;显示稳定/未稳定状态 |
| 操作区 | “加入购物车”“归零”;商品直接在右侧列表选择 |
| 购物车区 | 已加入熟食明细、重量、单价、行金额及编辑操作 |
| 金额区 | 自定义金额输入、熟食合计、订单总额、结算按钮 |
5.2 选择商品
- 进入页面后右侧直接显示已启用的本地熟食商品列表。
- 支持先选商品再称重,也支持先称重并等待稳定后再点选商品。
- 选择商品只更新当前商品,不产生购物车明细。
- 当前商品和稳定重量同时具备后,加入按钮才可用。
- 已加入一件商品后,开始下一件前先归零;避免上一件重量与下一件混合。
5.3 主动加入
- 只有收银员点击“加入购物车”才创建或合并购物车明细。
- 重量为 0 时提示“当前重量为 0,无法加入”。
- 重量未稳定时提示“请等待重量稳定后加入”。
- 加入成功后提示简短结果,例如“卤鸡腿 250g 已加入”。
- 加入成功不自动切换商品;收银员先归零,再选择下一种商品。
5.4 购物车编辑
- 每一行显示:商品名称、重量、单价、金额。
- “编辑”只打开重量编辑器,商品名称和单价使用只读展示。
- 保存重量后重新计算行金额和总额。
- 删除需要收银员主动点击删除;删除后立即重算总额。
- 同一商品多次加入时,购物车只显示一行,重量为累计重量。
5.5 自定义金额
- 通过数字键盘直接输入金额。
- 自定义金额显示为单独一行,不伪装成某个熟食商品。
- 金额为空或为 0 时,不生成自定义金额项。
- 自定义金额与熟食称重明细一起结算。
5.6 对账单
- 点击“结算”弹出对账单,不直接进入支付。
- 对账单展示所有购物车行、自定义金额和订单总额。
- 点击“返回修改”关闭对账单并保留购物车。
- 点击“确认结算”后进入现有支付方式选择和支付流程。
6. 熟食设置页
6.1 列表字段
- 商品名称
- 单价(元 / 500g)
- 启用状态
- 排序
- 编辑和删除入口
6.2 编辑约束
- 商品名称不能为空。
- 单价必须大于 0,保留两位小数。
- 计价单位固定显示为 500g,不提供修改控件。
- 禁用商品不能在收银页新选,但已经加入当前订单的商品仍按价格快照结算。
7. 结算结果
结算成功后:
- 服务端请求的
dishes只包含一条custom_dish,金额是订单总额。 - 本地订单保存上传摘要和完整熟食明细,两者分字段保存。
- 清空当前购物车、当前商品和自定义金额。
- 订单详情页优先展示熟食明细;历史旧订单无熟食明细时沿用旧展示逻辑。
结算失败或离线时:
- 订单按现有本地订单机制保存为待上传。
- 离线补传只读取上传摘要中的单条
custom_dish。 - 本地熟食明细保留用于查询、打印或售后,不参与补传菜品数组构造。
8. 关键提示语
| 场景 | 提示 |
|---|---|
| 非零重量进入页面 | 请先归零再开始本次结算 |
| 无商品但先称重 | 请在重量稳定后选择熟食商品 |
| 重量为 0 加入 | 当前重量为 0,无法加入 |
| 重量未稳定加入 | 请等待重量稳定后加入 |
| 未选商品加入 | 请先选择熟食商品 |
| 编辑重量非法 | 请输入大于 0 的重量 |
| 商品配置非法 | 商品名称不能为空,单价必须大于 0 |
| 无有效金额结算 | 请先加入熟食或输入自定义金额 |
| 对账单确认 | 请核对明细和总额后确认结算 |
9. 产品验收标准
- 首屏购物车为空、重量为 0,右侧商品列表直接可见。
- 先选后称、先称后选两种流程均能加入购物车。
- 收银员不点击加入时,实时重量变化不会进入购物车。
- 同一熟食重复加入后只显示一行,重量和金额正确累加。
- 购物车可以删除和修改重量,但不能改名或改价。
- 250g、500g、750g 等重量均按 500g 基准准确计价。
- 一笔订单包含多种熟食时,服务端仍只收到一个
custom_dish。 - 点击结算后先出现对账单,确认后才发起支付。
- 本地订单可以恢复每种熟食明细,离线补传不会拆成多个服务端菜品。
10. 定值商品补充需求
10.1 商品维护
- 熟食设置中的商品必须选择计价方式:按重量(元 / 500g)或定值(元 / 份)。
- 已有熟食商品默认按重量计价;管理员修改计价方式只影响后续新加入的购物车行。
10.2 收银页
- 右侧商品列表提供“称重熟食”和“定值商品”两个切换入口。
- 称重熟食仍遵守主动加入、稳定重量和归零规则。
- 定值商品点击即加入购物车,无需称重确认;重复点击同一商品时数量累加。
- 秤盘有非零重量、存在已选称重商品或等待归零时,禁止点选定值商品。
10.3 购物车和结算
- 称重行显示重量(g)和元 / 500g,且只能修改重量。
- 定值行显示数量(份)和元 / 份,且只能修改数量。
- 两类商品均不可在购物车修改商品名称、单价或计价方式。
- 对账单、本地订单明细和总额计算必须同时支持两类商品;上传和离线补传仍保持单条
custom_dish。