Files
baiyue-firstleg/docs/入库测量与国内货柜履约业务功能测试回归报告.md

72 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 入库测量与计费、国内货柜履约业务功能回归报告
测试时间: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 称重、费用试算、费用确认、入库完成。