换货历史订单补数:测试说明

结论

缺少换货链路历史订单时,CPG 会按订单号请求 OMS 重发 9999;只有完整组装并成功发送后,才清理待补状态。1

  1. 缺失订单会阻止本轮校验、生成和发送,避免产生部分 POSLog。2
  2. OMS 返回 code="0" 只代表任务已创建,不代表 msgbus 数据已恢复。3
  3. 普通非 9999 消息沿用原流程;Kafka 9999 会经过 Redis 去重检查。4

适用于CPG 换货历史订单补数QA 测试说明

1

一条恢复链路如何执行?

发现缺单、OMS重发与完整发送
图的结构
  • message-bus bus
  • Kafka kafka
  • CPG cpg
  • Redis redis
  • OMS支持工具 oms
  • POSLog发送端 sender
  • bus → kafka · 原始订单消息
  • kafka → cpg · UUID与订单号
  • cpg → bus · 按UUID查询详情,并递归查换货关系
  • bus → cpg · 订单详情,或成功响应但无订单
  • cpg → redis · 保存缺失订单号,不设过期时间
  • cpg → oms · 创建任务:codes + operates=9999
  • oms → cpg · code=0:任务已受理
  • oms → kafka · 投递9999消息,UUID可能不同
  • kafka → cpg · 消费9999并重新查询订单关系
  • cpg → bus · 重新获取父单和全部换货子单
  • cpg → sender · 完整组装后发送POSLog
  • cpg → redis · 发送成功后清理本轮待补状态

5 6 7 3 2

2

测试前准备什么?

  • 准备可控的测试环境,包含 message-bus、Kafka、Redis 和 OMS 支持工具。
  • 准备换货父单及一层或多层换货子单,确认各订单号和换货关系。
  • 确认可观察 OMS 请求的 codes、Kafka 9999 消息、POSLog 发送结果及 Redis 待补 key。
  • 为缺失场景准备“查询成功但订单列表为空”的响应;不要用超时或鉴权失败代替缺失。
  • 若要人工触发 OMS 任务,在测试环境调用 POST /poslog/retry/oms/resend,请求体为 {"orderIds":["<orderId>"]}。不要对生产订单执行。
项目
当前行为
待补key
poslog:exchange:resend:pending:<orderId>;无 TTL
扫描周期
每 1 分钟扫描待补订单
OMS请求冷却
每个订单最短 5 分钟一次
并发处理锁
同一待补订单最长持有 20 分钟
完成后冷却
发送成功后 5 分钟内抑制重复 Kafka 9999
3

必测场景与通过条件

用例操作通过条件
非换货回归投递非 9999 普通订单,且无换货关系只按原 UUID 查询;无递归订单查询、无 OMS 重发,正常完成原有处理。5
非补数 9999投递非换货订单 9999,Redis 无待补和冷却 key继续常规校验、生成和发送;无 OMS 自动补数任务。4
换货数据齐全投递含换货关系的订单,所有父子详情均可查递归组装完整,只发送一次;不创建补数任务。5 6
单个换货子单缺失让子单查询返回成功空列表codes 只含缺失子单号;本轮不校验、不生成、不发送;待补 key 保留。11 12
多个或多层缺失让多个换货节点查询成功但无订单详情收集所有已发现的缺失订单号;不得以部分订单生成或发送。数据恢复后,9999 重新触发整条关系查询。6 1
查询故障分别模拟无HTTP响应、非成功响应码、RPC异常不把故障当作历史缺失;不因该故障创建 OMS 重发任务。13 11
OMS接口响应返回 code="0" 且 data=false;再测试非零 code 或请求异常code="0" 视为任务已受理;其他结果记失败,待补状态保留并在冷却后重试。14 9
发送失败完整组装后让 POSLog 发送失败不清理待补 key;后续仍可重试。发送成功后才清理并写完成冷却。2 7
重复与并发待补期间并发投递同订单 9999;成功后 5 分钟内再次投递同一待补订单串行处理;完成冷却期间重复消息被抑制。4 9
未发货换货单测试普通未发货子单及处于待补状态的 9999 子单普通未发货过滤仍生效;待补 9999 仍查询父单,以便恢复原换货组装。5
4

哪些边界需要重点观察?

自测项结果
全项目 mvn test41 项通过;包含 2 项 signature-service、39 项 poslog-service 测试
换货恢复目标测试10 项通过;覆盖缺失订单、Kafka中止路径、OMS任务契约
外部联调未执行真实 OMS、Kafka 或 msgbus 调用;需在集成环境验证任务落地和新 UUID 消息到达
5

执行测试命令

运行换货恢复目标测试bash
mvn -pl poslog-service -am -Dtest=MessageBusMissingExchangeOrderTest,MessageBusMergeRejectTest,OmsSupportToolTaskRpcTest,KafkaMessageListenerExchangeRecoveryTest -Dsurefire.failIfNoSpecifiedTests=false test
运行全项目测试bash
mvn test

正在打开交互图…