高风险公共文件影响面

本文是一份“改前必看”清单。DGJ2.0 有不少公共文件被采购、销售、库存、支付、活动、报表、外部同步共同复用,改动前必须明确影响面和回归范围。

业务目标

  • 避免为了修一个入口,破坏其他入口的老逻辑。
  • 知道公共 Service、MQ、库存、枚举改动后必须回归哪些链路。
  • 给代码评审提供风险清单。

application/service/scm/InvPoService.php

影响业务:

  • PC 采购、采购退货、采购关闭、采购入库关联。
  • App 采购部分逻辑可能复用老服务。
  • 订单中心、支付中心回调最终可能落到采购相关方法。

高风险点:

  • 采购状态推进。
  • 明细数量计算。
  • 关闭/退货数量。
  • 在线支付和线下挂账差异。
  • 活动、赠品、秒杀来源单兼容。

回归清单:

  • 普通采购、在线支付采购、采购退货、部分关闭、整单关闭、采购入库、秒杀采购。

application/service/scm/InvSaService.php

影响业务:

  • PC 销售、销售出库、销售退货。
  • 库存扣减、出库成本、客户收款。
  • APP/SAAS 下游同步。

高风险点:

  • 销售单状态和出库单状态混用。
  • 可出库数量计算。
  • 货位库存扣减。
  • 撤销/退货反向库存。

回归清单:

  • 销售开单、部分出库、整单出库、撤销、销售退货、三方配送、对账核销。

application/Services/PoOrders/PoOrderSer.php

影响业务:

  • 新采购领域逻辑、采购查询、采购创建、采购状态。
  • 订单中心、活动、秒杀等新链路更可能调用这里。

高风险点:

  • orderTypesrcOrderType 分支。
  • 多供应商、授信、活动订单兼容。
  • 支付状态和采购状态联动。

回归清单:

  • 普通采购、预订单、活动采购、秒杀采购、售后/关闭、支付回调。

application/Services/SaOrders/SaOrderSer.php

影响业务:

  • 新销售领域逻辑。
  • E站、APP、机器人、SAAS 来源销售单。
  • 同步下游事件。

高风险点:

  • 来源类型判断。
  • 销售状态和出库状态同步。
  • 收款状态、客户关系、活动关系。

回归清单:

  • PC 销售、E站销售、APP 销售、机器人订单、销售关闭、下游同步。

application/Services/Storage/InventorySer.php

影响业务:

  • 所有库存写入:采购入库、销售出库、销售退货、采购退货、盘点、调拨、其他出入库。
  • 实时库存和库存流水一致性。

高风险点:

  • 数量正负方向。
  • transType 判断。
  • 仓库、货位维度。
  • 重复调用幂等。
  • 实时库存和流水双写一致性。

回归清单:

  • 每种出入库类型都至少验证一条数据,特别是退货、盘点和套包。

application/Services/Mq/MqSer.php

影响业务:

  • DGJ 发给订单中心、SAAS/APP、OA、库存、对账、渠道等下游消息。
  • 消息 routing key、payload 和重试。

高风险点:

  • 事件名变更导致消费者收不到。
  • 消息体字段改名导致下游解析失败。
  • 补偿/重发重复触发导致下游重复处理。

回归清单:

  • 支付/订单中心/OA/SAAS/APP/渠道/对账每类至少确认一个事件。

application/Services/Activity/FlashSaleSer.php

影响业务:

  • 秒杀商品列表、详情、加购、购物车、下单、支付、取消、关闭、补偿。

高风险点:

  • locked_qtyused_qty 更新。
  • 活动库存范围。
  • 黑白名单。
  • 采购单生成。
  • 支付超时和补偿幂等。

回归清单:

  • 单品、套包、服务站仓、指定仓、全局预留、支付成功、超时、取消、采购关闭。

application/KzData/Enums/*

影响业务:

  • 状态展示、按钮权限、列表筛选、报表过滤、MQ 分支、外部系统字段。

高风险点:

  • 改值比改文案风险更高。
  • 新增状态必须同步所有 switch/if 判断。
  • 删除旧状态会破坏历史数据兼容。

回归清单:

  • 枚举引用全局 rg,确认控制器、Service、报表、任务、前端接口都已兼容。

改动前检查命令

rg -n "InvPoService|InvSaService|PoOrderSer|SaOrderSer|InventorySer|MqSer|FlashSaleSer" application
rg -n "BILLSTATUS_|ORDERTYPE_|SA_STATUS_|OUT_BILLSTATUS_|ORDER_STATUS_|TRANSTYPE_" application
rg -n "send.*Mq|paycenter|ordercenter|oa_audit|inventory_event|dgj_notify" application/Services application/controllers/tasks

评审问题清单

  • 这次改动影响 PC、App、inner、tasks 哪些入口?
  • 是否改变表字段、状态值、订单类型、交易类型或 MQ 字段?
  • 是否存在历史数据兼容问题?
  • 是否会重复扣库存、重复释放库存、重复生成付款单或重复发 MQ?
  • 是否需要补偿脚本或数据修复?
  • 是否已经回归普通链路和特殊来源链路?