埃斯基谢希尔某周五晚:五人围坐,两人扫 QR 下单,两人通过服务员 POS,第五位电话加单外带。三条通道,一张桌,一张账——并且每月 2300 单干净地落入同一个 table_session。
单 session、多源
每桌开启 1 小时 TTL 的 table_session。QR、POS、电话共享同一个 session_token;order_source 字段记录来源。
收银对账时间从 40–50 分钟降到 3 分钟。
原子写入
并发 POST 由 crypto.randomUUID() 生成的 Idempotency-Key 与 D1 原子 db.batch() 解决。
- QR、POS 同步写不冲突。
- 服务端强制权威价格。
- Shadowban 按来源独立校验。
"统一订单"的工程答案
具体落地:order_source 枚举、共享 table_session_id 外键、按来源着色的 KDS 卡片。电话蓝色,QR 绿色。
长者偏好让服务员代下,捕获了 QR 单独会丢失的 18% 使用率。
FAQ
电话单怎样并入正确的 session? 服务员选桌号;已有开放 session 则复用,否则新建。
两个 QR 同时加同一道菜? 生成两行 order_item、两张 KDS 卡——刻意如此。
1 小时 TTL 到期会怎样? 仍开账单的 session 保留;04:00 UTC cron 只清理已关闭 session。
觉得有用?分享给朋友。