返回 Bug 清单
BUG-0336project-47高已修复backend-logic
前置校验状态机漏态 —— 售后检查只认 PENDING,五个在途状态全部绕过
发现:2026-10-01验证:2026-10-09置信度:90%
症状
处于退款中/已批准/取货中/验机中/换机中的订单没被前置校验拦住,进入重复退款或状态冲突。
根因
校验条件用的是散落的字面量而非枚举全集——每加一个状态,校验点不会自动跟上;『只校验我知道的』而不是『校验全部在途状态』。
修复方案
1) 前置校验改为『状态枚举的在途集合』驱动:Set.of(REFUNDING, APPROVED, PICKUP, INSPECTING, EXCHANGING, PENDING),集合从枚举类派生;
2) 新增枚举值时编译器/单测强制同步在途集合(枚举实现接口或单元测试遍历全集断言);
3) 判断语义写『in (在途全集)』而不是『== 某个状态』。
检测命令
grep -rn 'PENDING' --include='*.java' | grep -i 'refund\|precheck' # 核对是否漏在途状态错误签名
退款前置校验 if status==PENDING 才拦截;REFUNDING/APPROVED/PICKUP/INSPECTING/EXCHANGING 全部不在判断里技术信息
来源项目
project-47
标签
state-machine, refund, enum, business-logic