同一个票种,两个入口看到两个数:登录会员在小程序看到的是会员价,某条分销链接看到的是渠道价,窗口报的又是另一种。三处不一样本身不一定是错,说不清才是错。会员价和渠道价谁先算,问的不是哪个价更划算,而是成交那一刻系统按什么顺序判、判完留下什么、事后能不能复算出同一个结果。顺序一旦不固定,同一个人同一张票两次进来就会拿到两个数。
一、先把两种价的命中条件分开。会员价按人判,看这个账号当前是不是有效会员、在哪一档;渠道价按入口判,看这一单从哪个来源进来。排法固定成一条:先按来源把可售价集合缩小,再在这个集合里判身份。反过来先判身份,就会出现会员价被不该出现的渠道用掉、或者根本不该在售的档位被外网检索到,事后只能靠人工一单一单拦,拦到第三周就没人拦了。
二、互斥还是叠加,两条规则各有适用条件。互斥是默认:一次成交只有一个价格版本,取会员价或取渠道价,由票种规则里的互斥位决定,规则栏空着时一律按互斥执行。叠加要显式开启,且必须写清叠加基数和上限,上限用比例表达不用绝对数,绝对数会随基础档位的下一次变动而失效。既没写互斥也没写叠加的票种要按月清一次,这类票是差价投诉最集中的地方,因为每个渠道都按自己的理解解释了一遍。

三、成交要落三个字段。价格版本号、命中的规则编号、判定顺序快照。三个字段缺一就没法复算:只有版本号,知道结果不知道为什么;只有规则号,规则改版之后就查不到当时那一版。一张订单只允许存在一个最终价格版本,出现两个版本并存,当天按异常单处理,先关掉这个票种的叠加开关再排查,而不是先解释这一单该怎么退。
四、展示层和结算层要抽比。每天随机抽二十笔,比对客端看到的数与后台结算取的数是否同一版本。差异零笔算正常,出现一笔当天查,原因通常在三处:缓存有效期太长、会员身份判定有延迟、渠道映射表落后于合同变更。窗口侧更简单——价目屏和结算是同一个服务还是两份配置。两份配置迟早分叉,分叉的代价由现场排队的人和当班的人一起付。

五、改权益或改合同时的动作顺序。调会员等级规则、换渠道协议档位,都先冻结新增命中,也就是让新单不再落到待改的规则上,跑满一天,看无命中规则的成交笔数是否为零;零笔再放开,不是零笔说明还有旧入口在跑。这一步放在改之前而不是改之后,事后回滚只能覆盖已经发生的那几单,而解释一整套差价口径的成本比停一天高得多。
如果一定要排优先级,先动的是把每个票种的互斥位填实。空着的规则栏在上线初期看不出问题,因为售的票少、渠道少,怎么判都只有一两家;等渠道铺到十几家,同一个空栏会被解释成十几种样子。填完再抽二十笔复算一遍,能复算出同一个数,这一档就算配到位,配不到位就继续冻着别开叠加。
扫一扫官方微信号