景区上线小程序预约系统时,产品文档里通常只写一句话:"游客在小程序选择入园日期和时段并提交。"看起来简单,实际这一步在票务系统里对应两个独立动作:一是把游客记到某个入园时段的名单上(占名额),二是形成一张可核验的凭证(出票)。免票景区只做第一个动作,收费景区两个都要做。把两者写成同一个字段,景区票务系统后面所有的改签、退款、报表都会出问题。
为什么必须分开:免费景区也要预约。政策要求实名分时预约的景区里,大量游客不需要买票——年卡、免票人群、本地优惠、已经在线下买过票的人。这类人群在票务系统里没有订单,但有预约记录。系统如果只有"订单即预约"这一条路,就只能给免票人群造一张零元订单,或者干脆不让他们在线上预约。前者把订单表污染成"一堆 0 元单",票务管理系统的销量与营收口径都要额外排除;后者让入口数据缺一块,当天的应到人数算不准。正确的结构是把预约作为独立记录:证件号、入园日期、时段三个字段,收费票的预约指向一张票,免票的预约不指向任何订单。

改签只动预约,不动订单。游客要换时段时,如果预约和订单是一个字段,改签就等于退票重买:财务上多一笔退款和一笔收款,报表上销量翻倍,游客还会疑惑为什么钱退得慢。分开之后,改签只是把预约记录里的时段改掉,票务系统的订单和票完全不动,收入口径不变。这一步要有两条约束:改签只允许在入园前,改签后的时段必须仍有余量,两个条件由景区票务系统判定,不靠客服口头答应。
时段余量要在预约层扣减,而不是在库存层。分时预约系统的核心是名额,不是货。票务系统的门票库存管的是"这张票能卖多少张",时段名额管的是"这个时段能进多少人",两个数字不同源。年卡客占用时段名额但不占用门票库存,团队单占用库存但需要提前分名额。扣减顺序要写清:下单扣库存,预约扣名额,两个动作都在票务系统内完成,且任何一步失败要能自动回退,否则会出现"票买了但没约上时段"的中间态,这类中间态在节假日会集中变成窗口纠纷。

核验时读谁。检票环节要同时回答两个问题:这张票有效吗,这个人今天约在这个时段吗。景区票务系统把两个判定放在一次核验里完成——凭证状态和预约名单都要通过,缺一项就拒绝并给出原因。原因码要区分清楚,"票已使用"和"未到预约时段"是完全不同的两种处置:前者不让进,后者可以引导改签到有余量的时段。检票口把两句话混成一句"票无效",是预约系统上线后投诉增加的主要原因。
最后说一下统计。预约名单是景区承载量的分母来源:应到人数按预约算,实到人数按核验算,达成率按两者的比值看。这套数据只有预约独立成表时才拿得到。小程序预约系统的价值不在于多了一个入口,而在于景区第一次知道了"约了没来"这批人有多少——这个数字直接影响当天的现场安排。
