扫码点餐 · 功能设计文档
v0.1 客户确认稿|2026-10-25|评审工作语言:中文
1. 产品目标与范围
面向泰国餐饮、奶茶、咖啡及酒店客房送餐提供移动端扫码点餐服务。顾客免下载、免注册,扫描桌面或房间二维码后,确认服务位置,使用熟悉的语言选购、支付并查看出餐进度。商户通过移动后台与 Android 接单端管理订单,并将全单及部门分单发送到指定打印设备。
本阶段仅确认产品、架构、界面和设备路线,不开发生产系统。原型中的支付、收单、设备状态、二维码上下文、厨房流转均为本地模拟。
| 范围 | 首期设计范围 | 后续扩展 |
|---|---|---|
| 国家与语言 | 泰国、THB;英文、泰文、简体中文、马来文 | 其他国家的币种、税制和支付适配;繁体菜单 |
| 场景 | 堂食、奶茶、咖啡、酒店房间送餐 | 外卖配送、排队、预订 |
| 组织 | 平台 → 商户/品牌 → 门店 → 服务位置;门店独立收款配置 | 加盟清结算、跨主体分账 |
| 点餐 | 分类、商品规格、加料、备注、加单、售罄、营业时间 | 营销、会员、积分、优惠券 |
| 收款 | 先付款后接单;先下单后统一结账 | AA 拆账、现金混合支付、自动小费 |
| 打印 | 全单、按部门分单、多店共享、重打、异常告警 | 智能排产、厨房显示屏 KDS |
| 酒店 | 房间来源识别、送达信息、即时付款或人工结账 | PMS 房账挂账、入住人验证 |
2. 角色与权限
| 角色 | 主要能力 | 限制 |
|---|---|---|
| 顾客 | 菜单、购物车、本人提交记录、账单支付 | 不通过桌码直接读取其他顾客的订单与个人信息 |
| 服务员 | 开台、接单、上菜、申请结账、记录线下付款 | 不修改收款账户,不默认有退款权限 |
| 厨房人员 | 查看本部门菜品、开始制作、完成 | 不查看其他部门明细及顾客支付凭据 |
| 收银/店长 | 全单、结账、退款审批、打印补单、门店配置 | 仅授权门店;敏感动作记录原因 |
| 品牌管理员 | 多店菜单、设备共享和授权、报表 | 跨店设备不等于跨商户数据权限 |
| 平台运营 | 商户开通、设备支持、运营监控 | 受控访问、审计;不直接接触卡号 |
商户界面语言、顾客语言和打印语言独立设置。例:顾客中文下单、店员英文接单、厨房泰文打印。菜单多语言名称共用同一 SKU,切换语言不会改变商品、金额或部门归属。
3. 二维码与来源识别
每个服务位置生成独立二维码,映射 merchant_id、store_id、location_id、location_type(TABLE / ROOM / PICKUP)。二维码中只放随机、不透明的 locator,不暴露房客信息、设备密钥或可自行修改的桌号参数。
扫码落地页始终显示品牌、门店、桌号或房间号,要求顾客在首次提交时确认位置。二维码支持下载、批量导出、停用、轮换、失效提示。记录来源扫码与订单转化,不将浏览器语言作为国籍或支付资格判断。
静态桌码可被拍照分享,不能证明顾客在店。后付默认由店员开台并签发短期消费会话,或由店员审批首单;酒店房间需服务员确认送达位置。可选门店 Wi-Fi、动态开台口令作为辅助控制,不能只依赖定位。桌号切换须清空或明确迁移未提交购物车,禁止静默更换归属。
同一桌支持多手机独立购物车和各自下单;加单汇入同一已授权台账。首期不做实时共同编辑购物车。顾客只能看到本人订单,申请整桌结账需店员授权的账单凭证;不可凭公开桌码直接读取整桌消费。
4. 四语匹配与内容管理
优先级:本店已保存的手动选择 → 浏览器 navigator.languages / 请求 Accept-Language 的优先顺序 → 门店默认语言 → 英文。只在已启用语言中匹配。th-* → th、en-* → en、zh-* → zh-Hans、ms-* → ms;zh-Hant 当前回退简体并保留语言切换入口,不宣称有繁体翻译。
不读取设备隐私设置。Web 端以浏览器公开的语言偏好作为系统语言代理;设备与浏览器不一致时,以浏览器及手动选择为准。切换无需重载购物车、订单或支付尝试。
系统 UI 使用固定词条;商品名称、描述、规格、加料、过敏原由商户按语言维护。缺失译文按门店内容默认语 → 英文回退,后台标记缺译。机器翻译只能辅助起草,食品安全、辣度、过敏原与价格文案必须人工审核。打印优先使用厨房维护的泰文名称,可附英文。自由备注保留原文,翻译须标记辅助译文,不能替换原文。
金额 THB、泰国营业时区 Asia/Bangkok,语言不改变币种或时区。顾客显示当地营业时间;后台可切换查看时区但原始时间存 UTC。
5. 顾客端功能
5.1 菜单与选购
- 店铺页:来源位置、营业状态、服务方式、语言入口、服务费说明;菜单分类和商品搜索。
- 商品:图片、四语名称、价格、售罄、辣度、过敏原提示。商品是否含税与服务费必须清楚展示。
- 规格:单选规格、必选项、加料多选、数量、备注;奶茶支持糖度、冰度、杯型;咖啡支持冷热和奶型;普通餐品支持辣度。
- 购物车:修改、删除、分规格合并;展示单价、加料价、数量、小计、服务费、税和应付总额。服务费/税不在结账最后一步才首次出现。
- 提交前服务端校验营业、台账有效性、商品版本、库存、价格与支付策略;变化时给出差异,要求重新确认。
- 网络中断显示“未提交”,保留购物车;重试沿用同一提交标识,不能生成重复订单。
5.2 先付款后下单
选购 → 确认购物车 → 创建待支付订单与支付尝试 → 选择渠道 → 完成支付 → 服务端确认到账 → 推送商户并出单 → 制作/送达 → 完成。
付款完成页返回或顾客上传转账截图均不作为到账证据。状态不确定时显示“确认付款中”,提供查询与人工协助。付款失败保留购物车,允许重试;超时释放库存。迟到到账订单进入异常处理,不能无提示扣款或重复生产。
先付订单仍可能因售罄被拒收:显示原因、退款状态及预计处理说明;是否自动接单由门店配置。自动接单需库存与营业规则校验。若手动接单,支付成功后先显示“等待门店确认”,收到确认后打印生产单;收银可单独打印待确认凭证。
5.3 先下单最后结账
店员开台 → 顾客下单 → 门店接单/打印 → 多次加单 → 申请结账 → 冻结台账版本 → 支付整桌未付金额或收银记录线下收款 → 关台。
顾客明确看到“已下单,尚未付款”。结账冻结后禁止直接加单,需取消结账并重新打开台账;正在支付时不允许台账金额漂移。已付订单不能再次进入应收。关台后老会话失效,新一轮客人使用新台账。默认不支持顾客自行取消已开始制作的餐品。
门店可配置 PAY_FIRST 或 PAY_LATER,及自动/手动接单;修改仅作用于新台账/新订单,已建立会话沿用策略快照。严禁顾客前端参数决定支付策略。
5.4 支付方式呈现
设计候选:PromptPay 动态 QR、泰国银行 App 支付、TrueMoney、信用/借记卡;旅游商圈可选 Alipay / WeChat Pay 等,具体线上模式按服务商核验。详情及证据见调研文档。
同一手机扫码后无法再用相机扫屏幕,应提供“保存支付二维码 → 银行 App 从相册识别 → 返回查询”的引导;若渠道提供合适的 App 跳转则优先使用。不是所有银行、设备或内嵌浏览器都支持同样路径。失败需可回退其他付款方式或联系收银。
5.5 订单和服务
订单状态:待付款 / 等待接单 / 制作中 / 可取餐或送餐中 / 完成 / 已取消;财务状态独立显示。可查看本次订单及本人加单,不展示他人隐私。呼叫服务员生成有去重和频控的服务请求,需有“已送达商户/等待响应”的状态。
酒店页突出酒店、楼层、房间和送餐目的地;若扫码与实际房间不符必须联系酒店。酒店房码只提供来源,不证明入住身份,不自动挂房账。到房送餐可配置服务时段、配送费和预计时间;敏感门禁信息不放在通用厨房小票上。
6. 商户移动后台与接单 APP
6.1 商品和门店
门店营业时间、暂停接单、菜品售罄、分类排序、多语言内容、规格价格、销售分类与生产部门、店型、默认语言、税费、支付模式和收款账户配置。收款账户更换需管理员重新验证与审计。
商品的销售分类与生产部门分离。例如“人气推荐”中的海鲜仍送海鲜部;商品部门优先于分类默认部门。套餐可按生产组件分到不同部门,前台仍作为一套商品计价。组件映射首期可人工维护。
6.2 接单与履约
订单列表显示门店、桌/房、时长、财务状态、接单状态、异常标识。新单有声音与振动,可接单、带原因拒单、查看部门进度、标记取餐/送达。设备离线时后台展示最后在线时间。APP 推送只作提醒,打开后需从服务端重新拉单。
长连接/轮询用于在线列表,系统推送用于后台唤醒;均不能承诺 Android 永不被杀进程。默认 60 秒未确认触发升级提醒,具体 SLA 待试点确认。可配置备用设备和店长告警,不因 APP 未打开而丢单。
6.3 打印配置
| 配置项 | 行为 |
|---|---|
| 设备绑定 | 设备码一次性配对,绑定所属商户,允许门店列表;可撤销、解绑、替换 |
| 多店共用 | 同一商户明确授权的 A/B 店可共用前台或中央厨房打印机;小票必须显示门店和来源 |
| 业务触发 | 接单确认、加单、取消、退款、结账、人工重打分别配置模板与路由 |
| 前台全单 | 全部商品、规格、金额、支付状态、来源、订单号;可按单/结账分别打印 |
| 部门分单 | 仅本部门相关商品与备注;共享订单号、批次号、来源;默认不显示支付金额 |
| 部门管理 | 自定义凉菜、酒水、热菜、海鲜、烧烤等;可增删、停用、绑定主备设备 |
| 匹配顺序 | 商品/套餐组件部门覆盖 → 分类默认部门 → 未分配异常队列;不允许静默丢弃 |
| 多目的地 | 前台全单与多个部门任务同时生成;一部门可设置主设备及明确的备机策略 |
| 格式 | 58/80mm、字体大小、泰英双语、抬头、LOGO、份数、提示音、菜品排序、切纸 |
| 加单/改单 | 只打印本次增量;取消单醒目标记原订单和行项目,不能伪装成新单 |
| 异常 | 缺纸、开盖、离线、状态未知、失败任务;日志、重试、人工补打带“补打”标识 |
默认共享范围只限同一商户。跨不同商户共用物理设备需另行确认托管关系、数据隔离和操作权限。两门店共用一台收银打印机是排队打印两张独立票,不合并账款、不共用支付账户。
6.4 分单示例
Bangkok A 店 T12 第 2 批订单:冬阴功虾汤×1(热菜),泰式奶茶×2(酒水),烤鱿鱼×1(烧烤)。
- 前台 P01:3 行商品、共 4 份及完整金额;显示 A 店 / T12 / 订单号 / 加单批次。
- 热菜 P02:仅虾汤×1;酒水 P03:仅奶茶×2;烧烤 P04:仅鱿鱼×1。
- 若 B 店也绑定 P01,B 店的全单单独排队,门店标题不可省略。
- 未配置部门的菜品进入异常队列,并在收银端提醒处理;该订单其他部门可以继续制作。
打印是生产通知,不能直接代表厨房已接单、已制作或已送达。
7. 异常与售后规则
| 场景 | 顾客反馈 | 商户处理 |
|---|---|---|
| 二维码停用/店铺停业 | 明确原因、不可提交、联系门店 | 维护码牌与营业状态 |
| 售罄/改价 | 展示差异并重新确认 | 已付后缺货需拒单/部分退款流程 |
| 重复点击/支付回调 | 显示同一笔结果 | 幂等处理,不重复下单和出单 |
| 退款 | 退款申请、处理中、完成/失败分开 | 审批、通道核验、对账;不承诺所有渠道即时原路退 |
| 打印离线 | 顾客订单仍可正常存在 | APP 告警,备用设备/人工抄单,恢复后核对补打 |
| 后付逃单/误扫 | 显示有效开台要求 | 店员开台、首单审核、台账锁定与人工结算 |
| 酒店送错房 | 显示来源确认 | 门店核对;禁止以公开房码证明入住人身份 |
8. 验收清单与指标建议
- 使用 th-TH、en-US、zh-CN、ms-MY 首访能匹配;ja-JP 回退门店默认语;手动切换后保留购物车。混合优先列表按第一种受支持语言匹配。
- A 店 T12 和 B 店 Room 808 进入不同上下文;篡改店号、停用码、过期会话不能越权下单。
- 先付未到账不进入生产;重复成功事件只生成一次订单接单事件和同批打印任务。
- 后付多轮加单可汇总;结账冻结期间不能增加金额;重复支付回调不会重复关台。
- 前台全单、三部门分单内容正确;未分配行有告警;两门店共享设备票头明确。
- 缺纸恢复、断网重连、补打标识、未知打印状态人工确认均可追溯;收银与厨房可独立失败恢复。
- 375px 移动端、泰文长文本、200% 字号、弱网与无障碍操作不遮挡主要动作。
试点指标建议:有效扫码到菜单成功率、购物车到付款转化、接单延迟、漏单投诉、打印失败率/未知率、人工补单率、退款处理时长。目标值由真实网络和样机压测确定,不在设计阶段承诺硬件 SLA。
9. 客户确认记录
| 决策 | 建议默认值 | 确认 |
|---|---|---|
| 首批场景 | 咖啡/奶茶 + 小型餐厅;酒店走送餐模式 | 待确认 |
| 多手机同桌 | 独立购物车、统一授权台账、隐私隔离 | 待确认 |
| 接单 | 饮品可自动接单;餐厅手动接单 | 待确认 |
| 后付安全 | 店员开台,结账冻结,默认不做 AA | 待确认 |
| 支付 | PromptPay + 卡;银行 App / TrueMoney 按合同开通 | 待确认 |
| 打印 | 同商户跨店;前台全单、厨房按部门 | 待确认 |
| 酒店挂账 | 首期不接 PMS、不自动挂账 | 待确认 |
| 语言内容 | 商户提供并人工确认泰文、过敏原和菜品译文 | 待确认 |
| 计费税费 | THB;税、服务费和票据格式按当地顾问确认 | 待确认 |
| 品牌和 UI | 临时品牌与暖色风格;非最终品牌资产 | 待确认 |