carrier-shipping.php
A. preflight(还没配任何东西)
✅ A1 自行打印的配送方式:不给取号
✅ A2 说明里点出是「自行打印」
✅ A3 账号没配:拒绝
✅ A4 说明里让人去找超管
✅ A4b 🔴 只有应用凭据、没授权过:仍算未配置
✅ A4c 🔴 包裹尺寸没填:拦住
✅ A4d 🔴 只差一项也拦住(不是"填了三项就算数")
✅ A5 全配好后放行
✅ A6 带出承运商
✅ A7 带出服务档位
B. 取号(成功)
✅ B1 成功
✅ B2 拿到运单号
✅ B3 面单是 PDF
✅ B4 真实承运商被带出来(用户选的是配送方式,底下可能是别家)
✅ B5 台账状态到「已取面单」
✅ B6 台账记下对方的订单号
✅ B7 🔴 运单号回写到订单
C. PII 出口
✅ C1 收件人姓名非空(说明 ddaddress 真被解密了)
✅ C2 姓名不是密文信封
✅ C3 州名传的是原始全称(代码转换在 adapter 里做)
✅ C4 寄件人来自 corp 配置
✅ C5 幂等键是 ddnum
D. 🔴 幂等(重复点「取号」不能重复扣费)
✅ D1 仍然成功(能重新打印)
✅ D2 🔴 没有再向快递公司下单
✅ D3 明确标出这是重打、没再扣费
✅ D4 运单号还是同一个
✅ D5 台账仍只有一条
E. 🔴 网络中断(不知道对方收没收)
✅ E1 如实报失败
✅ E2 报的是网络问题
✅ E3 🔴 状态是「不确定」而不是「失败」
✅ E4 运单号没有被回写(确实没拿到)
✅ E5 🔴 再点取号被拒(可能已经扣过一次钱了)
✅ E6 🔴 确实没再调下单接口
✅ E7 提示里让人去对方后台核对
✅ E8 preflight 也拦住(按钮渲染阶段就该知道)
E'. 守卫:明确的业务失败不是「不确定」
✅ E'1 如实报余额不足
✅ E'2 🔴 状态是「失败」不是「不确定」
✅ E'3 🔴 修好之后允许重试
✅ E'4 这次真的下单了
F. 付款成功但取面单失败
✅ F1 如实报失败
✅ F2 🔴 状态停在「已下单」—— 钱花了,别当成没发生
✅ F3 运单号已回写(号是真拿到了)
✅ F4 重试拿到面单
✅ F5 🔴 没有再下单
J. 🔴 单下成功但快递公司还没生成面单
✅ J1 如实告诉操作员"还没生成"
✅ J2 提示里说清不会重复扣费
✅ J3 🔴 状态是「已下单」不是「失败」
✅ J4 运单号已回写(单确实下成了)
✅ J5 补到了面单
✅ J6 🔴 没有再下单(否则就是第二次扣钱)
✅ J7 标明是重打、没再扣费
G. 守卫
✅ G1 不存在的订单被拒
✅ G2 指向已下线的承运商:拒绝而不是当成自行打印
✅ G3 说明里点名那个 code
✅ G4 改回来后不再报「不支持」
✅ G5 台账清空后照常放行
K. 占位面单
✅ K1 四道闸都满足:产出占位面单
✅ K2 🔴 标记为占位件(不标的话操作员不知道手上这张是假的)
✅ K3 拿到的是 PDF
✅ K4 纸面自己也喊出来是测试件
✅ K5 纸面写明不会真发货
✅ K6 台账推进到「已取面单」(否则下次进来又要重下单)
✅ K7 🔴 状态不是那个约定终态 → 不产出(单被取消/真往前走了都不该顶)
✅ K8 🔴 正式账号绝不产出占位面单(开发机上误授权也不行)
✅ K9 🔴 真面单拿得到就用真的(占位件只在拿不到时顶)
✅ K9b 守卫:那确实是假 adapter 给的那份真面单
H. 还原
✅ H1 配送方式已还原
✅ H2 订单配送方式已还原
✅ H3 订单快递单号已还原
✅ H4 账号配置已逐字段还原
✅ H4b 🔴 包裹默认尺寸已逐项还原(这条以前不存在,夹具值就是那么漏出去的)
✅ H5 台账已清空
✅ H6 注入已撤销(真 adapter 回来了)
PASS=73 FAIL=0