一个订单买五张,是发一个码还是五个码。差别不在页面上好不好看,在三处:闸机怎么数人头、一家人分开过闸怎么办、退掉两张后剩下的还能不能用。这三处定了,载体自然定。
一、一单一码要先定计数。一个码带五张票,必须先回答"扫一次进几个人"。默认一次进一人,闸机放行后把已用次数写回,写回结果随核销返回一起给,不让人在两个页面之间对。订单上留三列:已核销次数、剩余次数、最后核销的通道编号。报表口径按次数计客流,不按订单,否则一趟家庭游只算一个人,分时的容量数据整段偏低,第二天排时段还按错数排。风险在同行:一个人过了闸,后面四个跟着挤进去,机器只拦一次,这一段只能靠通道值守盯,票面上要把剩余次数印出来。
二、一人一码的键是票号。一码对一票,人头天然准。前置条件是下单时拿得到每个人的信息:实名口径下一人一条证件,家庭单里同名不同证件要放过,校验按证件不按姓名。拆队入园、部分退票、二次入园限制这三件事,在逐人成码下不需要额外规则;在一单一码下,每一件都要补一条判断逻辑,补到最后没人记得全。

三、哪三类必须逐人成码。按人头控容量的分时预约;必须逐人核验的优待票、学生票;按名单放行的团体票。这三类走一人一码,没有例外口径。团体票最难办,名单当天还会改,逐人成码之后临时加人要补码,补出来的码必须挂回原订单,不能在渠道侧另起一单,一起单当天对账就分成两处。不计名的小额票、一人代买全家同过一道闸的场景,一单一码可以接受,条件是把剩余次数写进核销返回里,闸机屏上当场能看到还剩几张,不用人心里算。
四、混合规则下的解析顺序。成人票逐人成码、优待票走订单码时,闸机先按票种路由,再选解析方式。路由放在服务端而不是通道本地,规则改一次不用重新下发到每台机器,也不至于出现两条通道判法不同。路由结果要写进核销记录的一列里,事后能查出这张票当时按哪种载体核的,这一列缺失时,争议只能靠猜。

五、切换和兼容。从一单一码改成逐人成码,存量订单一律不动,新规则只对切换时点之后新建的订单生效。切换时间写进配置记录,谁开的关、从哪个渠道先起、影响多少单,都要有名字。渠道侧要不要多传一份票号清单,先跟一个渠道试跑一周,不要所有渠道同一天改;改完两边核销数对不上时,只有一个渠道能定位到字段。切换后第一周,每天单独看一次这类订单的核销成功率,和上一周同票种比,掉得多就先把那个渠道关回旧规则。
先做哪一件:先确认报表要的是人头还是订单,载体跟着口径走。人头口径对不上,换什么码都补不回来;口径先定成订单,那一单一码就够用,不用动核验链路。
