美业系统的工作量差异不在预约页面上——预约本质是日历加时段库存,任何团队都能做。真正拉开工作量的,是技师档期与门店时段的二维库存、储值卡项的账务模型、提成规则引擎这三块,以及 2025 年 5 月起施行的预付式消费司法解释给退卡、转卡、限额带来的强制功能位。本文按工程视角拆一遍美业到店预约系统的实现要点。
一、预约引擎:技师与时段的二维库存
预约不是一张日历,而是一个「门店 × 技师 × 时段」的二维库存问题:
- 库存建模:时段库存按门店分仓,技师档期是库存上的一层约束。跨店通用预约场景下,同一技师在多店共享档期,库存必须按技师维度聚合后再按门店分配,否则会出现两边同时预约同一个人的脏数据。
- 预占与释放:下单先预占,支付超时或取消按到期时间回仓,回仓逻辑与票务类系统同构——条件更新带版本号,影响行数为零即库存不足,禁止先查后写。
- 爽约风控:押金、黑名单、到店率统计三级递进。爽约记录只追加不修改,风险信号按规则表配置,命中即触发押金或限制预约。
图 6:卡项账务的四池模型(示意)
二、卡项账务:四池模型与折算规则
储值如果只做一个余额数字,卡项一多、一退卡就对不上账。工程上要把账拆成四个池:
- 现金池:实收金额单独入账,划扣流水逐笔可还原,退卡时剩余实收部分原路退回;
- 赠送池:赠金来源与比例留痕,已耗部分按「实付金额与实付加赠送之比」的优惠比例折算,不与实收混记;
- 次卡池:次数与有效期双控,核销一次记一笔,转赠规则按卡项配置——司法解释明确限制转卡的格式条款无效,所以转赠不是可选项,是模型里必须有的路径;
- 期卡池:期限与服务范围建模,退卡按剩余期限占全部期限的比例折算,超范围项目另计费。
一次混合服务可能同时「现金划扣一部分、次卡抵扣一次、赠金补差」,流水表必须能逐笔还原这笔扣减怎么分摊。流水表是账务事实的单一来源,缓存余额每日与流水比对,差异非零告警。
三、退卡结算:把司法解释写成状态机
法释〔2025〕4 号(2025 年 5 月 1 日施行)把预付式消费的退卡规则写进了裁判标准,系统侧对应的不是一段文案,而是一条结算流水线:
- 申请受理:触发原因与凭证收集,会员协议版本同步入档;
- 已耗折算:折扣服务按未折扣原价、赠送金额按优惠比例折算已耗部分,这些算法在司法解释第十八至二十条里有明确口径,直接落成代码;
- 余额计算:剩余本金返还,利息按合同与法规分档计息;
- 审批留痕:审批记录入审计日志,数据不可篡改;
- 原路退回:支付渠道原路退回,回执归档并关联原流水。
另外两条要提前埋:七日无理由退款需要付款时间戳与「是否已获得过相同服务」的判定逻辑;单张限额(部分地方 2026 年口径记名单张不超过 5000 元、不记名单张不超过 1000 元)在充值入口做服务端校验,不依赖前端。消费记录与余额数据的完整留痕还有一个司法价值:经营者控制证据拒不提交的,按对方主张认定事实——日志留存本身就是风险控制。
图 7:退卡结算的五步流水线(示意)
四、排班与提成:约束表加规则引擎
- 排班是约束满足问题:技师等级、请假、跨店支援、每个时段可接单量落进同一张约束表,节假日与临时闭店支持批量调整,跨店支援时档期在多店间互斥。
- 提成是规则引擎:项目、卡项、角色(顾问/技师/助理)三个维度的分成比例可配置,月底支持费率调整与追溯——调整历史单独存表,历史订单按当时费率重算可复现。
连锁形态再加一层分账:会员档案跨店共用,卡项核销跨店结算,分账按规则引擎执行,总部报表带门店明细。单店记账与连锁分账不是同一个模型的缩放,账务与权限模型都要换形。
图 8:单店记账与连锁分账的差异(示意)
五、交付检查单
- 二维档期库存的预占、回仓与跨店互斥方案说明;
- 卡项四池账务模型与混合扣减的流水还原方案;
- 退卡结算流水线与已耗折算、限额校验的配置说明;
- 排班约束表与提成规则引擎的配置后台;
- 预收余额与耗卡台账的导出模板、审计日志与数据备份方案。
这几项写进功能清单再谈工期,比拿着预约页面截图砍价,更能预测一个美业系统的真实开发成本。