From ab511378a8eb1b89c9466e4a133878966b1d7382 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Mon, 17 Aug 2026 15:55:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 三期/货柜管理全链验收矩阵-2026-08-13.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/三期/货柜管理全链验收矩阵-2026-08-13.md b/三期/货柜管理全链验收矩阵-2026-08-13.md index 7322d1f..60e75fc 100644 --- a/三期/货柜管理全链验收矩阵-2026-08-13.md +++ b/三期/货柜管理全链验收矩阵-2026-08-13.md @@ -30,7 +30,7 @@ | CT-D10 | DO/PU 未齐、部分完成、全部完成 | 柜次与运输协同已建立 | `DELIVERY_ORDER`、`PICKUP_ORDER` 可独立查询、上传和鉴权下载,版本与幂等有效 | 柜次详情入口待回传 | 服务端已冻结;人工入口待定 | | CT-D11 | 正常、异常、取消异常 | 任意有效柜次及显式货柜版本 | 标记/取消使用版本和必填原因;overview 保留 `MARK`/`CANCEL` 全部历史 | 货柜详情入口待回传 | 服务端已冻结;人工入口待定 | | CT-D12 | 多节点运输轨迹与操作日志 | CT-D10 | overview 时间线含运输更新、异常和 PDA 事件,按发生时间升序 | 详情时间线入口待回传 | 服务端聚合已冻结;人工入口待定 | -| CT-D13 | 满足全部 `LOADED` 硬门禁 | 订舱、拖车、有效放行回执、PDA 拣货、五类证据完成 | PDA `complete` 写前预检 inbound `LOADING`、bridge、订舱 `RELEASED`、同稳定 `containerBookingId` 的拖车 `COMPLETED` 和五类 ACTIVE 证据;缺项 A0409 且 task/plan/inbound 零写入,齐备后同一事务完成三者并推进 `LOADED` | 订单/柜次详情显示完成且编辑锁定 | `LANDED_STATIC`:OpenAPI 与 HTTP 脚本已接线;待部署后真实 HTTP 复核 | +| CT-D13 | PDA 确认装柜并推进 `LOADED` | inbound `LOADING`、bridge、订舱 `RELEASED`、PDA 全拣和五类 ACTIVE 证据齐备;拖车允许缺失或未完成 | PDA `complete` 不以拖车缺失/状态为阻断;若同稳定 `containerBookingId` 存在有效拖车,则同一业务动作将其推进“已完成装柜”,并原子完成 task/plan/inbound `LOADED` | 订单/柜次详情显示完成且编辑锁定 | `BLOCKED_CONTRACT`:现 OpenAPI 仍要求预先 `COMPLETED` 拖车;等待新响应、拖车历史和回滚字段冻结 | | CT-D14 | PDA 未最终完成前向同一预装计划增加入库单 | 已有稳定 `loadingPlanId/taskId/containerBookingId`,任务尚未最终完成;新增票满足同客户、仓库、渠道、容量与柜型约束 | `EDITING/LOADING` 可增量;`LOADING` 不回退且复用同一 task;plan/task/item 版本递增,旧 inventory token A0409 后必须刷新;全拣后增项将 `AWAITING_REVIEW` 撤回 `IN_PROGRESS`,证据保留;未拣项可删,已拣数量形成 `minPackageCount` | Admin 预装增量入口与 PDA 同步显示新增项 | `LANDED_STATIC`:assign/adjust/delete 与 capability DTO 已冻结并接入脚本;待部署后真实 HTTP 复核 | ## 全链验收用例 @@ -49,7 +49,7 @@ | CT-E10 | DO/PU | 通用查询、multipart 上传、鉴权下载;上传要求 `Idempotency-Key`、真实文件、`expectedVersion`,重放不得重复上传 | Admin 入口待回传 | 两类型响应、文件哈希/ID、二进制下载、幂等重放 | 服务端契约已冻结 | | CT-E11 | 货柜异常及取消历史 | `POST/DELETE /api/platform/v1/containers/{id}/exception` 要求 `expectedVersion` 和必填原因;冲突失败;overview 历史只追加不覆盖 | Admin 入口待回传 | 标记/取消响应、版本冲突、overview 历史 | 服务端契约已冻结;版本来源阻断 | | CT-E12 | 运输轨迹/日志 | overview `timeline` 聚合 `TRANSPORT_UPDATE`、`MARK/CANCEL`、`PDA_*`,时间升序且含详情、操作者和发生时间 | Admin 入口待回传 | overview 时间线响应 | 服务端契约已冻结 | -| CT-E13 | `LOADED` 正向与逐项负向 | 五项硬门禁分别缺失时 fail-closed;拖车按稳定 `containerBookingId` 归属,历史 `loadingPlanId` 为空不再构成错误门禁;正式拖车完成后才允许 PDA `complete` 迁移一次 | PDA 完成页、入库单和订单详情不得出现无解释的完成/`LOADING` 分裂 | 逐项负向 + 1 个正向 + 幂等重放;记录拖车 ID、柜次 ID、计划 ID、状态、业务码、`requestId/traceId` | `LANDED_STATIC`:失败零写入和最终同事务响应已锁定;待部署后真实 HTTP 复核 | +| CT-E13 | PDA complete 拖车联动正反例 | 有同柜 `LOADING` 拖车时 complete 后拖车 `COMPLETED` 且 inbound `LOADED`;无拖车仍成功;错柜拖车不修改;同键重放不新增拖车或 task 历史;并发/任一保留门禁失败时全部对象原子回滚 | PDA 完成页、入库单、订单详情及拖车详情显示同一最终事实 | 三条正反链 + 幂等重放 + 并发;记录 task/plan/inbound/truck 前后版本、历史数量、业务码和 `requestId/traceId` | `BLOCKED_CONTRACT`:等待关联有效拖车的精确判定、完成状态/动作名和响应 DTO | | CT-E14 | 跨客户与跨仓库隔离 | 交叉资源 ID 不可读写下载,不泄露资源存在性 | 页面无越权入口 | 双身份交叉请求证据 | 待契约 | | CT-E15 | push 幂等、冲突与事务回滚 | 首次成功请求冻结 path/body/expectedVersion/key;同 key 原样重放只读且返回首次结果;同 key 异参、新 key 重复均冲突;各负向后计划、版本、历史、bridge、PDA 全快照零漂移;首次 push 在 bridge 中途失败时整事务零残留且不得触发 PDA | 冲突或失败后页面刷新仍只显示首次成功事实 | 原始请求、三次回查全快照、失败 `requestId/traceId`;中途失败由后端事务合同覆盖 | 新时序合同已冻结,待环境验收 | | CT-E16 | 默认 Admin HTTP 同 marker 完整链 | 默认入口按 `phase3-container-loading -> phase3-loading -> overview/PDA/evidence -> customs -> loading-finalize` 串行;下游只消费 `phase3Loading` 发布的 `taskId/inboundId/loadingPlanId/containerBookingId`,最终同一订单详情和列表均为 `LOADED` | 同一批次可从订单、柜次、预装、PDA、报关入口逐级回查 | 全新 marker、关键资源 ID、五类二进制证据、各请求 `requestId/traceId`、最终统一订单状态 | 静态合同已接入默认入口,待环境 HTTP | @@ -60,9 +60,9 @@ - 真实测试样本:订单 `NYEXX2608170001`;PDA task、review、装柜计划与五类证据均已完成,但 inbound 仍为 `LOADING`。 - 门禁只读证据:`ocean_ready=1`、`truck_ready=0`;同柜拖车预约 `TA2089239590749704194` 的 `loading_plan_id=NULL`、状态为 `LOADING`。 -- 当前冻结事实:`phase3-loading` 只完成 claim/batch/证据与动态增量,任务保持 `LOADING/AWAITING_REVIEW`;下游门禁齐备后,`phase3-loading-finalize` 调用 `POST /pda-loading/tasks/{taskId}/complete`。该调用在同一 Firstleg 事务完成 task/plan/projection/inbound 并推进 `LOADED`,不再调用旧 `/inbounds/{id}/loading/complete`。 -- 拖车归属统一使用稳定 `containerBookingId`,不要求历史 `loadingPlanId` 非空;新建/编辑由服务端解析并冻结计划。缺拖车、未完成或归属不匹配均 A0409,且 task/plan/inbound 零写入。 -- 部署后回归包:① PDA 完成响应与 task/inbound/order 回查一致;② 无拖车、拖车未完成、拖车归属不匹配分别返回明确业务证据并保持 `LOADING`;③ 正式关联拖车完成后 PDA `complete` 推进 `LOADED`;④ 历史空 `loadingPlanId` 按 `containerBookingId` 正式口径覆盖正反例;⑤ 失败分支保留 path、HTTP、业务码、message、`requestId/traceId`,且不得继续执行任何仅限 `LOADED` 的突变请求。 +- 最新用户覆盖:`phase3-loading` 仍只完成 claim/batch/证据与动态增量,任务保持 `LOADING/AWAITING_REVIEW`;最终入口仍为 `POST /pda-loading/tasks/{taskId}/complete`,但拖车缺失或尚未完成不再是阻断。 +- 目标联动:若稳定 `containerBookingId` 有关联有效拖车,PDA complete 同一业务动作将其推进“已完成装柜”;若无拖车仍成功;错柜拖车不得修改。保留订舱 `RELEASED`、bridge 和五类 ACTIVE 证据门禁。 +- 待冻结回归包:① 有 `LOADING` 拖车 → PDA complete → 拖车 `COMPLETED` + inbound `LOADED`;② 无拖车仍成功;③ 错柜拖车零修改;④ 同键重放不新增历史;⑤ 增量/final complete 并发和任一保留门禁失败时 task/plan/inbound/truck 原子回滚。当前 finalize 已主动 `BLOCKED_CONTRACT`,禁止继续执行旧“拖车必须预先 COMPLETED”的 HTTP。 ## PDA 进行中增量预装冻结回归