换计分公式最稳的做法,是让新旧两套算法在同一段时间里并行,而不是挑某天凌晨一次性切换全站。灰度在这里的含义很具体:先给一小部分新提交的答卷套用新公式,此前交的答卷仍按它交卷当天生效的那套解释,两边互不覆盖。橙星云在计分层把公式版本当成一等字段,每份答卷落库时就写死它命中的版本号,哪怕半年后再回看,也能还原出当时用的是哪套算法。
之所以强调并行,是因为计分公式一改,动的是结论的口径。同一批答案,旧公式判为中等、新公式判为偏高,若不加区分地全量重算,历史报告会在无人察觉时集体变脸。学校和机构手里那些已经反馈给学生、写进会商记录的结论,也会跟着对不上号。
版本号要绑在答卷上,而不是绑在量表上
一个常见的错误,是把公式版本挂在量表配置里。量表配置是全局的,管理员一旦调了阈值,历史答卷再次打开就按新阈值重算,旧报告的结论在没人注意时变了样。更稳的做法,是在答卷提交那一刻,把命中的公式版本、常模版本、题目版本一起冻结进这份记录。此后无论后台怎么升级,这份答卷只认它出生时的那组版本。新卷走新版本、旧卷走旧版本,依靠的就是这层绑定关系,而不是靠运维记得哪天改过什么。
这层绑定还得覆盖报告的重新生成。用户过一阵重新打开旧报告、或者导出 PDF 时,系统要拿答卷上冻结的版本号去取对应算法,而不是顺手调用当前线上的最新公式,否则冻结只做了一半,重算的入口照样会让旧结论被悄悄改写。
灰度比例和回退开关要分开控制
灰度不是一次拉到百分之百就结束。合理的节奏,是先放百分之五的新提交进新公式,比对新旧两条结论线的分布有没有异常漂移,再逐步放大到全量。比对时不能只看总量,要按风险等级分档看:高风险占比是否突然抬高、临界分附近的人群有没有整体挪档,这些比平均分更能暴露公式改错了方向。这中间要留一个独立的回退开关:万一新公式把大量正常作答误判成高风险,能立刻把比例降回零,让后续答卷退回旧公式;而已经用新公式算过的那批,保持不动、单独拉出来复核。把放量和回退拆成两个互不影响的动作,出问题时才不至于连夜全量回滚。
计分公式的每次调整,本质都是在动结论的口径。灰度给机构的不是一种稳妥的错觉,而是可回溯:任何一份报告都说得清自己是哪套公式算出来的,遇到质疑时不必翻记录去猜,也不必赌管理员的记忆。
