This commit is contained in:
2026-08-07 12:19:47 +08:00
parent efb01f8932
commit 0dc60d835b
@@ -0,0 +1,71 @@
# 二期、三期业务功能回归报告
测试时间:2026-08-07
## 测试范围
- 二期:企业资质、平台审核、公共主数据、客户计费规则、头程下单、入库测量、称重、计费与入库。
- 三期:虚拟柜、智能装柜、预装、PDA 拣货和最终装柜清单。
- 测试环境:本机 MySQL、Redis、Nacos;隔离服务端口 `19300` 到 `19306`。未停止、未占用用户的 `192xx` 服务端口。
- 测试结束后已停止本次启动的 Gateway 和全部 `193xx` 隔离服务;未停止 MySQL、Redis、Nacos 或用户服务。
## 项目索引结论
- 二期主状态和测量、计费、入库编排在 `firstleg`;订单货物在 `order`;仓库、托盘、库位、往来单位在 `warehouse`;文件在 `file`。
- 三期智能装柜、预装、PDA 拣货、装柜清单均在 `firstleg`。
- 当前 `tenant_id` 在业务上代表客户归属;公共主数据应使用 `tenant_id=0`,订单服务仅可读取公共仓库和公共往来单位。
## 二期结果
结果:未通过,主链路在创建头程订单草稿前被阻断。
- 已通过 15 项:平台/商户登录、Firstleg 健康检查、企业注册、营业执照及法人身份证上传、企业资质提交与平台审核、承运商与客户往来单位创建、收货仓创建、客户计费规则创建、费率版本创建。
- 阻断接口:`POST /api/merchant/v1/orders/first-leg`。
- 返回:业务码 `A0404`,提示往来单位不存在或不属于当前企业。
### 阻断原因
1. 订单服务 `OrderMasterDataGuard` 固定以公共归属 `tenantId=0` 查询往来单位和收货仓,并要求订单客户快照往来单位具有 `SHIPPER` 类型。
2. 当前平台往来单位 API 对 `tenantId=0` 返回 `A0422`,校验信息为“最小不能小于 1”;公共主数据无法经 API 创建或查询。
3. 旧订单请求仍强制 `carrierId`、`carrierName`。本次不传时返回 `A0422`。根据最新业务确认,头程业务不存在“承运商”概念,这一历史字段、校验、分配接口和费率依赖应移除或改为船司领域模型,不能继续作为下单前置条件。
结论:在修复公共主数据 `tenantId=0` API 契约,并移除订单承运商强制校验前,二期无法从下单继续验证测量、称重、计费和入库。
## 三期结果
结果:通过。
真实 API 已复核的完成装柜清单:
- 装柜计划:`2085554481377796097`
- 查询接口:`GET /api/platform/v1/first-leg/loading-lists/2085554481377796097?warehouseId=2084548444218646530`
- 最终状态:`COMPLETED`
- 集装箱号:`PH3-20260807103117`
- 装柜箱数:2
- 总件数:20
- 总毛重:20kg
- 总体积:0.24m3
- 历史事件存在:`PDA_COMPLETE_LOADING`
- 明细已有冻结时间,符合完成后不可修改的规则。
定向服务层测试:29 项通过、0 失败、0 错误。
- `SmartLoadingServiceTest`:15 项
- `LoadingListServiceTest`:8 项
- `LoadingPickServiceTest`:2 项
- `PdaPickSettlementPlanTest`:3 项
- `SmartLoadingStatusTest`:1 项
## 构建与脚本观察
- 离线全量模块测试执行到 `firstleg`:211 项中 1 项失败。失败项是 `InboundParentChildSqlContractTest`,原因是统一 SQL 已使用最终索引命名,但测试仍断言旧索引名 `uk_inbound_parent_sequence`;属于 SQL 契约断言滞后,不是 Java 业务断言失败。
- 二期验收脚本需要 PowerShell 7 的 `SkipHttpErrorCheck`,而本机只有 Windows PowerShell 5;测试时使用了临时 UTF-8 BOM 兼容副本。
- 原脚本引用的 `c7.png`、`c8.png` 示例图片未随项目提供;测试目录使用最小 PNG 仅验证上传协议。
- 初始 File 隔离 JAR 未包含当前资质包上传端点,使用当前编译类启动后接口通过。发布前应重新打包 File 服务,避免运行包与源码不一致。
## 建议处理顺序
1. 移除头程订单及二期计费中的承运商强制字段、校验和分配逻辑;如需要船司,改为独立船司主数据,不复用往来单位承运商。
2. 修复平台公共主数据 API:允许且仅允许平台身份使用 `tenantId=0` 创建、查询公共仓库和往来单位。
3. 为订单下单提供可选的公共发货单位选择,或明确订单客户快照不再依赖 `SHIPPER` 往来单位。
4. 完成以上两项后,重新执行二期全链路:下单、审核、入仓单、测量、OCR 称重、费用试算、费用确认、入库完成。