diff --git a/Admin货柜管理样式核对记录.md b/Admin货柜管理样式核对记录.md index 3f6ccfd..c2a18a1 100644 --- a/Admin货柜管理样式核对记录.md +++ b/Admin货柜管理样式核对记录.md @@ -31,7 +31,7 @@ 原型先读 [局部指引](悦/货代SAAS平台后台/AGENTS.md),目标模块为 `prototype-src/modules/06-containers.html`:订舱 `page-booking-list` / `page-booking-detail`,拖车 `page-truck-list` / `page-truck-add` / `page-truck-edit`,历史货柜与装柜入口 `page-ct-list` / `page-ct-manifest` / `page-ct-board`。 -历史原型没有完整表达当前国内/海外双工作台,不能照其页面数量恢复旧菜单。本轮以用户确认的密度规则和当前实际组件、事件为依据,保留如下承载方式: +当前菜单以用户提供的新版.html为准,恢复订舱、拖车、货柜、装柜清单、预装清单五个入口;货柜入口提供国内/海外阶段切换,沿用各自服务端权限与动作。本轮以用户确认的密度规则和当前实际组件、事件为依据,保留如下承载方式: | 页面/模式 | 操作与承载方式 | 当前组件与依据 | 采用公共规则/业务例外 | 验证与截图 | |---|---|---|---|---| @@ -77,3 +77,18 @@ - `pnpm typecheck`、`pnpm build` 与 `git diff --check` 通过;AGENTS 索引合同 1050 项通过。 - 本轮业务脚本与修改前版本对比,仅增加样式导入、确认浮层类和可选密度参数,没有修改业务处理逻辑。实际浏览器加载、长数据布局、浮层普通/全屏/重开及各权限状态仍待 1920×1080、100% 缩放人工截图确认。 - 本轮未部署、未启动后端或修改业务数据。代码验证不替代实际业务写入及视觉验收。 + +## 新版菜单回归矩阵(2026-10-08) + +依据:用户提供 `新版.html`,货柜菜单 1480–1487 行、货柜列表 `page-ct-list`(8133、8162 行)、装柜清单 `page-ct-manifest`(8202 行)、尾程计划 `modal-lmo-inbound-plan`(9647 行)。本轮用户确认恢复五菜单并承接海外操作,不回退现行整柜预计到仓规则。 + +| 页面 | 操作 | 原型承载与布局 | 本轮处理 | +|---|---|---|---| +| 货柜列表 | 国内、海外操作 | 同一货柜入口,宽表含清关/DO/PU/车队/到港/还柜 | 同一菜单内阶段切换,保留现有独立详情与原操作弹框;两阶段分别鉴权 | +| 装柜清单 | 查询、查看 | 独立列表,明细在列表下方展开;宽表水平滚动 | 恢复正式列表路由,复用真实清单查询与嵌入明细 | +| 装柜清单 | 打印 | 行内打印动作 | 读取所选清单成功后打印明细,不打印失败或过期响应 | +| 装柜清单 | 备注、删除 | 原型备注弹框,删除为提示占位 | 当前正式已确认清单只读,不增加未经服务端支持的修改/删除 | +| 尾程计划 | 到仓日期 | 居中计划弹框中日期输入 | 服从现行整柜统一规则,保留只读并补充带柜号跳转维护、计划生成后锁定说明 | +| 其他既有操作 | 新增、编辑、确认、文件 | 见上方逐操作矩阵 | 保留原组件、业务权限与状态门禁,不改变提交契约 | + +人工视觉:待用户在1920×1080、100%缩放下截图确认。自动测试与部署结果分别记入主契约,不以源码核对代替真实页面验收。 \ No newline at end of file diff --git a/Admin高密度界面规范.md b/Admin高密度界面规范.md index c4b7e15..d516216 100644 --- a/Admin高密度界面规范.md +++ b/Admin高密度界面规范.md @@ -103,6 +103,7 @@ - 汇总使用单行摘要或紧凑描述表。自动费用与其他费用保持各自业务口径,金额、单价、计费量、附加费和版本完整展示。 - 保留公式、计费依据和价格来源入口,不能为了减少行数合并不同口径的金额或重量。 - 测量各来源保留独立分组;展开时在表尾显示合计,折叠时在标题显示摘要,同一口径不在上下重复占位。 +- 测量作业弹框采用用户确认的彩色分区:申报与实测对比浅绿(`#f4fbf8`)、客户申报明细浅蓝(`#f7f9ff`)、箱规明细浅黄(`#fffbf4`),保留对应左侧色条和 8px 圆角,作为连续白底规则的局部例外。区块不得使用负外边距伸出正文;左右内边距由 `measurementDensity.css` 统一维护,通用密度规则不得将其清零。保持 1560px、92vh 居中作业弹框及原有业务分组,不因修复裁切而移除彩色分区。 三个分区同级排列,客户申报不得嵌套在实测大框内。箱数、毛重、体积集中在“指标/客户申报/平台实测/差异(实测 − 申报)”表中,不在下方重复总数;未采集显示“未测量/待测量”,申报缺失显示“—”,相等显示“一致”。净重、材积重单独显示平台事实,不与申报毛重混比。 客户申报区保持只读;实际品名和预计托数放在“平台实测箱规”区,沿用原保存与权限规则。未采集时只保留主状态,有箱规和来源后显示采集来源;平台补充数据的口径说明通过提示展示。提交按钮旁显示当前订单状态、缺少测量或称重等实际阻断原因。 桌面布局中,对比区标题与客户、渠道、状态同排;申报区标题与原单据号码同排,标签和值横向排列;实测箱规标题、实际品名、预计托数及录入操作共享一行。长内容自然换行,不截断编号或缩小字号。提交阻断原因集中在固定底栏,正文不重复显示同一提示,业务状态、偏差和冲突提醒保留。 - 同一计算策略只保留一个明确操作入口,保存中、无权限、冻结与失败信息照常显示。 - 称重图片可用缩略图加紧凑事实行;保留查看原图、托盘/库位信息和人工修正入口。可视化、图纸、标签预览、库位示意等按业务用途保留合适尺寸。 diff --git a/README.md b/README.md index 4aa1d29..1010a2a 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ - [船期日历功能规划](国内货柜履约/船期日历功能规划.md):渠道、周模板、单次船期、收货截止时间和按渠道货量统计的独立日历规划。 - [海外仓业务](海外仓业务/README.md):船节点、海外接柜、入仓、库存、托盘、换标、转运、废弃、退货、排车、PDA 出库、派送、异常退回、客户回访、一件代发及海外本土业务。 - [船节点标准化契约](海外仓业务/船节点标准化契约.md):统一船司原始状态、标准节点、预计/实际时间、异常事实、还柜停止规则和新增船司接入门禁。 + - [车辆管理原型梳理与任务规划](海外仓业务/车辆管理原型梳理与任务规划.md):司机资质、车次、自有/外接承运、运维与报价的范围及契约入口。 + - [内部拼车需求池首版开发契约](海外仓业务/内部拼车需求池首版开发契约.md):车次余位发布、销售意向、承运占位、本土订单关联及我仓上车流程。 - [财务管理](财务管理/README.md):应收、应付、费用池、账单、收款、成本、核销、凭证以及国内外业务费用来源。 - [打印标签维护](打印标签维护/README.md):箱唛、各类托盘标、HOLD、BOL 与其他单据的现状盘点、参考样张和逐项改版记录。 diff --git a/业务快速索引.md b/业务快速索引.md index b791114..2e4d8b0 100644 --- a/业务快速索引.md +++ b/业务快速索引.md @@ -25,7 +25,7 @@ - 客户账单:根 `AGENTS.md` → Client `apps/client-web/AGENTS.md` → `src/modules/finance/` → `baiyue-firstleg/finance/AGENTS.md`;平台账单才切换 Admin Finance。不要因“账单”自动加载柜费分摊或海外费用契约。 - 退货、异常、拖车:先用终端、阶段和动作分流;无法确定时只读取本节对应行,不全文加载海外仓 README 或 Lastleg 全部业务索引。 -每个入口同时标出排除范围,避免把相邻生命周期当作同一业务。普通任务默认最多读取根指引、一个终端/模块指引和目标代码命中段;跨服务时再增加直接消费者或提供者。 +每个入口标出业务边界,避免把相邻生命周期当作同一业务。读取量与适用指引层级统一遵循根 AGENTS.md;已提供的根规则不重复全文加载,跨服务只增加实际涉及的直接消费者或提供者。 | 常用说法 | 区分依据 | 首个定位范围 | |---|---|---| @@ -105,6 +105,8 @@ | 海外仓 PDA | `apps/pda-overseas-uniapp/AGENTS.md`;执行规则查 `baiyue-firstleg/lastleg-service/AGENTS.md`,跨模块流程才查海外仓 README | 入仓 `src/pages/operation/`、`src/api/inbound.js`;排车与出库 `src/pages/dispatch/`、`src/pages/outbound/`、`src/api/fulfillment.js`。Backend `lastleg-service/inboundplan/pda/`、`dispatch/pda/`、`delivery/`;统一经 `gateway/`。柜级收货与单票客户隔离按 Lastleg“PDA 入仓”规则核对 | | 海外采购、本土卡车与散板 | `docs/海外仓业务/README.md` | Admin `modules/overseas-business/`;Client `modules/cross-border/`;Backend `lastleg-service/` 的 `procurement/`、`trucking/`、`looseboard/`;统一经 `gateway/` | | 海外仓库与通用资料 | `docs/海外仓业务/README.md` | 全部仓库主档进入 Admin `modules/warehouses/` 与国内 `warehouse/`;海外库位/托盘/锁进入 `warehouse-overseas-service/` 并引用国内 warehouseId;报价、汇率、车辆按海外服务实际契约 | +| 车辆管理、司机证照、保养加油、车辆维修/故障/救援/异常、外接货与车次 | `apps/admin-web/src/modules/overseas-master-data/AGENTS.md`、`baiyue-firstleg/lastleg-service/AGENTS.md`;原型范围有疑问时查 `docs/海外仓业务/车辆管理原型梳理与任务规划.md` | Admin `modules/overseas-master-data/`;Backend `lastleg-service/fleet/`,接口 `lastleg-service/src/main/resources/openapi/fleet-drivers-v1.yaml`、`fleet-trips-v1.yaml`、`fleet-vehicle-records-v1.yaml`;证照与运维照片存储查 `file/AGENTS.md` | +| 拼车需求池、车次余位、销售拼车意向 | `docs/海外仓业务/内部拼车需求池首版开发契约.md`、`apps/admin-web/src/modules/overseas-master-data/AGENTS.md` | 复用 Lastleg Fleet 与本土业务;区分车次余位发布和客户订单,不从需求池生成第二套库存或费用 | | 国内出仓后船节点 | `docs/海外仓业务/README.md` | Admin `modules/port-schedules/`、`ocean-bookings/`、货柜详情;Backend `firstleg/portschedule/`、`integration-service/`;从确认国内出仓查询至目的港到达、提柜和还柜。节点按 `containerBookingId` 柜级聚合,跨区事件使用 `tenantId=0` 平台技术范围,不携带或校验客户 | | 海外出库、排车、派送、异常与回访 | 当前海外履约契约 | Admin `modules/overseas-warehouse/pages/OutboundsView.vue`、`DeliveryOrdersView.vue`、`ExceptionOrdersView.vue`、`CustomerVisitsView.vue`;Backend `lastleg-service/dispatch/`、`delivery/`、`dropship/`、`exceptionorder/`、`customervisit/`;统一经 `gateway/`。异常单按 `PENDING → PROCESSING → COMPLETED` 流转,处理完成必须引用归属为 `OVERSEAS_EXCEPTION_EVIDENCE` 的证据;派送退回只从原出库拣货事实选择可退明细,退回海外仓时先把实收恢复到指定真实托盘/库位,再原子完成异常单并将派送置为 `RETURNED` | | 海外业务费用来源与客户财务 | 当前实现查财务契约与统一认证与服务通信契约;阶段 0A—0E 开发再读 `docs/财务管理/海外仓费用统一接入阶段0技术契约.md` | 当前 V1 由 `lastleg-service/financefee/` 校验海外入仓、采购、美国卡车、本土散板和海外仓服务费,通过完整快照和 Outbox 直接投递 Finance 内部入口入池;阶段 0 目标改为收费身份/候选版本、Finance 接受或拒绝结果事件及版本化资金计划。必须沿代码确认落地范围,不把技术契约当成已实现状态;Client 仍只读取获准客户财务 | diff --git a/头程到尾程/头程至实际开船节点冻结矩阵与缺口清单.md b/头程到尾程/头程至实际开船节点冻结矩阵与缺口清单.md index 34a881f..dada264 100644 --- a/头程到尾程/头程至实际开船节点冻结矩阵与缺口清单.md +++ b/头程到尾程/头程至实际开船节点冻结矩阵与缺口清单.md @@ -28,6 +28,8 @@ “已有实现”不等于最新版本已完成验收。下表的既有 HTTP 证据只证明对应报告范围与版本;历史通过不能替代当前完整链路、页面或 PDA 现场验证。报关和运输专项的通过也不能外推为 F01-F40 全部通过。后续增强项不作为首期主流程缺失处理。 +当前部署版本、已验证场景和未关闭项统一查阅[测试环境单机部署与配置契约](../测试环境单机部署与配置契约.md)文首的最新验收状态。本文以下带日期的复验记录及矩阵内历史状态保留作为当时证据,不替代该主契约的最新结论。 + ### 2026-09-30 当前复验结论 **F01-F40 尚未完成逐节点全量验收,不能宣布全部完工或出库以后没有问题。** 以下旧报告保留为对应版本证据,不代表本轮完整验收结论。 @@ -101,9 +103,9 @@ | F35 | 待转派送、待出库 | 排车转派送、出库单、派送单 | 出库/派送单生成、目的仓拆分、费用只发布一次 | 已实现并有综合真实 HTTP 证据 | 保持转派送前不可发车 | | F36 | 拣货中、待发车 | 海外 PDA 排车任务 | 托盘扫描、数量核平、车辆资料和发车门禁 | 已实现并有综合真实 HTTP 证据 | Android 真机和弱网恢复仍需专项验证 | | F37 | 已出库、派送中 | 出库单、派送单 | 出库完成、库存扣减和派送任务关联 | r3 拣货、发车、重放的来源位置/原始余额/汇总/SHIP 流水数量及零重复通过 | 不将整轮仍有其他失败的报告描述为全流程通过 | -| F38 | 派送中、已签收 | 派送单、签收凭证 | 签收文件、签收时间和每个目的仓派送完成 | 客户菜单和文件功能已部署;下载与客户隔离 HTTP 通过,实际菜单/文件可见 | 浏览器下载操作未通过,逐节点页面证据仍待补齐 | +| F38 | 派送中、已签收 | 派送单、签收凭证 | 签收文件、签收时间和每个目的仓派送完成 | 已实现;当前部署、文件操作与隔离验收范围见[测试环境主契约](../测试环境单机部署与配置契约.md)的 C63 记录 | 原样本下载缺口已有通过证据,其他样本/格式及逐节点页面边界以主契约为准,不沿用旧“浏览器下载未通过”结论 | | F39 | 异常退回处理中 | 异常单、退回入仓和库存恢复 | 拒收/部分拒收、退回、库存恢复和原因历史 | 不可变出库来源解析已部署修复,原异常成功恢复及重放/完整对账通过 | 新完整尾程生命周期及多次退回/部分恢复组合场景待验 | -| F40 | 已完成、待回访 | 客户回访、跨区完成事件、订单回写 | 回访记录、`DELIVERED` 回写及订单 `COMPLETED` 收口 | 根订单余量门禁修复本地 92 项通过,Order #173/Firstleg #463 已部署;r3 真余量未完成时根未提前完成 | 继续验收两片全部真实签收的两种次序、取消、同事件及完成 Outbox 幂等回写 | +| F40 | 已完成、待回访 | 客户回访、跨区完成事件、订单回写 | 回访记录、`DELIVERED` 回写及订单 `COMPLETED` 收口 | 已实现根单余量门禁及可靠完成回写;当前版本和各签收次序/恢复场景的验收事实见[测试环境主契约](../测试环境单机部署与配置契约.md) | 两种签收次序、取消、同事件和完成 Outbox 幂等均须分别核对对应证据;新车辆退回重派组合及逐节点页面不得由历史局部通过推定关闭 | ## 三、当前实现与目标的主要断点 diff --git a/头程到尾程/甩柜改配接入设计.md b/头程到尾程/甩柜改配接入设计.md index 7b74386..0479caf 100644 --- a/头程到尾程/甩柜改配接入设计.md +++ b/头程到尾程/甩柜改配接入设计.md @@ -15,7 +15,11 @@ ## 现有接入入口与待验收项 -现有平台船期页面 `PortSchedulesView.vue` 提供编辑船名、航次、预计开船和到港时间的入口;后端 `PortScheduleService.update` 保持客户、订舱和柜次归属不变,并保存版本和修改前后历史。优先复用该能力。 +入口放在原柜详情的“船名航次信息”区域,通过“船期维护与历史”打开居中弹框;不依赖已退出路由的独立 `PortSchedulesView.vue`。后端返回与当前运输展示来自同一条记录的只读 `currentPortScheduleId`,前端按此加载详情;不得自行从其他柜或全量船期中选择记录。`PortScheduleService.update` 保持客户、订舱和柜次归属不变,并保存版本和修改前后历史。 + +已有记录只修改船名、航次、ETD、ETA及本次原因,其余来源与有效期字段保留;提交携带原版本和幂等键,网络结果不明时重试原请求,未改运输值不重复发送。只读权限可查看历史,新增和编辑权限分别校验。无当前记录时,允许在原客户、原订舱和原柜上登记船期信息,来源、确认时间、信息有效至及截港时间须明确填写,不自动编造门禁有效期。 + +交互依据沿用既有船期维护的居中表单和货柜详情分区;已有记录使用1000px弹框,首次登记使用1120px三列表单,原因跨列,历史展示修改前后四项运输字段、修改人、原因和时间。实际1920×1080页面验收及发布证据仅维护在测试环境主契约,不以此设计说明替代验收结果。 当前船期展示已改为读取同一客户、订舱和柜次下最新船期记录,不再固定读取订舱初始快照。平台人工改船后,客户端会同步显示最新船名、航次和预计时间。 diff --git a/头程到尾程分阶段流程/阶段五-海外接柜库存与库内服务.md b/头程到尾程分阶段流程/阶段五-海外接柜库存与库内服务.md index a672950..79c3db3 100644 --- a/头程到尾程分阶段流程/阶段五-海外接柜库存与库内服务.md +++ b/头程到尾程分阶段流程/阶段五-海外接柜库存与库内服务.md @@ -28,7 +28,7 @@ | 企业操作员 | Client | 查看本企业库存,发起换标、转运、废弃等自助服务 | 不查看其他客户或直接改实物托盘 | | 换标作业员 | 海外 PDA | 认领、扫描旧/新标、拍照、提交复核 | 不自行批准复核或客户确认 | | 换标复核员 | Admin | 退回返工、核对作业事实 | 已由客户确认后不能退回 | -| 废弃审核员 | Admin/PDA | 审批一件代发废弃并触发实际扣减 | 创建申请时不得直接扣库存 | +| 废弃审核员 | Admin | 审批一件代发废弃,授权仓库执行 | 申请与审批均不扣库存;由海外 PDA 实际废弃确认时扣减 | | Lastleg | 后端 | 入仓作业、库存业务、子单、状态和事件权威 | 不拥有物理仓/托盘主档 | | Warehouse Overseas | 后端 | 海外库位、实物托盘、资源锁和物理状态 | 不拥有库存客户归属和尾程订单 | @@ -48,6 +48,8 @@ 只要任一计划仍缺真实资源,就不能准备、签收或开始该柜。PDA 首次扫码只确认计划阶段已预留资源,不在现场重新分配托盘或库位。 +本地计划和托盘行已保存,不代表远端资源批次已确认。原柜级转换命令处于 `LOCAL_COMMITTED` 时,仅该命令冻结明细中的计划继续显示待资源确认,并计入平台可恢复的柜;同柜此前已确认的计划保持原状态。平台关闭重开后仍使用原幂等键、版本和摘要完成资源确认,不新建计划或预留;远端确认完成后才恢复已计划状态和PDA操作资格。读取预览不自动执行确认。 + ## 4. F28 海外 PDA 柜号签收 ### 4.1 查看待卸货柜 @@ -297,7 +299,15 @@ PDA 扫描托盘后按服务端返回的 `palletVersion`、`positionVersion` 执 4. 通过后冻结对应库存并进入转运出库; 5. 实际移出和目标收货按转运单、库存流水和资源操作闭环。 -转运状态保存在子单,不覆盖尾程主状态 `INBOUND_COMPLETED`。 +既有库存转运的执行入口承载于 Admin 尾程订单详情中的“转运与换标履约”:来源分配完成且本票必要换标已获客户确认后,按执行权限确认出库;出库后按已发运未实收的来源选择目标海外收货仓、实际托盘及该托盘绑定的库位,逐笔确认目标仓实收。此入口与 PDA 来货转运测量、通用派送出库不同,不能以另一条状态链的按钮替代。 + +目标实收按本票已发运的来源位置逐笔进行。服务端核对真实海外收货仓、托盘绑定库位和冻结FBA目的仓,先保存原请求及摘要,再取得有效资源占用;同一转运的多个来源收到同一目标托盘时共享一次物理占用。资源服务已成功而本地库存事务失败时,保留原请求供原键原载荷恢复,不盲目释放、换键或更换目标。库存、收货凭据、来源状态及最终关联换标费用/结算命令在本地同一事务完成;原成功请求重放不重复入账、占用或收费,钱包最终结果由既有结算回执确认。 + +转运详情须提供本客户本票持久化的实收命令状态、原请求和权威目标。关闭重开或换浏览器后,未完成命令仍按原载荷继续;已完成命令的目标可供本票其他来源续收,不能仅因托盘为OCCUPIED而拒绝本票,也不能仅凭浏览器缓存将其他单据占用的托盘放行。出库未知结果先读取正式转运状态核对,不自动新建操作重复出库。 + +转运目标库存继续归属于该来源余额的真实入仓单ID、入仓单号及入仓码,不能使用转运尾程订单ID冒充入仓单身份。转运号作为本次操作和收货凭据的业务关联保留;目标海外仓、目的仓、托盘与库位取本次确认的权威资源。不同来源入仓单即使落入同一物理托盘,也应分别保留库存归属;后续库存选择与再次转运必须仍能解析合法的入仓来源。 + +转运状态保存在子单,不覆盖已经成立的尾程主状态 `INBOUND_COMPLETED`。既有库存转运须分别区分原来源尾程订单和本票独立转运尾程订单:原来源不因本次转运修改状态;本票在库存分配后已建立的INBOUND_COMPLETED也不能被换标回调的ALLOCATED、转运出库的IN_TRANSIT或转运实收的COMPLETED覆盖。具体转运进度由转运单及 `sub_order_status` 表达,此规则不替代后续真正的派送出库与签收主链。 ### 9.5 一件代发货物废弃 @@ -305,12 +315,13 @@ PDA 扫描托盘后按服务端返回的 `palletVersion`、`positionVersion` 执 1. 客户选择箱唛并创建申请; 2. 箱从 `AVAILABLE` 锁定为 `DISCARD_PENDING`,此时不扣 SKU 箱数; -3. 有 `lastleg:cargo-discard:approve` 权限的仓库/PDA 人员现场审核; +3. 平台由具有 `lastleg:cargo-discard:approve` 权限的人员审核;审核通过只批准作业,不提前扣库存; 4. 拒绝时只释放锁,不扣库存; -5. 通过时在同一事务调用专用 discard adjustment; -6. 箱进入 `DISCARDED`,写逐箱流水和唯一幂等键; -7. 校验扣减前箱数减废弃箱数等于扣减后箱数,且逐箱合计等于申请总数; -8. 任一失败整体回滚。 +5. 仓库/PDA人员确认实际废弃数量时,在同一事务调用专用 discard adjustment,确认即扣库存(2026-10-05用户确认); +6. 实际废弃的箱进入 `DISCARDED`,写逐箱流水和幂等事实; +7. 校验扣减前箱数减实际废弃箱数等于扣减后箱数,逐箱合计与实际确认总数一致; +8. 实际确认失败时扣减、状态及流水整体回滚;同单同托相同完整载荷重放不得重复扣减或追加完成历史,异数量拒绝; +9. 全部PDA作业完成后平台结案;结案及其重放不再次扣库存。审批驳回仍只释放锁。 ## 10. 状态与数据归属 @@ -341,7 +352,7 @@ PDA 扫描托盘后按服务端返回的 `palletVersion`、`positionVersion` 执 | 暂扣票参与排车 | 服务端拒绝,先按权限解除 | | 换标一项未完成 | 混合单不计整箱完成 | | 换标被退回 | 展示备注,清理设备草稿后按新轮返工 | -| 废弃审批失败 | 锁定和扣减整体回滚,不产生半套流水 | +| 废弃实际确认失败 | 本次扣减、确认状态和流水整体回滚,不产生半套流水;审批不提前扣减 | ## 12. 阶段完成判定 diff --git a/头程到尾程分阶段流程/阶段六-海外排车出库派送与回写.md b/头程到尾程分阶段流程/阶段六-海外排车出库派送与回写.md index 58ee3d0..dbb2c39 100644 --- a/头程到尾程分阶段流程/阶段六-海外排车出库派送与回写.md +++ b/头程到尾程分阶段流程/阶段六-海外排车出库派送与回写.md @@ -73,6 +73,8 @@ PDA 只调用 `/api/pda/**` 专用接口,客户和仓库由 Token、Gateway 6. 草稿锁原子转换为正式排车锁; 7. 生成排车单,初始为 `PENDING_DEPARTURE`。 +普通智能预排按界面非空装车容器分组,一次提交整份草稿;服务端核对每组容器归属、当前托盘锁、唯一客户/海外仓及托位容量,逐组生成独立排车单和PDA任务。任一组失败时整批回滚,不能先成功一组再把其余组隐藏。相同分组重新提交返回各自对应原单,不重复创建或将不同容器合并;空容器不产生排车。单张排车接口不得接收多个草稿容器混合的平铺托盘数组。换标仍按其单张申请的完整量排车,多容器选择必须明确拒绝,不能静默合并。 + 路线由已排托盘目的仓编码去重并稳定排序生成,预排和普通编辑都不接收人工路线文本。 ### 4.3 排车编辑和取消 @@ -81,6 +83,8 @@ PDA 只调用 `/api/pda/**` 专用接口,客户和仓库由 Token、Gateway 未执行、未产生不可逆拣货事实的排车可取消并释放正式锁。开始拣货后不能用取消恢复库存或抹掉作业历史。 +取消后保留原排车明细作为历史;入库单的排车状态及“已排车/未排车”筛选只计入同客户、同来源订单的未取消排车。若没有其他有效排车,显示未排车并可重新排车;存在替代排车或已发车、已完成的排车时仍显示已排车。列表与分页总数采用同一判断,不以历史明细存在代替当前排车状态。 + ## 5. F35 排车转派送 允许状态:`PENDING_DEPARTURE`、`PICKING`、`READY_TO_DEPART`,且必须早于发车。 diff --git a/头程到尾程分阶段流程/阶段四-海运目的港与尾程计划.md b/头程到尾程分阶段流程/阶段四-海运目的港与尾程计划.md index 903d8d1..e677640 100644 --- a/头程到尾程分阶段流程/阶段四-海运目的港与尾程计划.md +++ b/头程到尾程分阶段流程/阶段四-海运目的港与尾程计划.md @@ -221,6 +221,13 @@ Lastleg 消费步骤: ## 7. F27 尾程计划维护和整柜转换 +### 7.0 尾程订单列表页签 + +- 页签固定为“全部、开船前、开船后”。“全部”保留所有订单类型;后两个页签仅包含国内头程订单(`orderType=FIRST_LEG`,不再额外以内部来源字段限制)。一件代发、换标、仓储转运、本土散板、退货及废弃等其他类型只在“全部”展示。 +- “开船后”依据实际柜级船节点序号达到 40(实际离开起运港)及后续节点;只有预计开船、装船或尚无实际节点仍归“开船前”。订单启用人工节点覆盖后,仅按该票 `ACTUAL_DEPARTURE` 是否有时间判断,不回退柜级节点。 +- 船阶段筛选不改变订单主状态或排车、排约等操作资格;状态筛选继续独立生效。服务端在分页前过滤,列表总数及导出使用相同口径;客户端不按当前页记录二次筛选。 +- 按柜批量生成入库计划入口在三个页签保留,仍使用全柜预览和原计划门禁,不将船阶段视为生成计划的资格。 + ### 7.1 柜级工作台 入口:Admin → 海外仓 → 尾程订单 → 柜级工作台。 @@ -294,6 +301,8 @@ Lastleg 消费步骤: 整批转换原子且幂等:相同命令重放不生成第二批计划或资源;本地失败只补偿尚未确认的远端资源;远端确认失败的重放只重试确认。 +资源确认失败后,即使关闭弹框或刷新页面,也必须恢复原柜级命令。预览在 `LOCAL_COMMITTED` 时额外返回 `resourceRetry`,包含原 `idempotencyKey`、`snapshotVersion` 和 `snapshotHash`;页面用这一整组原值重试。外层快照与分组继续反映当前计划状态,用于展示,不能替换恢复命令的快照。其他命令状态不返回该恢复字段;缺少原重试依据时拒绝操作,不新建命令、计划或第二批资源。此字段不改变服务端“同键不同载荷拒绝”的规则。 + ## 8. 状态、编号与数据归属 | 维度 | 关键状态/编号 | 权威系统 | diff --git a/测试环境Jenkins部署指南.md b/测试环境Jenkins部署指南.md index 76f651d..00bdc43 100644 --- a/测试环境Jenkins部署指南.md +++ b/测试环境Jenkins部署指南.md @@ -30,6 +30,10 @@ 默认执行Maven测试;仅明确选择SKIP_TESTS时跳过执行,仍编译测试源码。总控先统一测试,再向固定commit的单服务任务传递跳过重复执行。发布前还须完成网关路由、部署拓扑、失败回滚和受影响前端合同。离线检查不能证明镜像健康或HTTP闭环。 +同机测试代理的执行器数量固定为1,避免构建与其他重任务挤占业务服务。总控测试和单服务打包还必须共用 `firstleg-test-maven` 跨Job锁,经 `deploy/scripts/run-ci-maven.sh` 执行;仅 `disableConcurrentBuilds()` 不能限制不同Job并发。入口按同一构建账号使用本机flock,控制端掉线后已有任务仍持锁时拒绝再起Maven,不删除锁文件绕过互斥。部署的SOURCE_COMMIT必须包含此入口及 `ci-bounded` POM配置,旧提交缺少防护时应失败,不能回退到裸mvn。 + +当前初始预算:Maven堆768MiB、测试堆1GiB、单测试fork,并分别限制元空间和直接内存;Surefire保留JaCoCo,启用父进程心跳检查、停止时kill、fork运行20分钟和退出30秒上限。宿主机GNU timeout提供45分钟期限及30秒强制终止,Jenkins内部另设50分钟上限。预算不是总RSS保证,须在真实Linux节点核对代理内存、memory.events/pressure和完整服务测试峰值;不足时按证据调整,不能重新放开三个Maven并发,也不能仅提高MemoryHigh挤占业务服务。代理服务保持 `KillMode=control-group`、`SendSIGKILL=yes`;代理掉线或构建中止后,先检查该服务cgroup是否仍有构建/测试子进程,确认退出再恢复,不把Job的ABORTED当作进程已清理。 + 单服务任务在取目标节点执行器前锁定对应服务,目标节点通过同一env文件拉镜像并更新容器。没有HEALTHCHECK、启动失败、不健康、退出或超时均判失败。只有同协议同Schema版本才可显式启用ALLOW_SAME_CONTRACT_ROLLBACK;架构切换保持false,恢复原则见执行清单。 ## 配置与端侧 diff --git a/测试环境单机部署与配置契约.md b/测试环境单机部署与配置契约.md index 0ab8647..81247c4 100644 --- a/测试环境单机部署与配置契约.md +++ b/测试环境单机部署与配置契约.md @@ -1,10 +1,975 @@ # 测试环境单机部署与配置契约 -更新日期:2026-09-29。当前只有 test,没有开发/生产环境。本文定义目标部署、切换与验收;具体路由、认证、投递契约唯一见[统一认证与服务通信契约](统一认证与服务通信契约.md)。 +## 尾程订单开船页签 TEST 发布(2026-10-08) + +本轮用户授权更新 TEST。Admin `cc37a42298cc022701011125f03855223d29dc51` 已推送 `release/test`,Jenkins `admin-web-test #525` SUCCESS,运行镜像 `admin-web-test:cc37a42298cc`,容器 running/healthy,实际静态资源已确认包含开船前后筛选。Lastleg 最终提交 `e09f8785e186040e15c8ecf1619eb95dfe750b31` 已推送 `test`,Jenkins `baiyue-firstleg-lastleg-service #228` SUCCESS,镜像标签 `e09f8785e186`、摘要 `sha256:cde58a3693b0549d9ac2092e1a2a3a9db0692671ba7e2f929514ff69ab6e4542`,容器 running/healthy。本轮仅发布 Admin 和 Lastleg,未执行 SQL、发布 Nacos 或操作其他环境。 + +页签保留“全部、开船前、开船后”。后两个页签只按 `FIRST_LEG` 类型纳入国内头程订单,不再以内部来源字段额外排除;其他六种类型仅在“全部”中展示。实际节点和人工覆盖口径见阶段四当前流程。发布前 Admin 316 个测试文件、2573 项测试及构建通过,部署/路由合同 28 项通过;最终 Jenkins 后端测试 1596 项、0 失败、2 跳过。 + +发布后正式 HTTP 只读核对:全部 4523 条,其中头程 1828 条,开船前 1049 条、开船后 779 条,分组无遗漏且互斥;其他六种类型与两个开船阶段交叉筛选均为 0。验证会话均已退出,无业务数据写入。页面 1920×1080、100% 人工截图仍待确认。 + +未关闭项:真实 CSV 导出仍未全量,开船前列表 1049 条而导出 1000 条;本轮已修正首次 500 条即提前停止的问题,但运行分页上限与结束判定仍需收口,不能宣称导出验证通过。后续检查时工作区同一 Service/测试出现未提交的导出接口重构,未将该批改动纳入本轮发布。证据保存在 `baiyue-firstleg/reports/lastleg-sailing-tabs-test-20261008/`;`classification-final.json` 确认页签通过,`http.json`、`http-r2.json`、`http-final.json` 保留各次失败,`backend-final.json` 与 `frontend.json` 为发布证据。 + +## 拼车可登记范围与排车审核入口 TEST 发布(2026-10-08) + +本轮用户明确授权部署 TEST。Admin `6551b703cba01e9732e8a603301c1df64e3a8a26` 已推送 `release/test`,Jenkins `admin-web-test #524` SUCCESS,镜像 `admin-web-test:6551b703cba0`,容器 Healthy、`/healthz` 检查通过。Lastleg `136a2bc3b538766beb42f94c5a3277d9a28539e1` 已推送 `test`,Jenkins `baiyue-firstleg-lastleg-service #225` SUCCESS,镜像标签 `136a2bc3b538`、摘要 `sha256:39d26bf38b6127d98b9f6c86e779c44cb5e55641d738963dc4054b7d1d21caea`,容器 running/healthy。仅发布上述两个部署单元,未执行 SQL、修改 Nacos 或发布其他环境。 + +发布包含拼车 Tab 布局、排车阶段与二级审核视图、关联车次及审核快照/跳转,以及可接运力默认按登记资格筛选。管理员历史查询须显式 `scope=ALL`,发布设置读取草稿/历史也使用该范围;有权限但不可登记时按钮置灰并显示原因。 + +验证:发布前前端314个文件/2564项测试、类型检查及构建通过,32项部署/路由合同通过;Jenkins Lastleg 测试统计1462项,0失败、0错误、2跳过。部署后独立登录 TEST 通过正式 API 只读检查:默认可接运力0条、全部发布6条且均不可新增意向,历史详情返回不可登记原因;排车 `stage=LOADING` 返回4条,阶段及 `workflow` 审核字段符合合同。取证会话已退出,未创建业务数据。默认范围当前无正向样本,不据此宣称真实新增意向操作通过;页面1920×1080、100%人工截图确认仍待完成。此前全局内部依赖离线门禁在非本轮修改的拼车桥接/转运模块报错,本轮未修改或关闭该问题。 + +## Admin 装柜清单独立详情恢复(2026-10-08) + +按本轮用户确认恢复装柜清单“查看”进入独立详情页 `/loading-lists/:planId`,删除列表下方展开;保留返回列表,列表打印经详情页加载成功后执行。本节修正下方“Admin 货柜菜单恢复发布”中页内明细的交互结论。 + +Admin 提交 `f24b592705de967ec4db001ce0646746f425abf2` 已推送 `release/test`,TEST Jenkins `admin-web-test #523` SUCCESS,构建提交一致、容器健康与 `/healthz` 检查通过。公网 `/loading-lists` 返回200;路由资源 `routes-eBFpEV_J.js` 已包含独立详情路由,详情与列表脚本均返回200,列表脚本含详情跳转且不含 `confirmed-inline-detail`。本轮仅发布 TEST Admin,未发布灰度、后端或数据库。 + +离线314个测试文件、2559项测试全部通过,类型检查、构建及1119项索引合同通过。公网资源核对不代替登录后真实点击与1920×1080、100%缩放人工截图验收,页面效果待人工确认。 + +## 灰度拼车角色页面与 PDA H5 补验(2026-10-08) + +用户授权管理员创建专用验收账号后,新增隔离样例 `FO-2108018182201348098` / `TR-395A4DE80CAD4F29`。两销售各只见本人两条意向;销售A可查询报价库,销售B没有查询入口;最小调度账号可见全部四条并确认承运;客户A可见成交订单,客户B列表为空。真实页面将来源报价25.50 CNY与实际议价24.00 CNY分别保存,报价查询GET与保存PUT各一次200。登记意向不占位,确认后余位12→11;实收绑定后计划占用19、预留0、剩余11,无重复扣位。 + +本次订单 `LB-ONT-20261008-184514`、来货 `WT-EWLCY9ARM3OMLKEA4JCFGR3OF`、派车 `DS-WH-20261008-406850`、派送 `DL-WH-20261008-662274` 已闭环。海外PDA H5真实页面完成测试测量、生成并绑定托盘、上传明确标记的测试图、三单逐托拣货及整车发车。未拣齐与未确认装载均实际显示阻止原因;审核后整车发车成功并禁止重复提交。平台实收确认、关联派车、核量与审核使用正式HTTP;签收使用明确“无真实签字”的测试文本附件及正式HTTP,三笔派送DELIVERED,目标商业单COMPLETED;原键重放版本稳定,目标应收只有一笔24 CNY,不是实收付款。客户页面最终显示已完成、已签/未签/退回为1/0/0,1920×1080截图已保存。 + +过程中发现灰度Gateway的CORS只允许Admin/Client,PDA浏览器登录被403空响应拒绝。已同步服务器持久环境文件与Jenkins环境文件凭据,仅补国内/海外PDA精确Origin并重建Gateway,保留原镜像 `gateway:4825f782a32f`;健康恢复,其他容器及非CORS环境值不变。四合法Origin放行、未授权Origin仍403,共5项回归通过,海外PDA真实登录及后续操作通过。此项补验修正此前无Origin HTTP代理冒烟无法覆盖浏览器CORS的边界。 + +证据:后端 `reports/gray-ui-20261008/`,包括各角色DOM/截图、`quote-network.json`、`gateway-cors-verified.json`、`cors-origin-regression.json`、`pda-stage-journal/` 与 `completion.json`。专用账号与口令仅保存在用户私有环境目录 `fleet-pool-gray-ui-20261008-r1.json`,账号及业务样例保留用于复查。本轮未做车次资源释放,不把商业单完成等同于车辆/司机已释放;未验实体PDA扫码枪、打印机、真实货物测量或真实签字,也不扩大为全站视觉验收。 + +## Admin 货柜菜单恢复发布(2026-10-08) + +本轮用户授权先发布 TEST、验证通过后继续发布临时生产灰度。仅 Admin 前端:恢复装柜清单独立菜单、页内明细和打印;货柜列表提供国内装柜/海外清关提柜阶段切换;尾程计划增加带柜号跳转的预计到仓维护入口。整柜时间一致性与生成计划后锁定规则不变,不执行数据库、业务数据或后端发布。 + +| 环境 | Jenkins | 提交 | 结果 | +|---|---|---|---| +| TEST | admin-web-test #522 | d7911ad09d963834f3a38e0a589c7ea41ab5e746 | SUCCESS,健康检查通过 | +| 临时生产灰度 | admin-web-prod #23 | 10da46beab8cbe2419ec11e974dabdea57a7b4ca | SUCCESS,健康检查通过 | + +Admin PR #15 将 release/test 合入 main,合并树与 TEST 验证树完全一致。两环境各30项公网资源与真实HTTP检查通过,包括清单SPA及6个相关脚本资源、三项新功能代码标记、登录/权限、已完成清单详情、国内/海外货柜、尾程柜级汇总、到仓查询和退出。会话已退出,未修改业务记录。证据:`baiyue-firstleg/reports/container-menu-release-20261008/` 的 `release.json`、`test-smoke.json`、`gray-smoke.json`。 + +离线类型检查、构建、1119项索引合同与5项网关合同通过;全量测试2547项通过、1项5000ms超时,该文件单独复验11项通过。线上验证不代替1920×1080、100%缩放人工截图验收,视觉仍待确认。 + + +## 灰度拼车新增功能专项(2026-10-08,HTTP通过) + +用户明确只验证新加入的拼车功能,不重复旧FBA主链。正式入口 `scripts/fleet-capacity-pool-gray.mjs` 复用既有拼车矩阵,显式 `--environment GRAY`,读取独立灰度配置及production容器身份限定的只读取证;原TEST入口和默认Admin灰度F40白名单不放宽。默认plan零网络,写入使用独立报告、排他锁、原命令日志和未知结果停止门禁。接入的6文件49项离线合同通过。 + +真实灰度第二轮 `reports/fleet-pool-gray-20261008-r2/report.json`:735/735项通过、376个不同HTTP请求、23类拼车场景、零失败。车次 `TR-A9124B6EEF1A4EC2`,发布 `FO-2107995597723996161`;两名销售隔离、调度争抢剩余容量、托位/重量/体积门禁、暂停/截止、取消释放与重放、实收超量不改库存、BOUND不双扣、旧手工入口拒绝、两类商业订单唯一关联及实际PDA收货/拣货/共车发运/签收完成均已执行。 + +本土散板 `LB-ONT-20261008-217603`、本土卡车 `TR-ONT-20261008-585474` 均COMPLETED,对应派送 `DL-WH-20261008-274818`、`DL-WH-20261008-107393` 均DELIVERED。根控另开新会话回查7项HTTP通过,分别只有一笔30 CNY派送应收,发布最终CLOSED;不是实收付款。证据 `reports/gray-flow-20261008/pool-final-live-verification.json`。运行报告确认会话已注销,临时销售/调度/PDA身份停用,车次结案及车辆/司机释放不改客户库存;客户和业务样本保留留证。 + +首轮 `reports/fleet-pool-gray-20261008-r1/` 45项中44通过、1失败,真实来货审核S0500原因是灰度 `ll_inbound_plan.creation_mode` 仍VARCHAR(16),不能写18字符WAREHOUSE_TRANSFER。当前模块基线已32,统一海外基线遗漏16;已修正统一基线并执行精确V13仅扩大此列,保留排序规则/NOT NULL/AUTO,原8条计划记录摘要不变。原失败来货 `WT-5EXXAVJIO2BD1FIK8UENKBO9Q` 回查仍PENDING_REVIEW,修复后正式审核200、WAIT_PDA_RECEIVING,之后才新开隔离r2,不覆盖首轮报告。证据 `creation-mode-before/applied.json`、`original-incoming-before/after.json`。源码修复test提交1cb1f2d0经PR23合入main为29bbd85e;仅SQL及文档,无Java改动、无需重新发应用镜像。 + +独立审计 `reports/gray-flow-20261008/pool-r2-independent-audit.json` 已核对23项实际覆盖、229条明确响应的写日志、两类单据唯一归属/费用/库存及账号清理;根控汇总见同目录completion.json。本轮容器及公网资源复核仍健康且版本不变。该结果是新增拼车的真实HTTP/数据库专项,不宣称重跑全套FBA、全部1920页面或非法改库漂移故障。原scope中的fullAcceptance:false保留上述边界,不能把它解释为业务专项失败。旧FBA方向的启动尝试在取证配置检查前失败且未创建订单,按用户纠正停止,未计入本轮拼车结果。 + + +## 内部拼车需求池灰度发布(2026-10-08,完成) + +用户本轮授权将已验收首版发布到临时灰度。后端test、两端release/test通过正常PR合并main,未切换本地分支或带入未提交指引/脚本。合并后main树与已验收来源树一致,保留既有灰度部署配置。 + +| 单元 | 灰度构建 | 发布提交 | 容器状态 | +| --- | --- | --- | --- | +| Lastleg | baiyue-firstleg-prod-lastleg-service #11 SUCCESS | f010dcc4e09f4beb3dc40d694bf4893d139d0627 | healthy | +| Admin | admin-web-prod #22 SUCCESS | cc5ac2e68ab649a45a37397375ca1ad136fbe8cf | healthy | +| Client | client-web-prod #16 SUCCESS | 8b0decbaca99334ef02895d8ea1fb02642eb8ac7 | healthy | + +灰度数据库已执行并回查Lastleg V10/V11/V12及IAM V4:三张拼车表、预订六列、两个客户关联字段utf8mb4_unicode_ci、三列允许NULL且默认NULL、五权限及平台管理员五授权均匹配。原相关业务表在预检时为空,前后行数/标识摘要一致;未复制TEST订单或清理其他数据。IAM无需重新发布,Gateway、PDA及其他服务镜像保持原值。 + +上线验证:灰度统一API与Admin公网代理各6项登录/拼车分页/本人及全部意向/受限客户目录/退出检查通过;三容器实际镜像标签匹配合并提交且健康。公网两端首页和关键页面共9个资源SHA与新容器一致。当次发布完成时灰度拼车池为0条,需从已具备有效计划容量的车次“发布设置”发布后供销售查看;不是发布失败。入口为管理后台“车辆管理→拼车需求池”,已有会话需重新登录刷新权限。 + +本轮是灰度发布及冒烟,不宣称在灰度重跑TEST的732项完整履约或1920全部页面验收;TEST分层证据及范围见下节。原图像/代码/交互修复全部包含本次版本。 + +证据统一在后端 `reports/capacity-pool-gray-20261008/`:backend/frontend-readonly-audit.json、三个merge/release记录、schema-before.json、schema-applied.json、schema-verified.json、gray-api-smoke.json、gray-admin-proxy-smoke.json及final-runtime-assets.json。PR为后端22、Admin14、Client12,均已合并;客户端当前未提交AGENTS.md保留未动。 + +## 内部拼车需求池 TEST(2026-10-07,首版完成) + +范围按《内部拼车需求池首版开发契约》V5及五轮审核执行:首期统一我仓上车,支持客户送仓和线下提货回仓,不包含沿途提货直送。以下为当前事实,不能以历史中间版本的待办替代本节结论;本批仅发布TEST。 + +| 部署单元 | 当前已确认发布 | 提交 | +| --- | --- | --- | +| Lastleg | Jenkins224 SUCCESS | c216f393a7fb746c39f20154fc5bab3c624f6156 | +| Admin | Jenkins521 SUCCESS | 9ff27207218b0d8143a70d3c26d877688eda46ef | +| Client | Jenkins389 SUCCESS | 7759c7e9f30b4d11fb8f075938d61293741fa9b1 | + +发布证据在后端 `reports/capacity-pool-20261007/test-deploy-lastleg-r3.json`、`test-deploy-admin-r5.json`、`test-deploy-client-r4.json`。Lastleg构建使用单执行器及既有锁,未并发挤占同机业务服务。V10三张表/六个预订字段、IAM V4五项权限、V11客户字段排序规则、V12柜型/打盘未知值可空已执行并回查;未清库或回填旧业务数据,各次SQL意图、返回与前后摘要保留在本目录的write-journal证据中。 + +真实业务最新批次 `reports/fleet-cross-pool-20261007-r5/report.json`:732/732项通过、376个不同HTTP请求。独立 `r5-independent-audit.json` 核对120份原始文件,覆盖两类本土单成交至真实收货、PDA装载、整车发车、逐来源签收及商业完成;容量并发、BOUND不双扣、实收超量不改库存、安全取消/登记来货后拒绝取消、跨销售/客户隔离、幂等重放和唯一费用均有证据。新建、完成及客户读取的柜型/打盘未知事实不再被自动补成40HQ/YES。报告原有 `fullAcceptance:false` 保留,因为独立HTTP报告不涵盖全部页面验收;不能据此声称UI已完成。 + +已完成的真实页面检查(证据均在 `reports/capacity-pool-20261007/`): + +- Admin最小销售仅见授权池和本人意向;最小调度manage可读取全部24条并翻页。无指标权限首页0业务请求;未知数量保持空值;关闭发布历史可读。 +- 列表查询1次活动分页;我的意向切换1次MINE请求;详情首次20条随详情返回,第二页1次请求;只读/编辑意向打开0额外业务请求。确认与取消各1次写命令,无逐条刷新。自然401时原请求经一次refresh及权限更新后重放,认证流量单列,不伪称总HTTP始终1次。 +- Esc/X和路由离开未保存保护已按真实浏览器复验,继续填写保留原输入;干净离开正常。`manager-route-fixed-network.json` 无 `/capacity-offers/undefined` 请求。 +- UI确认新散板 `LB-ONT-20261007-309123` 与卡车 `TR-ONT-20261007-796483` 后,客户列表/详情显示待入仓、真实计划发车、未知柜型/打盘为“—”;分别展示自行送仓、线下提货至起运仓。新散板详情运输方式中文修复随Client388发布并实测。 +- 卡车详情真实1次GET/200,无逐行补查池接口,证据 `client-new-truck-detail-network.json` 无截断/剩余事件。Client389修复承运安排长标签重叠,1920×1080截图复核通过:`client-new-truck-detail-label-fixed-1920.png`。仅调整新增承运安排的标签列宽及换行,保留四列独立详情承载。 + +补充分页实测:63条全部意向从第一页翻第二页,仅一次page=2/scope=ALL请求;第二页重置仅一次page=1/scope=MINE请求,均200,回到本人空态,无残留第二页数据。证据 `manager-nonfirst-reset-network.json` 及两份对应DOM,事件无截断或剩余分页。 + +销售真实登记已补验:最小销售账号创建 `FB-2107829381293457410`,本人意向12→13条,全部未知货量仍为“—”、待报价、无商业单,余位仍10托。客户候选聚焦后仅1次GET,无报价请求;首次提交因真实截止A0409保留输入,正式API仅延长该TEST发布截止至原发车前1分钟后,原表单重新加载1次详情、再次保存1次POST成功,无自动详情刷新。首次HTTP200业务失败与第二次成功分开记账。证据 `sales-create-unknown-draft-dom.txt`、`sales-create-unknown-draft-final-dom.txt`、`sales-create-unknown-draft-network.json`、`sales-create-unknown-draft-1920.png`;截止调整意图及结果见 `ui-window-extension-r2.jsonl`。 + +Client散板补验:`client-new-loose-detail-label-fixed-1920.png` 为389最新布局,已复核无标签重叠;旧fixed截图保留为修复前证据。`client-loose-list-detail-network-r2.json` 完整无截断,页面内返回复用列表,主动查询1GET、详情1GET,均200,无池接口补查。r1整页导航网络事件被截断,不作为完整请求预算证据。 + +Client卡车列表补验:`client-truck-list-network.json` 为完整未截断记录,仅一次列表业务GET/200,另有一次按需页面JS资源GET;不逐行查询运力。补充独立审计 `supplemental-ui-audit.json` 核对26份证据,并关联既有2535项通过记录中的真实ElementPlus取消/X/Esc、未知结果原键/载荷保留和迟到响应拒绝测试;单测不冒充真实浏览器快速切页。 + +Admin承运安排已实测0额外请求,旧散板编辑深链仅承运摘要、没有编辑表单/提交按钮。初版1080弹框车次号截断已局部改为两列,521发布后1920截图 `admin-loose-arrangement-fixed-1920.png` 复核完整编号、长标签无重叠;原失败截图保留。证据 `admin-loose-arrangement-network.json`、`admin-pool-order-edit-readonly-dom.txt`。发布设置打开仅1次按tripNo查询,1080居中、实际截止过期提示正确;取消→继续填写保留输入,最终确认关闭放弃测试说明未提交,见 `admin-publish-settings-network.json`、`admin-publish-settings-1920.png`、`admin-publish-cancel-guard-dom.txt`、`admin-publish-continue-dom.txt`。 + +快速切页实测:同批触发第2/3页点击,实际合并为1次page=2/scope=ALL的GET/200,最终页码2一致,无重复请求、无截断,见 `admin-rapid-pages-network.json`、`admin-rapid-pages-dom.txt`。该证据证明本次快速操作未放大请求,不宣称产生两个重叠网络请求;迟到响应拒绝由既有延迟响应测试单独证明。 + +最终逐合同分层审计完成:`reports/capacity-pool-20261007/supplemental-ui-audit.json` 的48条合同映射全部关闭,必要未关闭项0。最后补入池报价正向组件/API测试:销售按托、调度整单,验证无预取、两页查询、准确池作用域URL、长版本保留、引用25.50报价后以21.75议价保存,3文件15项通过(`pool-quote-positive-final.log`)。该项明确为本地真实ElementPlus挂载及模拟HTTP合同测试,不称为TEST真实报价HTTP或浏览器正向报价验收。仅测试提交080042d,运行代码仍为Admin521,无须重部署。 + +本轮目标完成:文档及五轮审核、首版实现、TEST结构与服务发布、两类商业单真实履约、1920×1080页面和请求预算均已有对应层级证据。首版只在我仓上车,不包含顺路提货直送;后续灰度发布见2026-10-08节。原始HTTP报告仍保留其单报告fullAcceptance:false边界,以此最终组合审计为完整交付结论。验收自建浏览器标签已关闭,临时视口已恢复。 + +本地最近完整检查:后端1458项零失败/错误、2项原环境专项跳过;Admin最新310文件2538项通过(admin-full-test-r7.log),本次承运摘要修复类型检查和构建通过;Client520项通过。随后Client中文与布局两处小修复分别通过类型检查及构建;没有把先前全量测试说成已在新提交重跑。 + +历史失败原样保留:r1客户字段排序规则失败、r2脚本跨排车重复幂等键冲突均已修复,r3/r4为中间通过批次;最新r5包含未知字段补验。旧错误示例订单 `LB-ONT-20261007-762498` 已通过正式UI安全取消,未回填其旧40HQ/YES事实。独立UI fixture331项通过只表示页面准备成功,不代替完整业务链。合法API拒绝已占用车辆停用/缩容已有实测,后台非法改库漂移不伪称已执行。 + +## 临时灰度发布(2026-10-07,已完成) + +同日灰度退税 FBA 实际闭环追加验收:显式灰度入口执行 F40 两箱拆两柜主/余量链,最终 `1325/1325` 断言通过、755 个不同 HTTP 请求,零失败;这是全流程定向验收,不是 TEST 132 模块默认全量重跑。主单 `FL2107698725471256577`、余量单 `FL2107698725471256577-1`,入仓码分别 `EXXHK2610070006`、`EXXHK2610070006-1`,柜次 `D0007/D0008`,柜号 `TSTU4530413/TSTU8542270`。实际完成客户下单审核、测量、国内 PDA 装柜、退税原件/回执确认/发送执行/正式申报放行/完成文件、人工船节点、洛杉矶 PDA 收货、排车拣货发车和文件签收;第一片签收不提前完成主单,第二片签收后两单均 COMPLETED,来源入仓均 DELIVERED。派送单为 `DL-WH-20261007-637121`、`DL-WH-20261007-172034`,出库单为 `OB-WH-20261007-248514`、`OB-WH-20261007-977729`。两来源完成 Outbox 各唯一一条 PUBLISHED、无 pending/failed;客户报关原件/回执/完成文件下载字节和 SHA、签收重放零重复完成均通过。之后以新管理员会话独立回查两单及入仓终态、柜次身份,再退出会话,8 项 HTTP 检查通过。证据为后端 `reports/gray-release-20261007/gray-flow-tax-r3.json`、`gray-flow-tax-final-verification-r3.json`。 + +过程发现并解决两项:F40 原脚本按列表首行选纽约 PDA,而两柜实际接柜仓为洛杉矶;现按本轮客户/柜次/来源入仓 ID/入仓码精确解析唯一接柜仓,并验证 Warehouse 主档,未放宽业务权限。灰度缺少2026-10月 USD→CNY 配置,正式新增本月 ACTIVE 测试值8.0,沿用灰度2026-09既有测试值且备注验收专用,不代表市场汇率或真实财务结算;未覆盖已有月份或写业务 SQL。相关6文件69项离线合同通过。首轮877项中4失败、第二轮934项中2失败报告及各自样本原样保留,均停止在失败节点,第三轮为新隔离客户/订单,不覆盖失败证据;对应 `gray-flow-tax-r1.json`、`gray-flow-tax-r2.json`、`gray-flow-tax-r1-receiving-readonly-diagnosis.json`、`gray-flow-rate-prepared-r1.json`。当前入口只开放明确灰度 F40,独立灰度凭据和只读取证不回落 TEST,不执行 TEST 故障注入;用户已跳过的邮件、外部船司自动查询和凭证像素核验继续排除,4项外部船期/供应商异常覆盖缺口仍单列,未计为通过。本轮没有追加服务部署,也不宣称页面/Android真机或全产品默认套件通过。 + +同日Admin样式追加发布:司机管理、车次管理、出车记录按用户三张截图接入车辆列表同款连续白底列表,统一页头、查询、行操作、表格与分页;司机统计和出车图表/说明保持原口径并收紧留白。代码 `04e1d7dbfa7f542864aa89ec27df62a3380a0ce1` 合入main为 `e8e7465e4e65492d16a14dca18bd290290f51a5b`,`admin-web-prod #21` SUCCESS,当前Admin镜像更新为 `e8e7465e4e65`,其他服务未发布。相关237项及全量2509项通过,行操作公共类修正后34项定向复验和最终类型/构建通过;全量退出码0,但保留一条Windows worker退出警告,对应17项单文件复验通过。公网首页、三页JS及两份CSS与新容器SHA一致,三页均编译为integrated列表,统一Gateway代理仍正常。证据 `reports/gray-release-20261007/fleet-style-deploy-verification-r1.json`;新版1920×1080视觉仍待用户截图确认,不将构建/资源校验称作视觉验收通过。 + +用户明确要求将当前测试代码发布到既有、只保留一个月的临时 `prod` 环境。本次作为独立灰度环境使用,不将 TEST 验收结果直接计为灰度验收通过。以下灰度状态与下方 TEST 记录分开维护;不要求新建服务器或建立正式生产存量兼容机制。 + +数据库结构已按实际差异补齐并复核:全部380张当前基线表、64个业务触发器、字段/索引/FK/CHECK及权限种子一致;实际383张表包含保留的3张历史表,原业务数据未删除。新增43权限及43默认授权。证据为后端 `reports/gray-release-20261007/gray-db-execution-r1.json`、`db/verification-after.json` 及其原始快照。没有重放空库初始化。 + +统一13服务的14份Nacos配置已发布到独立灰度命名空间并逐项回读;Auth使用独立签名密钥和会话前缀,MQ使用独立 `production-` 范围。原24个旧业务/网关/事件桥及worker容器已停止,基础设施保留,原退出的RocketMQ namesrv已恢复。新环境凭据仅保存在受控环境文件和Jenkins凭据中。证据 `gray-config-prepared-r1.json`、`gray-old-backend-stopped-r1.json`、`gray-namesrv-restored-r1.json`、`gray-mq-scopes-r1.json`。 + +代码通过受保护分支的正常合并请求进入各仓 `main`。后端 `backend-java-prod #27` SUCCESS:统一测试4889通过、13条件跳过、零失败;13候选镜像全部构建成功,基础版本为 `4825f782a32f60eb76aa62cd94067777df3f3b3d`。实际发布后独立检查发现Audit原健康地址返回HTTP200/A0404,已补Actuator和真实UP/DOWN上下文测试;Audit及依赖161测试与Gateway5项通过,`baiyue-firstleg-prod-audit-service #8` SUCCESS并发布 `7151222836f330c6a41cf0eb35cb05d940a90aef`。两版本差异仅Audit依赖及其测试,其余12服务不重复构建。Admin #20 / `b4b802a5476300a04ece2c2590e2942a47bc6ee5`、Client #15 / `ffa2b82c73af95bd44968a5c0f9f1360dac51e8a` 均SUCCESS。PDA镜像分别为 `pda-domestic-h5-prod:1aae3b813583`、`pda-overseas-h5-prod:f5c2f1a00fdb`,业务H5产物与已验TEST包逐文件一致。 + +实际环境验收完成:13后端均由独立HTTP检查确认health=UP,含内部Integration配置状态只读查询;四类账号48项登录、权限、关键业务读取及Access/Refresh撤销检查全通过;再从四个各自公网入口完成16项登录、角色查询、退出和旧Access拒绝,JWT均来自本次灰度Auth。四端首页及其引用资源均200且无HTML伪装静态资源,公网首页SHA与各自运行容器完全一致。最新17个应用容器均healthy,最后90秒有界日志零ERROR,约16.6GiB可用内存;不把有界观察扩称永不报错。证据:`reports/gray-release-20261007/smoke/http-r2.json`、`smoke/runtime-r2.json`、`four-public-api-proxies-r1.json`、`four-public-entry-assets-r1.json`、`gray-final-runtime-r1.json`、`gray-final-version-verification-r1.json`。 + +切换过程中实际修复旧灰度Redis用户名错误,保留已验证正确的原密码,改用实例可用默认账户;同步Jenkins环境凭据后重建容器,真实健康检查恢复。原验收配置中的管理员密码不匹配、客户和国内PDA账号不存在;通过Auth正式内部密码接口将临时灰度管理员密码对齐到用户安全配置,保留原账号和业务数据,再经IAM正式接口新增本次客户草稿与国内PDA账号并绑定义乌仓。新客户为PROFILE_REQUIRED,未伪造资质审核或订单事实。最终验收账号保存在本机安全配置目录的 `gray-acceptance.env`,密码、Token不入库。原始错误、修复及复核分别保留在本次reports目录,不覆盖早期失败记录。 + +六份宿主Nginx入口配置已备份、语法检查并切向统一入口;四端在最终Gateway重建后已重启,实际代理验收通过。旧24后端及2网页容器全部停止并设为不自动重启,未删除容器或业务数据。见 `gray-nginx-applied-r1.json`、`four-clients-final-gateway-rebind-r1.json`、`gray-retired-runtime-final-r1.json`。以后若Gateway重建改变容器IP,需重新加载依赖该DNS的Web/PDA代理并验证各自公网API。 + +发布阶段完成的是临时灰度部署、账号配置及上线冒烟,同日追加的退税 FBA 定向闭环见本节开头;未在灰度重跑 TEST 默认全部模块或逐页视觉验收,不覆盖正式上线、Android真机或用户已跳过的邮件、外部船司自动查询、凭证图片人工核验。首轮后端#26旧合同断言失败、Admin/Client #19/#14在Gateway未就绪时启动失败、Redis错误及Audit错误健康响应均保留为已修复过程记录,以上最终版本和证据为当前结论。 + +## TEST 最新验收记录 + +2026-10-06追加复验完成:Admin默认全量19958项全通过,132个不同模块、164次模块执行、12018个不同请求,零失败/跳过模块;Client全量360项全通过,Client入库测量与计费专项使用本轮新样本34项全通过(样本准备280项全通过)。最新汇总为 `baiyue-firstleg/reports/full-acceptance-followup-summary-20261006.json`;原始报告为 `reports/admin-full-current-20261006-r6.json`、`reports/client-full-current-20261006-r2/client-test-env-20261006023723-09e68105.json`、`reports/client-phase2-current-20261006-r3/client-phase2-test-env-20261006024024-25597753.json`。根级69文件617项、Admin合同126文件1133项离线全通过,见 `reports/root-contracts-20261006-r7.log`、`reports/admin-contracts-20261006-r7.log`。 + +本次真实复跑发现并修复了新缺陷:FBA目的仓重新指定后,入仓计划的目的仓ID/编码读取新仓,fbaWarehouseCode却读取原仓,造成排车线路与派送目的仓分歧。`InboundPlanOrderMapper` 的柜级预览和锁定来源统一优先读取已验证的改派仓。修复 `6346e7bd95a5` 随Lastleg #221发布,1425项Java测试零失败/错误、2项显式开关控制的MySQL专项跳过;本地138项受影响测试通过,新增SQL反例在修复前真实失败。最新17个后端/前端容器均healthy,无Schema、Gateway或Nacos变更。证据为 `reports/dispatch-destination-deploy-20261006-r1.json`、`reports/full-deployed-inventory-20261006-r2.json`;只读实库证据 `reports/dispatch-destination-live-proof-20261006-r2.json` 确认本轮原仓ABE3、改派ABE2、计划两类目的编码均为ABE2。前一轮转运单号冲突和分组预排时间精度修复继续包含在当前部署中。 + +本次补齐FEE_CONFIRMING和WAIT_PRICING真实HTTP路径并设为状态矩阵必验:前者由新单测量提交后正式试算生成,后者另用保持APPROVED的订单,经正式渠道变更使旧费用失效;详情、客户身份、费用版本或新渠道、入仓码精确筛选均回查。移除借历史WAIT_SPLIT样本的兜底,排车到转派送前增加两种目的仓编码一致性门禁。首次追加失败原报告 `reports/admin-state-matrix-20261006-r5.json` 保留为12833项中2失败:目的仓分歧及其导致的DELIVERED样本缺失;不被后续全绿覆盖。脚本修改保留在当前工作区,后端修复已提交推送并部署。 + +脚本已同步当前契约:分组容量为正式15托;F40比较同一UTC时刻;车辆付款从独立finance-status读取;PDA账号保留完整运行标识的摘要,避免长场景名丢失日期导致跨轮重复;未知实收金额保持未知,接受当前NON_NULL序列化省略;退回4箱中的1箱保持RETURN_PENDING,实收历史与剩余候选分别核验;Client发布尺寸与冻结calculatedOuter尺寸对应,不用原始尺寸或当前配置重算旧快照。实时看板已加入默认全量,13项专项HTTP通过。Client报告原“futureModules”改为指向当前专项入口的补充验收说明。脚本改动保留在当前工作区,两个后端修复提交已推送发布。 + +2026-10-06前一轮四端页面检查为明确范围的追加证据:Admin与Client实际CSS1920×1080、两PDA390×848、DPR约1;Admin尾程筛选/详情、Client工作台/查询空态、国内PDA登录/拣货列表/刷新、海外PDA登录/转运列表/新编号开始确认及取消已检查。Admin详情1次GET;国内列表及刷新各1次GET;海外登录1次POST及1次仓资料GET、转运列表1次GET,取消无业务写请求;Client旧会话401后仅refresh一次并重放成功,权限/企业/用户资料各更新一次。证据 `reports/four-end-ui-20261006-r2/` 的DOM、网络与截图。新建Client标签首次默认尺寸截图保留但不计入1920验收,后续实际视口及正确截图单列。四端本轮页面会话均正常退出,临时标签已关闭、视口已恢复。本机H5验证不外推Android硬件或未知公网映射;下方既有页面及用户跳过范围继续按原证据保留。 + +最新Admin报告单列9项非阻断覆盖缺口,阻断缺口0:真机1项、外部供应商/船司4项、未有公开保留链路的MEASURE_REJECTED/INBOUNDING/VOIDED状态3项、当前不声明version的主档契约1项。这些缺口及2项Java条件跳过均未计为通过;未补开发新的状态业务能力。本轮只追加HTTP和只读数据库核验,页面结论沿用上方明确范围的前一轮证据,不宣称逐页全验。默认车次财务仍仅按实际响应证明只读归属,不外推完整收款生命周期。全量事件故障验收配置已恢复,最新报告directDeliveryReplayProof.restored=true。 + +## 既有验收范围与证据(2026-10-05,后续版本以上方为准) + +代码、实际部署、接口与页面分别验收;下方过程记录保留历史状态,以本节及所引最新原始证据为准。2026-10-05用户明确跳过以下三项后,F01–F40与车辆本轮约定范围已收口;“用户跳过”不计为测试通过,不按测试条数计算总完成率。 + +本轮目标按约定范围完成。用户回复“1.测试邮件跳过;2.自动查询跳过;3.跳过”,对应上一轮三项待确认内容,记录如下: + +| 验收项 | 最终处置 | 保留边界 | +|---|---|---| +| 测试邮件及告警通知发送链路 | 用户跳过 | 未发送、不宣称送达或失败重试实测通过;无需继续等待接收方和发送授权。 | +| 外部船司自动查询 | 用户跳过 | 不宣称真实船司自动查询通过;首期人工开航、人工改船的已验结论保留。 | +| V02车辆付款凭证子页图片像素核对 | 用户跳过 | 真实点击及文件GET成功证据保留;受blob安全策略限制的图片内容未核验,不再等待人工截图。 | + +本次仅调整验收范围,不关闭或删除上述产品功能。三个独立对话已交付当前阶段且空闲;本轮0A三项补证、R04恢复及Client两类退出均已关闭,临时数据库锁、触发器、会话和并发探针已清理。PDA验收覆盖用户提供的5175/5176本机H5入口,不外推未知公网映射或后置Android硬件。V03旧写入请求数、V04第一批原载荷未留存的历史证据边界保留,不虚构补证或重演已成功业务;这些边界不新增为本轮阻塞。下方历史记录中的未完成、待补验描述不覆盖本节最终处置,不再循环重跑已通过项。 + +| 范围 | 当前事实与证据 | 验证边界与保留说明 | +|---|---|---| +| 两类PDA入口与工作台、国内退出 | 本机5175国内/义乌仓、5176海外/洛杉矶仓均已正常登录,实际CSS390×848,每次登录1次POST,仓库读取走同源/gateway-api至统一TEST Gateway;reports/pda-entry-viewport-20261005-r2/final-evidence.json。国内退出修复e699e9d9bacb已推送并发布H5镜像h5-20261005-642c1e231516,176项本地测试、5项Gateway合同和HBuilderX5.26构建通过,reports/domestic-pda-logout-release-20261005-r2/root-runtime-verification.json独立核对66静态文件及HTTP字节、healthy、海外镜像未变。国内正常退出仅logout200一次、原未过期Access/Refresh拒绝;原会话自然到期14:10:30后于14:11:54确认退出,实际401→refresh200→logout200,原与替换Access/Refresh均拒绝且替换Access被拒时未自然过期。reports/domestic-pda-logout-ui-20261005-r1/normal-final-evidence.json、expiry-final-evidence.json、root-normal-independent-verification.json及root-expiry-independent-verification.json记录真实网络、私有身份/时间核对与截图。root按用户授权查看390×848页面;JPEG导出390×847单列,原tab14已关闭、视口恢复。 | 关闭本机两端登录工作台及国内两个退出分支,不外推所有PDA作业、Android硬件或公网入口。两个部署容器无宿主机发布端口,Nginx站点目录读取受权限限制,公网映射仍未知,见reports/pda-public-routing-20261005-r2/routing-review.json。首次国内发布r1将镜像ID误作为FROM引用而构建失败、原容器未变;r2核对缓存标签ID后成功,失败证据保留。 | +| 实际运行版本 | Finance #125 / adaac7aca429、Lastleg #220 / bc8c1467ee3d、Admin #516 / cb5f0d1becae 已匹配发布;reports/fleet-operation-finance-20261005-r1/matched-runtime-r4.json独立核对三个运行容器镜像标签及healthy。Finance完整254项零失败/错误(1跳过)、Lastleg完整1423项零失败/错误(2跳过);Admin完整306文件2504项、类型/build通过。首次Admin全量有1项TripBookingPanel旧测试5秒超时,原日志保留,未改断言,改2个worker后完整复验通过。Firstleg #485 / 4bde1a8352bb已发布healthy,1618项零失败/错误、9项跳过;实际首次四并发平台读取及原柜四并发客户读取均通过,修复范围及原#484死锁失败见下方最新记录。 | 本次无需Schema、权限或Gateway配置变更;健康发布不代替新增财务实际业务与页面验收。旧转运详情NOT_REQUIRED显示“—”的页面证据仍见reports/transfer-detail-label-ui-20261005-r1/root-independent-verification.json。 | +| F27原命令恢复 | 原B柜TSTU6184325在一次真实confirm故障后,用原幂等键/版本/hash从页面关闭重开并恢复。原命令COMPLETED、原batch/item CONFIRMED、attempt1;计划IP-ABE4-20261005-008897、托盘D1441-126-001、物理托盘和ACTIVE锁均为原对象,库存/流水/报关不变。reports/f27-resource-live-20261005-r1/root-recovery-verification.json及../f27-resource-reopen-ui-20261005-r1/root-ui-and-data-closure.json。 | 实际按钮、网络结果、1920×1080完成截图和退出已收口;人工视觉签字单列。退出401后200没有保留原凭据,不借此认定自然过期撤销全通过。 | +| F33新页面与入仓身份 | 新一箱来源WT-WH-20261005-735681,经正常PDA实收建立入仓ID2106877650065735681;后续转运WT-WH-20261005-344961的页面出库和纽约实收均200/200,转运RECEIVED,本票及原来源主状态仍INBOUND_COMPLETED。源仓归零、目标1箱保留真实源入仓ID/码,唯一命令/正式receipt/ACTIVE锁,仅新增ALLOCATE、PICK、SHIP、STOCK_IN四条流水,其他原余额/流水不变。reports/f33-ui-movement-20261005-r1/root-ui-business-verification.json、root-resource-first.json及live-ui-final-evidence.json。 | 已捕获各一个POST,但原网络读取完整性元数据未保留,不扩称完整全局请求计数。人工视觉签字单列。跨流程预留竞争保护见下一行。 | +| F33预留所有者保护 | #215原失败保留,根因是InventoryHoldConcurrencyPersistenceTest漏建既有预留表;只补测试夹具,9项原测试通过,5864经#216完整1396项通过并部署。新正式转运WT-WH-20261005-169665分配原合法NY1箱,普通及伪造前缀HOLD均HTTP200/A0409且明确预留拒绝;完整客户库存/流水与真实SQL预留行不变。本票正式出库成功、原键重放一次无漂移,仅新增ALLOCATE/PICK/SHIP三流水,1箱只扣一次,真实原入仓身份及INBOUND_COMPLETED保留。reports/f33-reservation-20261005-r1/root-final-verification.json固定24份原证据,独立会话均退出、执行门禁关闭。 | 关闭本次顺序执行的外部普通/伪造消费拒绝与合法所有者出库。没有公开普通allocate接口,不以虚构路径补证;未做双线程争抢压力演练,不声称锁顺序无死锁。本票停OUTBOUNDED,目标收货由原独立页面样本证明,不据此称本票已收货。 | +| F33原两来源样本 | 原WT-WH-20261005-968770的数量、资源和Finance证据保留:两箱、共享唯一ACTIVE锁、两次原收货请求各重放一次无漂移、新费用CNY0.02一次消费且SETTLED,旧CNY0.01仍FROZEN;reports/f33-resource-live-20261005-r2/root-backend-data-finance-closure.json。新版真实详情的两条COMPLETED命令原request/hash/target与原SQL逐项一致;reports/f33-receipt-commands-live-readonly-20261005-r1.json。 | 原NY位置2106857662265212930此前错误使用转运尾程身份,旧记录不回填且不能称可合法再转运。该写入缺陷已在548a修复,并由上一行新一箱实收证明;原数量/费用绿灯不覆盖旧身份正确性。 | +| F34两组两车 | 两组各两托,分别关联不同车和司机;页面、原请求重放、列表投影和库存核对通过。reports/f34-multi-vehicle-ui-20261005-r2/final-evidence.json、root-independent-stage-audit.json、root-after-projection-deploy.json。 | 本批停在待发车;其他F35–F40已有独立适用证据,不把本样本说成已签收,也不要求所有样本重跑整链。 | +| F25既有DO | 原适用柜DO上传归属/版本/幂等与异文件拒绝、清关锁定、预约及还柜的成功步骤已定向核对;reports/f25-existing-do-evidence-audit-20261005-r1.json。原DO实际下载200、42字节text/plain、SHA与服务端一致、资料前后不变,reports/f25-existing-do-download-20261005-r1.json。 | 是合成TEST文件的真实传输,非真实DO内容或PDF阅读;实际授权邮件发送/失败重试、外部船司输入另列。 | +| 自然过期退出 | 海外PDA r2原Access07:30:33到期、07:30:58点击退出;Admin原Access07:36:13到期、07:37:07点击退出。两端各一次真实退出确认,完整网络均logout401→refresh200→logout200;原及替换两组Access/Refresh均A0401且不签新凭据,总控私有核对替换Access被拒时尚未自然到期。两目录reports/pda-expired-logout-ui-20261005-r1/和admin-expired-logout-ui-20261005-r1/的final-evidence.json、root-independent-verification.json均通过,登录页截图核对、tab6/tab8已释放。 | 关闭R07两个指定自然过期退出分支,不扩大为其他认证故障或人工视觉签字。PDA r1导航刷新及r2预检截断记录保留;最终完整网络与原凭据同一性分别证明,不修改时钟/TTL或注入过期Token。 | +| 废弃正向与恢复 | 旧驳回/释放证据保留,reports/discard-positive-preflight-plan-20261005-r1.md已定位最后已知4箱DROPSHIP来源及API/逐箱核对办法。113d2b1fec3c修复最后一托终态重放拒绝、已完成托重复历史、首次成功响应仍PENDING三个相关问题;先有对应红灯,最终26项直接测试通过,完整1414项通过并由#217发布。reports/discard-pda-terminal-replay-20261005-r1/handoff-r2.json、discard-pda-terminal-replay-lastleg-deploy-20261005-r1.json。相同完整载荷只读返回,异数量/缺行/越权及取消、驳回仍拒绝。 | 用户已确认实际废弃确认时扣库存,审批只授权。新CD-WH-20261005-890818真实执行申请、审批、PDA确认、结案:申请只锁定NYEXX2610020168#4-1;审批库存不变;PDA确认时SKU1箱/10件→0、余额4→3、选中位置1→0,新增唯一DISCARD逐箱流水;结案不再扣减。原完整confirm及无body complete各重放一次成功,改actual为0返回A0409;终态检查前后362条本客户SQL记录完全一致。reports/discard-positive-20261005-r1/root-final-verification.json固定各阶段证据,业务执行会话均退出。首次申请助手误断言PENDING的失败保留,实际返回PENDING_REVIEW后只读核对,未重发申请。本次关闭单SKU一箱的正向扣减及终态重放,不外推多SKU/跨客户全局或页面完整验收。Admin实际库存页已读取该SKU剩3箱;本次浏览器网络观察/截图工具超时,未据此认定请求量或指定尺寸视觉通过。 | +| R08钱包中途故障 | Finance#122/4ff55ba3实际源码匹配、MySQL8.0.45真实执行:新合成客户2106905338175393794、合法RL-WH-20261005-560514的0.01CNY冻结指令200ebc4a-f078-4fc8-af7d-2e334c123b8c,在账户更新与hold插入后、流水插入前命中专属SQLSTATE45000/1644。故障快照账户仍actual1.00/frozen0/available1.00/version1,业务hold/ledger/idempotency均0,新Inbox仅PROCESSING、无最终结果,原Outbox记RETRY。移除触发器后同eventId/hash自然恢复:唯一hold240/ledger583冻结0.01、账户version2/available0.99,唯一成功结果回传且PUBLISHED,库存/流水与故障时一致。reports/wallet-mid-transaction-20261005-r1/root-fault-run.json及independent-final-review.json(19项原始证据核对),触发器已DROP并回查0,独立会话退出。 | 只关闭这一次真实资金执行中途回滚与原事件恢复,不扩大为全部可靠性矩阵。初次余额不足FAILED事件093883ee-f0ad-4a21-b106-5cecc3fc1526单独保留;初次审计误要求持久零余额账户行,已按真实懒创建/回滚语义只读reconcile,未改数据或重复业务。测试账户保留1元实际余额、0.01冻结供后续样本,不冒充真实付款。 | +| R08权威会话校验超时 | 已在真实Gateway执行:精确PDA账号+jti的单次Auth校验延迟6秒,受保护请求4142ms后401/A0401;不同平台账号的受保护用户列表请求168ms返回200。5条完整代理记录证明仅一次指定延迟、对照未延迟、Auth稍后正常返回200。恢复原网关后两组未过期原凭据均200且代理记录不再增长。Gateway原镜像/完整配置指纹、Auth原容器/配置、Nacos摘要一致且健康;代理PID374353退出、19281/19282均无监听、锁清除、会话logout均200。reports/auth-validate-timeout-20261005-r1/root-final-verification.json固定原证据SHA,23项核对通过;root-final-runtime-proof.json为独立只读取证。 | 只关闭Gateway→Auth validate超时失败关闭及原凭据恢复。首次旧PDA对照登录200/A0403,目标会话已退出,未改环境;保留原失败记录后改用有效平台账号,不恢复旧账号或创建替代账号。未覆盖Auth撤销调用超时、Redis故障或其他业务服务内部校验。 | +| R08撤销调用超时 | 新合成账号auth2106926470848942081/member2106926470848942083的唯一正式仓绑定PUT(洛杉矶→纽约),精确IAM→Auth revoke已返回200后代理才延迟响应6秒;IAM在5277ms返回HTTP200/S0503且早于响应释放。真实SQL证明完整IAM成员/用户/角色/权限版本快照回滚(仍原仓、权限版本1),Auth令牌版本1→2且仅一次撤销。旧Access401/A0401、旧Refresh200/A0401且不签新凭据,对照200;旧Access拒绝时尚未自然到期。恢复原IAM后重新登录/profile200仍为原洛杉矶仓。reports/auth-revocation-timeout-20261005-r1/root-final-verification.json固定原证据SHA,26项核对通过;root-sql-before/after-fault/after-cleanup.json为真实只读SQL。 | 原IAM镜像/完整配置与Nacos摘要恢复,Auth/Gateway原容器及配置未变且三者健康;代理PID462650退出、19381/19382无监听、锁清除、有效新会话退出。仅本新账号按正式状态接口停用,SQL确认IAM/Auth均DISABLED,原仓/角色保留。首次准备误用不存在的用户详情GET的S0500及logout证据保留,未重复造号。只关闭这个撤销已成功但调用方超时回滚的场景;未保存原IAM容器异常栈,不声称具体异常类,超时由关联HTTP耗时、上游成功及延迟时间证据证明。 | +| R08 Gateway Redis不可达 | 已真实执行同镜像Gateway仅追加两条Redis连接CLI指向其自身127.0.0.1:19391;实际命名空间端口无监听,日志保存真实Redis连接拒绝。Admin/PDA两组原有效Access在直达及公网入口均401/A0401,Auth同期对同jti/user仍200/true,证明共享Redis和原会话未停用;汇总health503/DOWN单列。恢复原配置后,同Access摘要的四个GET均200、health200/UP,两会话logout200。reports/redis-gateway-failclosed-20261005-r1/root-final-verification.json固定原证据SHA,26项核对通过。 | Gateway原镜像/完整配置/Nacos恢复且健康,Auth/IAM原容器和指纹未变,运行阶段FINISHED。无代理/新监听/共享Redis写入。首次prepare因无权readlink内核namespace而失败,原容器保持健康;只归档本次无state初始化及释放自有锁,改用Docker SandboxID+PID/starttime/前后inspect检查,保留原失败。仅关闭Gateway自身Redis连接不可用的失败关闭,不外推全部Redis消费者。 | +| R08船节点异摘要与乱序 | 独立新柜D1442/TSTU1527735由正常API完成两票4+8共12箱实装,原装柜事件Firstleg PUBLISHED/APPLIED、Lastleg PROCESSED及初始gate由独立SQL核对。对当前Lastleg218仅发3条限定内部请求:合法新节点70/version5返回APPLIED;新eventId的旧节点60/version4即使实际时间更晚仍STALE;原新eventId的不同合法payload/hash返回HTTP200/EVT_PROTOCOL摘要冲突。root四阶段SQL证明STALE只新增自身Inbox审计、保留有效节点,冲突后完整12条捕获记录不变;两原订单、该客户库存/流水及正常装柜Outbox/Inbox/投递审计均不变,收货门禁仍AWAITING_PICKUP_READY。reports/shipping-event-canonical-20261005-r1/root-final-verification.json、root-original-source-unchanged.json固定原始HTTP/SQL及当前生产canonical字节摘要,未改旧Outbox或部署服务。 | 只关闭ContainerShippingNodeConsumer的该组真实异摘要/乱序,不代表外部船司事实、其他消费者或自然租约。样本准备首次上传因工具expectedVersion=undefined被明确A0400拒绝,原失败保留;按实际逐证据版本从原柜恢复,5类证据各一次、complete一次,不重造/重拣。前置348次HTTP及恢复25次有记录,会话退出,共享承运主档未改;reports/shipping-event-ordering-live-20261005-r1/handoff.json及原journal。 | +| R08自然租约与旧持有者晚到CAS | 新客户2106995404348428289的合成换标RL-WH-20261005-915970经正式API仅创建一次、正常触发0.01CNY FREEZE及结果a109b5d8-2ff6-4d00-bfba-bf17594b6012。一次性非Spring JVM复用当前Finance125真实Relay/Journal/类库,只领取该新结果,收到真实内部HTTP ACK后在本进程有限屏障等待;共享Finance保持运行,原60秒租约实际62020ms后LEASE_EXPIRED、真实退避后新owner消费DUPLICATE/PUBLISHED。独立快照取得后才放行原ACK,原deliver返回前后Finance及Lastleg全部本包捕获行一致,原审计仍LEASE_EXPIRED,两个owner不同;唯一冻结hold/流水585,账户实际1.00/冻结0.01/可用0.99,无重复副作用。reports/outbox-lease-live-20261005-r1/root-business-verification.json、root-ledger-verification.json及root-final-verification.json固定真实MySQL、四阶段快照与进程事实。 | 本次关闭这一个生产Relay/Journal的自然租约/旧成功ACK晚到CAS,不外推全部消费者、Feign传输栈或并发压力。未修改租约/时间/业务数据库字段、未停共享服务;原Finance/Lastleg容器、配置、Nacos和真实类库SHA前后相同且健康,driver与watcher退出、5个自有临时文件及目录清除,HTTP会话退出。前置脚本错误表名在只读元数据阶段失败、未启动driver;首次清理脚本语法错误在执行前发生,核对5文件仍在后精确清理,原失败均保留。1元是明确TEST手工调整余额,非银行充值。 | +| R08其他运行边界 | 其余证据入口见reports/r08-evidence-gap-audit-20261005-r1.md;钱包中途、Gateway权威校验超时、撤销超时与Gateway Redis不可达以较新真实证据为准,不重复演练。撤销超时另由independent-final-review.json完成24项独立原证据核对。 | 指定船节点消费者异摘要/乱序已由上一行关闭。指定钱包结果自然租约和旧持有者晚到CAS已由上一行关闭;告警通知链路按2026-10-05用户决定跳过验收,不发送通知、不计为通过。客户端报关资料201条第二后台批次失败及恢复已由root-r4实际页面和完整网络复核关闭;以下保留早期准备过程,当前结论以下方最新收口记录为准。新客户2107003446494334978的201票各1SKU1箱已全部通过正式审核/测量进入WAIT_SPLIT,独立清单核对见reports/f22-201-orders-20261005-r1/root-201-wait-split-check.json、201-orders-manifest.json及c-027-201-final-handoff.json。第一柜D1443/TSTU5523023的100箱完成请求因目的FBA仓ABE3缺内部编号,在COMPLETED_EVENT_READY阶段A0409、5次后FAILED;原日志与失败证据保留。总控按TEST授权通过平台仓库API补合成内部编号TESTABE3,保留其他业务字段,随后按原FAILED恢复协议使用同actor/operationId/expectedVersion/body恢复同一command2107014006425260033一次;15:59:21.939实际GET确认COMPLETED、attempt6。证据root-completion-diagnostic-*.json及root-recovery/下configure/resume/status记录;该编号仅为TEST样本配置,非生产映射。第二柜D1444/TSTU4127199的101箱于16:05:40完成、原command2107019329705873410首次尝试成功。总控独立SQL与正式客户API均证明同客户精确201票LOADED/TAX_REFUND,后台200+1与原201清单集合相等,root-browser-ready.json及root-loaded-audit-1791187582973809300.json保存证据;实际Client第二批故障/恢复页面已由root-r4关闭,早期准备与原失败证据仍保留。worker分类修复090f57bfb1dd仅把COMPLETED_EVENT_READY阶段A0409判为确定性终态,S0503和非业务异常保留重试;6项定向红绿回归、Gateway5项通过,Firstleg#483仅构建的1612项结果保留(firstleg-build.json);该修复已随较新的#485/4bde1a8352bb部署,当前批量读取及Client退出状态见下方收口记录。最新定位见reports/f22-second-batch-failure-preflight-20261005-r1.md,它属于Client读取器,不能误记为Admin分页问题,也不能拿200条未装柜草稿补证。 | + +本轮报关批量读取与退出收口(2026-10-05 17:17):Firstleg#485/4bde1a8352bb已发布healthy,包含装柜确定性A0409及时终态(S0503仍重试)及报关初始化当前读、无字段变更的排他锁upsert;完整1618项0失败/错误9跳过。真实MySQL新锁策略4事务全成功/rollback、完整行摘要不变,5个自有临时文件/凭据清理且进程退出;旧warm探针未复现1213,不算修复前红灯。首次原201读取5个NPE、#484冷首次4HTTP中2个死锁的原始失败均保留。#485部署后,原本无报关行的D1161首次4平台GET全200/200,只生成一个aggregate2107034967321088002;D1442原客户4并发GET全200/200、客户范围正确、原aggregate不变。其他3柜核对列及Order/Lastleg/Gateway/Client当时容器配置均不变;各会话退出。精确证据为reports/f22-201-orders-20261005-r1/root-customs-lock-final-verification.json及所引SQL/HTTP/部署记录。之前探针准备的Python语法和自有私有文件属主错误不计业务失败,修正记录保留。 + +Client#384/3703d0a6778f已发布:捕获原Access/Refresh后立即清本地状态,带Bearer注销;仅明确401刷新一次、校验精确同身份再撤销替换pair。在途刷新不能恢复会话,退出去重绑定原pair、旧finally不能清新退出句柄,19位身份数字保留精度。54项定向、517项全量、类型/build通过;root-client-firstleg-ready.json核对公网HTML/入口JS字节与Client镜像260821fa...一致、Firstleg485仍健康。旧Client退出401的原会话已使用其原Refresh核对身份并正式撤销,证据f22-201-browser-20261005-r1/own-session-cleanup.json;原网络延迟/规则/自有标签/视口已恢复。后续Client385正常及自然过期UI退出均已验证;证据见下方最新记录,不能用其他三端证明代替。 + +Client当前为#385/b3f78207b8ee:仅将报关列表文案明确为“柜内退税箱数”“柜内资料覆盖”,并说明本客户同柜退税货物汇总、按入仓码计资料覆盖;数字、读取器、认证、分页与110px列宽未变。15项页面测试、typecheck/build通过;Jenkins精确checkout和healthy通过,耗时25.588秒;root-client-labels-public-check.json以真实公网HTML、入口JS及实际引用页面chunk核对三处新文案,记录SHA。静态字节核对不作为布局证明;后续真实页面截图已由总控在root-r4查看,见下方R04记录。 + +R04分页失败恢复已于总控root-r4关闭:Client385下同页限定第二批请求失败,再点击“重新加载”恢复201条;201个唯一详情请求全部HTTP200、源集合等于原201票清单、最大并发4、完整网络无截断,最后一票FL2107004003536142337在第11页可见。reports/f22-201-browser-20261005-root-r4/recovery-final.json记录DOM、网络与截图SHA;实测CSS1920×1080、缩放1,截图导出1905×1072单列,已查看新说明与列头无折行/重叠。未人为加网络延迟,原r2丢失的恢复结果仍未知,不覆写为成功。旧r2正常轮200+1及失败时清空旧列表证据继续保留。 + +Client385正常UI退出已关闭:真实按钮及确认后恰好一次带Authorization的POST logout,HTTP200/业务200;返回登录页,原Access尚未自然过期时GET订单401/A0401、原Refresh返回HTTP200/A0401,证据root-r4/logout-network.json、logout-response.json、logout-complete-dom.txt、normal-logout-independent.json。自然过期分支已关闭:原Access自然到期后在原页面确认退出,实际logout401/A0401→refresh200/200→logout200/200,恰好一次刷新、精确同主体;原与替换Access/Refresh全部拒绝,替换Access在验证时未自然过期。expiry-independent.json及expiry-logout-network.json、expiry-response-proof.json、expiry-logout-complete-dom.txt/png留证;已查看退出后的登录页截图,自建tab7关闭、临时视口恢复。该批最终汇总为root-r4/final-result.json。 + +V02凭证子页像素核对已由用户明确跳过,无需继续等待人工协助。V01所要求的司机响应隔离按“真实普通A→B→A完整8GET/DOM + 实际生产Vue/KeepAlive迟到成功/失败测试”组合证据验收;故意暂停真实浏览器网络没有执行,保留为验证方法边界,不再单独列为软件交付阻塞。此决定依据现行模块行为规则及独立复核fleet-driver-late-response-scope-review-20261005-r1.json;该报告的current task instruction来自总控派工,不冒充独立人类要求,也不据此宣称全部车辆功能或所有现场故障通过。V01新增4项真实Vue/KeepAlive组件行为测试,详情与历史的迟到成功/失败均覆盖A→B→A,总计23项通过;测试提交899978e,生产组件与已部署Admin516未变,不为纯测试重新部署;见fleet-driver-late-response-automation-20261005-r1.json。V02总控通过原维修记录/付款流水点击VP-261003-0002,精确凭证GET一次HTTP200 image/png,新tab9标题1×1;浏览器安全策略明确拒绝读取blob页且禁止绕过,已停止;用户随后明确跳过人工确认,原证据见fleet-payment-preview-root-20261005-r1/result.json。后台独立会话已正式撤销、刷新被拒;父tab8已关闭,子tab9连关闭也受同一URL策略拒绝,未尝试其他控制方式绕过;不把父页或HTTP当像素证明。原合成图片不是真实银行凭证。 + +0A结果提交原子性已补证关闭:独立客户2107071485889843201、合法RL-WH-20261005-264066的原事件00c6799d-743c-4137-a499-c1a3a852e835,在资金account/hold/ledger/idempotency及成功结果Outbox均已写入同一事务后,于最后UPDATE Inbox命中真实SQLSTATE45000/1644(WRC_AFTER_MONEY_AND_RESULT_OUTBOX)。持久故障快照账户actual/available1.00、frozen0、version1,本命令资金写入与结果Outbox均回滚,只保留PROCESSING身份;历史余额不足FAILED结果单列保留。立即移除唯一触发器后同原event/hash/envelope自然恢复,唯一0.01冻结、available0.99/version2,唯一成功结果2e63d316-fbf3-4a5b-a74d-0e008c6d07bb已PUBLISHED、Lastleg原回调PROCESSED/业务FROZEN。原合法retry重新预留与“故障后→恢复后库存不变”分阶段核对,其他账户摘要未变;触发器回查0、会话关闭、Finance125/Lastleg218容器/配置/网络指纹及健康未变。reports/wallet-result-commit-20261005-r1/root-independent-review.json独立复核18项及11份原证据SHA;这不等于另做了Nacos内容对照;首次同/异hash并发另有下段独立真实证据。旧0A原始报告仍未定位,不把本轮新补证冒充历史原记录。 + +0A首次执行并发两项已补证关闭:same客户2107078532446392322/合法RL-WH-20261005-624258/事件a92f9c14-548b-4119-b94e-7fc6c4e8d30c;different客户2107078664621494274/合法RL-WH-20261005-223297/事件8baa9074-d60a-4c33-90a9-aaab356a9697。仅持有各自账户行锁1.046秒/3.868秒,真实data_lock_waits证明原自动消费者持Inbox等待账户锁,两个手工请求同时等待原Inbox,采样时PROCESSING且hold/ledger/result均0;不是终态重放。same两手工请求DUPLICATE;different只改remark并用实际Finance125运行库Java重新生成合法摘要,冲突明确FIN-EVT-002“同一事件ID对应不同资金指令”,原请求DUPLICATE。每场景参与者为原自动消费者+两个手工请求,实际自动投递各一次;最后各唯一0.01冻结、余额可用0.99/version2、唯一结果PUBLISHED及Lastleg回调PROCESSED/业务FROZEN。reports/wallet-first-execution-concurrency-root-20261005-r1/root-independent-review.json各15项独立核对,root-final-runtime-cleanup.json另以新只读SQL核对hold/ledger链接及源/结果/回调;账户锁连接/锁均0、客户会话已退出、容器/配置/网络指纹和健康未变。11份远端原始文件归档为remote-original-evidence.zip并保存SHA,自有远端证据目录及5个临时库均已清理。本轮未改生产源码、服务配置或隔离级别,不扩展为所有消费者压力测试。 + +剩余有界审计fba-remaining-audit-20261005-r2.json及root-hashes独立核对38份原证据;V04第一批原完整body/key/actor未留存且持久记录仅有hash,追溯已停止,不重构载荷或重演业务,精确边界见fleet-partial-return-first-replay-preflight-20261005-r1.json。外部通知与船司自动查询已按用户决定跳过验收;两个PDA公网入口未知,当前验收限用户提供的本机H5范围。后置Android设备、多卸站分摊与未开放撤拣/余货拆多车不新增为本轮必修。 + +本批代码证据:后端10文件冻结清单reports/f33-receipt-commands-main-state-handoff-20261005-r2.json;首轮94项及最终受影响59项均通过,含重复覆盖,不相加为独立测试数。Admin7文件冻结清单reports/f33-resource-live-20261005-r2/ui-implementation-manifest.json。预留保护5b4与fixture补齐5864的发布及验证见上表,原#215失败未覆盖。根另以110c2e0be2e2修正详情中NOT_REQUIRED原码展示,复用现有换标汇总格式器;6项定向、304文件2498项全量及类型/build通过,见reports/transfer-detail-label-admin-full-root-20261005-r1.log和transfer-detail-label-admin-build-root-20261005-r1.log。该提交已由Admin#515精确checkout发布并核对运行健康,页面只读功能复核及其视觉边界见上表。 + +用户已确认实际废弃确认时扣库存,并采用车辆运营页展示Finance明确归属的应收/实收、无法分配的部分显示待分配的方案;两项均不再等待用户选择。车辆财务已完成匹配发布,版本及完整验证见本节首行;reports/fleet-operation-finance-20261005-r1/implementation-handoff.json记录批量修复后的Java23项及前端定向/类型/Gateway验证。单车Lastleg读取固定3次数据库查询,1/2/200来源均有测试,保留准确客户/排车配对。真实数据前置已读18条运营记录并定向核对6客户:候选车次两笔CNY30应收已有来源,但没有现成账单和确认收款,不能以费用金额声称实收通过。新接口真实待分配已通过:TR-8CFD83527D254FE1两个客户各CNY30、合计应收60,与正式派送及Finance费用版本/币种/来源逐项相符;实收字段未知(未返回数值)、documents为空,不当零。正常平台查询705.44ms;未登录401/A0401,会话已退出,证据preflight/live-pending-r1/result.json及crosscheck.json。单车实际收款闭环已完成:原TR-4BE541353FAA4EB0、费用来源3868经正式出账REC-261005-0001,唯一TEST收款RCPT-00000000000000000128分配CNY1,账单PAID/已收1/未收0,车次应收1/实收1且账单来源可追溯。出账时真实发现来源BILLED被漏读,收款状态PARTIALLY_PAID/PAID也曾被旧查询排除;两处均修复并由Finance125发布,原页面失败及修复后原单恢复证据保留,没有修改数据状态绕过。root-single-receipt-final.json核对唯一收款/分配及原请求重放后41条本客户财务记录完全一致;凭证明确TEST合成,不是真实银行到账。Admin516实际1920×1080视口、devicePixelRatio约1的金额/来源弹层已核对:列表18趟财务请求0次、单次查看1次、展开来源0次,完整网络无截断;admin-ui-pending-proof.json及admin-ui-paid-proof.json含截图和DOM证据,独立会话退出、标签关闭、视口恢复。截图导出尺寸与CSS视口不同,原小视口截图保留且不计通过。混合账单与部分收款真实HTTP/SQL现已通过:混合REC-261005-0002的CNY15已付清(合法派送10+拆柜5),TR-C8F有效应收40、实收null,账单明确PENDING_ALLOCATION且未猜分摊;独立客户REC-261005-0003应收80、实收5、未收75,TR-29225实收5且账单ATTRIBUTED。每case只新增一收款/一分配,root-partial-mixed-received-verification.json核对原1元正例及其他捕获客户记录未变;root-partial-mixed-http-crosscheck.json独立核对原HTTP返回,root-partial-mixed-business-final.json冻结证据。均为明确合成TEST凭证,无真实银行交易;这两个新增分支的实际页面核验已完成:preflight/partial-mixed-r2/ui/r2/ui-result.json记录实际CSS视口1920×1080,混合车次应收40/实收待分配及来源理由、部分车次应收80/实收5;各查询区间恰好一次请求、展开来源无额外请求,截图与DOM留证,自有会话、视口和标签已清理。仅证明指定两例金额/来源展示,不外推全页面布局。用户已授权AI内置浏览器按Admin/Client 1920×1080、国内/海外PDA 390×848验收,当前不以缺少人工视觉签字阻断该轮执行;未查看的页面与未完整捕获的请求数量仍不能视为通过。仍保留的外部边界为真实授权收件人与船司测试输入、PDA公网入口、已后置的Android设备/现场证据及剩余明确故障分支。reports/fba-four-open-items-decision-audit-20261005-r1.md保留原文位置:同路线托位分摊已有证明,多卸站差异算法、已拣撤回和余货拆多车尚未明确开放首版,不冒充已有功能或自动扩建。局部剩余清单见reports/fba-final-open-items-20261005-r1.md,部署与验收状态仍只以本契约和统一认证契约为准。源失败报告、未知结果及历史证据均保留,不据后续成功改写原报告。 + +## 本轮过程记录(历史,以以上最新状态为准) + +2026-10-05 05:06 F27真实一次资源确认故障及运行恢复已经验证,但业务恢复未通过:精确原柜confirm请求命中一次503且未转发,原转换返回S0503;Lastleg唯一命令LOCAL_COMMITTED、唯一计划 `IP-ABE4-20261005-008897`/一托,海外仓唯一批次RESERVED、一次预留、一个ACTIVE锁,原幂等键/版本/hash保留。原报关与完整库存流水不变,库存数量和其余余额字段不变;计划事务正常绑定了入库单展示号及updatedAt,原助手全对象比较因此红灯,失败报告未覆盖。总控按实际bindInboundPlan写入语义独立复核,见 `reports/f27-resource-live-20261005-r1/fault-independent-reconciliation.json`、`resource-db-after-failure.json`。 + +该真实样本暴露新的恢复缺陷:预览返回正确resourceRetry,却因本地计划/托盘行已经存在而显示PLANNED、pendingOrderCount=0;当前页面据此禁止确认,柜候选也须核对。后端待资源投影与前端恢复门禁已分工修复,不重造样本、不再次注入、不换原键。运行层已restore/verify-restored/finish全部成功,原Lastleg211镜像及完整配置指纹一致、Nacos源未变、上游读取健康、自有代理已停止,证据 `runtime-original-verified.json`、`runtime-stopped.json`。F33获准在独立客户继续至原主转运出库检查点;该阶段结束前不再部署/重启Lastleg。F27原待确认资源保留供匹配修复后实际页面恢复。 + +2026-10-05 04:52 F27工具stdin修复 `3afb3bcf` 已本地提交,冻结4源码及文档经16项检查通过;新协议在服务器只读preflight通过,原镜像/完整配置指纹和Nacos摘要保持一致。沿原marker的prepare现已成功至PROXY_STARTED、uncertain=false,原Lastleg镜像仍为211,本次只启动专属默认直通代理,未activate切换路由、未发送业务转换或注入confirm失败。证据 `reports/f27-resource-live-20261005-r1/runtime-stdin-before-prepare.json`、`runtime-stdin-recovery.json`。总控持有此运行窗口;结束必须核对并停止自有代理,不能据离线和prepare成功认定业务恢复通过。 + +2026-10-05 04:41 取消投影修复已由 Lastleg #211 精确发布:源码 `6fc32574c7ab8701ab58c7475c10a8b574b0ec56`,复用同源码#210的1377项完整测试,#211保留编译打包并跳过重复测试。实际镜像 `sha256:220c7a44f47b201b6463d8c63ef6076e3f9385ef2f6b6e7f076be503bcec2a6c`、标签 `6fc32574c7ab` 和healthy已独立核对,Admin512/Firstleg482保持匹配健康。发布后正式HTTP读取证明两排车明细、两车两司机绑定、四票已排车及筛选/总数一致,客户完整余额/流水不变,独立会话退出。证据 `reports/f34-cancelled-dispatch-lastleg-deploy-20261005-r1.json`、`f34-cancelled-dispatch-runtime-20261005-r1.json`、`f34-multi-vehicle-ui-20261005-r2/root-after-projection-deploy.json`。 + +F34两组多目的仓、两车两司机的本阶段真实验收已关闭,10项通过:`reports/f34-multi-vehicle-ui-20261005-r2/final-evidence.json`、`browser-released.json`确认最终页面、正常logout200、标签关闭和视口恢复;停在待发车,没有将此样本推进到出库或签收,也不代表全FBA目标完成。 + +F27工具prepare未成功,实际业务转换仍未发送。初次本地调用遗漏冻结镜像参数,在发HTTP前被拒绝;补入原预检镜像后,远端启动配置参数154876字节超过Linux单参数限制,宿主等长纯X参数实测OSError errno7。只读证据 `reports/f27-resource-live-20261005-r1/prepare-unknown-readonly-inspection.json`确认marker目录、state和全局锁均不存在、无代理PID,Lastleg211仍healthy且启动时间早于该prepare;不重跑未知操作或清理不存在的状态。正在将工具配置改经stdin传输,保留原两次失败及只读status证据;修复后再执行真实故障。 + +F34两车关联的总控独立阶段复核已通过:`TR-2974B4EB11064C4D` 与 `TR-F17C4FCE78F248BE` 各关联原一张排车单、不同且符合资格的原车辆/司机,每单ABE4/ABE8各一托,共4托4箱。两车次PLANNED,调度审核已通过、理货待审;排车未拣未发,原取消单保留4条明细,完整客户余额/流水与批次前一致、出库0条。证据 `reports/f34-multi-vehicle-ui-20261005-r2/root-independent-stage-audit.json` 固定7份源报告SHA;最后页面取证/浏览器退出仍由执行对话收尾,不代表该两车已执行出库或签收。 + +取消投影修复 `6fc32574c7ab8701ab58c7475c10a8b574b0ec56` 已推送,并经 Lastleg #210 完成只构建不部署:DEPLOY=false已核对,1377项服务测试零失败/错误、2项既有跳过,受限Maven与完整构建通过。证据 `reports/f34-cancelled-dispatch-lastleg-build-20261005-r1.json`;当前运行仍是209,须等现场会话释放后发布,同一冻结源码可复用本次完整测试。只读查询未找到“仅有已取消排车且无替代排车”的现存入库行,未为补负例改变现有测试货物;取消/替代/跨客户负例由本批真实H2/MyBatis测试证明。 + +F34两组排车在页面刷新、正式回查及唯一一次原请求重放后仍为原两张单,四托无交叉/重复、各2箱,完整库存及原收货流水不变、出库单0条。重放助手首次全对象比较因首次响应纳秒与数据库回读毫秒的createdAt精度差异失败,原记录保留;只读复核相同组/单号/明细和持久化状态后通过,未再次重放。证据 `reports/f34-multi-vehicle-ui-20261005-r2/replay-readonly-reconciliation.json`、`after-replay.json`;两车关联仍在继续,未将批次修复通过扩大为整车出库通过。 + +F33执行对话收到停止HTTP协调前,已沿原新来源创建并审核主转运 `WT-WH-20261005-968770`,分配原两来源并生成唯一换标 `RL-WH-20261005-812545`,当前WAIT_RELABEL。`03-main-create-allocation-http.json`保留成功写入和原请求重放,末尾读取助手把containerNo与原来货号比较而失败;生产字段实际为主转运号,inboundCode才保留原来货号。总控已只读核对这一区别,未修改业务记录。三个会话已退出,执行对话明确停止业务HTTP,仅本地准备下一段;后续先回读原主票,再接换标/出库/收货,不重新创建。此段尚未完成全部末尾快照核对,不记整段全绿。 + +2026-10-05 04:23 F33新样本第一段已通过:正式来货转运 `WT-WH-20261005-537666` 已经客户下单、平台审核、PDA测量/两托生成绑定/收货及普通客户确认,产生两个不同托盘、两个新可用来源,各1箱;原失败转运、费用及受保护来源未变,三个会话均退出。首段末尾助手误要求尾程containerNo为空而失败;实际生产映射将转运号放入该字段,经同客户、WAREHOUSE_TRANSFER类型、原新单ID/sourceInboundId及新SKU校验后,只读续接原样本通过,没有重新造数或重放整段。证据 `reports/f33-resource-live-20261005-r2/01-source-intake-http.json`(原失败)、`02-source-readback-only-http.json`、`source-first-stage-verified.json`、`new-source-frozen.json`。主转运、关联换标、两来源同托收货和费用SETTLED尚未执行;当前停在会话已关闭的阶段边界,本地准备后续,等待共享窗口恢复。 + +F34新版实际批次响应已返回 `DS-WH-20261005-561665` 与 `DS-WH-20261005-836353` 两张不同排车单,分别关联原四托的两个明确容器分组,各2托/2箱、PENDING_DEPARTURE、未拣未发。总控已独立核对原托盘集合及分组准确,证据 `reports/f34-multi-vehicle-ui-20261005-r2/batch-response.json`;此处只记录实际响应,刷新持久化、原请求重放和两车关联仍在验收,不据此关闭F34。 + +F27原B柜的业务预检已独立通过:`reports/f27-resource-live-20261005-r1/business-preflight.json` 共8次请求(登录、6项只读、退出),同客户原票唯一、当前计划0条、预览1票/1托就绪,原会话已关闭。`business-command.json` 固定首次转换的原键、版本1及摘要,尚未发送转换;执行时仍须再比对新鲜预览。故障执行器已准备将单次confirm故障与原转换请求放在同一短执行段,成功观察后停在原命令的LOCAL_COMMITTED,实际页面恢复仍单独验收;当前未启动这一故障段。私有routing已按同实例宿主入口和已读Nacos摘要准备,真正prepare前须再次只读核对。 + +F27故障工具只读预检已通过,实际故障尚未执行:先前失败已定位为宿主agent无法解析Nacos容器别名(NACOS_SOURCE_READ / URLError / gaierror / errno=-2),并非业务接口失败。只读核对精确Nacos容器别名、网络和宿主端口映射后,本次内存routing使用同一实例的可达入口,读取Lastleg原镜像/完整指纹、Nacos源摘要及Warehouse Overseas指纹成功,runtimeChanged=false;未prepare/activate、未启动代理、未发布配置或重启服务。失败与恢复证据分别见 `reports/f27-resource-preflight-diagnostic-20261005-r3.json`、`f27-resource-preflight-recovery-20261005-r1.json`、`f27-resource-preflight-diagnostic-handoff-20261005-r1.json`。工具仅补安全阶段/错误类型/HTTP状态诊断,14项离线检查通过;真正的资源确认失败、重开页面恢复与运行配置恢复仍待独占窗口。 + +2026-10-05 F34取消后入库列表状态残留已完成本地修复,提交 `6fc32574c7ab8701ab58c7475c10a8b574b0ec56`,尚未发布:原查询仅看历史排车明细是否存在,现统一按同客户、同来源订单且排车未取消判断,列表展示、筛选和分页计数复用同一条件;保留原取消单及明细。实际H2/MyBatis测试先复现4项中3项失败,修复后43项定向及Gateway5项全通过,覆盖取消、重新排车、多条历史、已发车/完成及客户隔离。证据 `reports/f34-cancelled-dispatch-projection-handoff-20261005-r1.json` 和对应 red/green/gateway 日志。F33/F34现场正在使用Lastleg209,本批尚未重启服务,实际列表恢复待后续发布核对。 + +2026-10-05 03:51 本批匹配发布已确认:Lastleg #209 为 `cc1fa74c63440c4a39f57f8b1b8e35db60b55ca3`,包括 F33 收货资源及费用、F34 分组预排、F27 原命令恢复;1373项测试零失败/错误、2项既有跳过。Admin #512 为 `28eb43893ae17c4242ac1d4c3496d04782173bf7`,包括 F34 分组提交及 F27 关闭重开恢复;完整2474项、末次46项定向和类型/build通过。实际运行镜像、版本及 healthy 已独立核对,Firstleg #482 保持原匹配健康版本。证据为后端 `reports/f33-f34-f27-lastleg-deploy-20261005-r2.json`、`f34-f27-admin-deploy-20261005-r1.json`、`f33-f34-f27-matched-runtime-20261005-r1.json`。前次 Lastleg #208 因接口边界测试仍期望6个POST失败,未部署;核对新增分组接口后改为精确7条路径断言,13项定向通过再发布209,原失败保留。 + +F25 原 B 柜 `TSTU6184325 / D1441` 已沿原上传恢复完成合成TEST清关、PU、提柜及预计到仓。独立进程正常登录后,原284字节文件下载SHA一致,原上传/清关完成请求重放不重复;PU `00054321` 保留前导零,旧版本写入被A0409拒绝且无漂移。船节点至 PICKED_UP、query version8、累计9条事实;预计到仓为2026-10-06 10:00,实际到仓仍为空。F27新鲜预览为ready=true、1票/1托待转换、0已计划,未创建入仓计划或操作资源;原报关、库存及客户隔离检查通过,会话均已退出。证据 `reports/f27-b-maritime-live-20261005-r1/f25/recovery/report.json`、`handoff.json`、`manifest.json`。此前401及助手失败保留,旧会话复用的精确根因未证明;本次不代表真实港区、船司或实际清关证明。 + +本批业务验收尚未关闭:F33正在用新样本核对两来源同托收货、唯一资源占用及费用最终结算;F34正在新版本实际页面复验两组独立排车与两车关联,旧失败单通过正式取消释放占用,另发现入库列表取消后仍显示已排车的展示问题待核对;F27故障恢复仅处于只读工具预检,尚未进行真实故障和关闭重开恢复。上述运行健康和本地测试不能代替这三项真实闭环,原失败样本不回填或删除。 + +2026-10-05 03:21 F33 收货资源命令表已精确应用到 TEST `baiyue_lastleg`:V9源码SHA256 `0a79519f7dedd6e0a3e2cd4cb557cc3211b2c47a8138f886163159cb515aa8ba`,先证实表不存在,再仅创建 `ll_warehouse_transfer_receipt_command`;回读17字段、4索引、1状态CHECK、0行及全部中文字段注释通过。未修改其他表或已有业务行,未补占用原失败托盘。`reports/transfer-receipt-schema-preflight-20261005-r1.json`、`transfer-receipt-schema-apply-20261005-r1.json` success=true;V9已执行冻结,后续不得原地改写。匹配资源协调代码仍待测试、提交和部署。 + +F25 原 B 柜清关文件第一次真实上传已200,文件SHA `da586193c185f05442100c98e3262aec4123af296011eb0ab0a5debbdf1f9b79`、资料 `2106825460913541122`、文件 `2106825460847579138`、version0。其后验收助手读请求及恢复登录出现401并停写,原文件和失败报告保留;两个会话已通过refresh后logout关闭。总控独立 `reports/f25-auth-fresh-probe-20261005-r1.json` 用无旧Authorization的新登录、原柜只读、退出全部200,证明当前认证入口可用,正在核对助手会话复用问题,未据此改Auth或重置账号。后续须先核对原上传及下载再接续,不能重新上传替代文件或跳过失败。 + +2026-10-05 F34 两车分组实际验收未通过并已复现:原4托在页面及服务器草稿中分为2组,每组ABE4/ABE8各1托;实际旧接口把4托平铺提交,返回200但仅生成 `DS-WH-20261005-201729` 一张排车单(4托/4箱、未拣未发),刷新后仍相同。库存与原收货流水未变化,原草稿和失败证据保留,浏览器及会话已释放。证据 `reports/f34-multi-vehicle-ui-20261005-r1/final-evidence.json`,不能把该200当作F34通过。后端分组修复 `8e46ba6985c0b3a640112d681365f869e1d7fda1` 已提交:新增草稿批次预排,按容器核对来源并在一次事务生成独立排车/PDA任务,原容器精确重放不再写入,平铺单张接口拒绝跨组;46项Java定向(含两组结果、重放、错误分组/容量/失效及第二组失败事务回滚)、Gateway5项通过。前端4文件修复已冻结并通过51项定向,尚待总控完整类型/构建检查、集成和匹配发布;新接口真实页面重验未执行。 + +F33 收货资源持久化结构 `3f8ac23ababe34b16e38ddb9d4731c48838ebba2` 已准备,尚未执行TEST SQL:新增逐来源原请求命令表,唯一约束固定来源及客户幂等键,同一转运目标托盘共享资源占用键;模块、海外统一空库定义与受控V9一致,统一海外基线154表、所有字段中文注释及三状态CHECK。15项初始化合同和Java中文Schema检查通过;首次初始化合同的权限计数红灯来自既有 `4bded730` 增加转运执行权限后旧期望未同步,已核对实际412权限/593角色授权并修正,原红灯保留。资源协调生产代码与直接测试仍由执行对话收尾,不能以结构准备完认定远端占用恢复已通过。 + +原 B 柜五个后续合成TEST船节点已完成HTTP验证,停于 `DISCHARGED_FROM_VESSEL`,query version6、累计7条事实。每步原键同体重放200,原客户运输片段与Admin一致、跳拣DTO空和跨客户拒绝、报关/单证/库存/账本不变,Lastleg节点投影已收敛;会话退出。证据 `reports/f27-b-maritime-live-20261005-r1/report.json`、`handoff.json`、`manifest.json`。本次不代表外部船司或直接Outbox/ACK审计,后续清关/PU/提柜/预计到仓及F27转换正在分段接续。 + +2026-10-05 F33 费用缺口已完成本地修复并提交 `b371fab53d5a689678ffaa2a3b4f6b94fb2e931b`,尚未部署:原收货分支直接将关联换标设为完成,漏发费用和资金SETTLE;现改为严格核对原转运、已全部实收、原客户确认和冻结金额后调用既有费用发布/结算机制,进入SETTLE_PENDING,最终结果仍由原可靠回执驱动。原收货重放不重复收费或释放库存;旧已完成TEST票不回填。90项Java定向、42项助手/证据合同通过;集成证据 `reports/fba-remaining-nodes-20261004/transfer/live-f33-original-20261005-r1/fees-root-integration-20261005-r1.json`。原0.01 CNY/FROZEN、费用来源0条和目标物理托盘IDLE的真实失败证据仍有效;物理资源接入已进入下一实现包,整体F33未关闭。 + +F27指定柜资源确认故障工具 `9e4a838b` 已提交,6项离线代理/文档合同通过。只在精确柜批次、海外仓、Lastleg来源及内部身份匹配时让一次confirm失败,最长60秒自动直通;其他请求保持原内容。尚未安装代理或修改服务路由,尚未执行真实故障。B柜已进港的运行证据作为后续海运前置,正在按原柜推进独立合成TEST节点,不代表外部船司验证。 + +2026-10-05 02:36 进港原请求重放缺陷已完成 TEST 修复与验证:`49ac9222b5513ad0a5920ae0dffb38291c1e229c` 的5个冻结文件已由 Firstleg #482 发布,1609项测试零失败/错误、9项既有跳过;实际镜像 `sha256:0907710d86ab03be4ec87613174e5284d52bb90e9b30149d0fd3070b4bf9165d` 与标签 `49ac9222b551`、healthy 已独立确认,Order/Client 原匹配版本保持健康。节点与异常事实改为严格 INSERT,只在确认对应业务键存在时处理唯一冲突,其他约束/SQL错误和不相关主键冲突继续抛出;不可变保护触发器未改、未执行 SQL,原同键异摘要冲突规则保留。69项定向及Gateway5项通过,原红灯仍保留。 + +发布后使用 B 柜 `TSTU6184325` 原 `b5730d31-0e34-4ab1-91a0-84cc602982de` 和原01:44:54进港载荷,执行一次恢复重放返回 HTTP/业务码200。`reports/carrier-fact-original-replay-20261005-r1.json` 的15项核对通过:节点及历史没有追加,query版本不变,完整报关/库存余额/流水/客户运输详情不变,跳拣订单仍无运输片段、跨客户仍A0404;原S0500报告及原请求保留,两个取证会话已退出。发布和运行证据分别为 `reports/carrier-fact-firstleg-deploy-20261005-r1.json`、`reports/carrier-fact-runtime-20261005-r1.json`。本次关闭该人工进港重放缺陷,不扩大为外部船司、后续海运、F27或整条FBA验收完成。 + +2026-10-05 原转运库存履约已到达终态,但 F33 全模块仍未关闭:原 `WT-WH-20261002-430594`、关联主单及 `RL-WH-20261005-174913` 均完成,普通客户确认、原请求恢复及重放、LA 4→3箱、NY新SKU +1和单一发运/收货流水已有本次 HTTP 证据。原失败绑定 journal 保留,正确顺序包含组合箱的 SKU 与箱唛两个子步骤、唯一完成事实及后续实物绑定;合成图片/扫码不作为真机证据。收尾回读仍显示换标费0.01 CNY/FROZEN,以及纽约目标实物托盘 IDLE/version0;正在核对费用结算入口及实物资源职责,不能凭库存终态宣称费用和资源收尾通过。证据沿 `reports/fba-remaining-nodes-20261004/transfer/live-f33-original-20261005-r1/`。 + +该转运执行器曾全环境读取余额/流水,并在其他独立验收客户发生合法变动后保存 `shared-baseline-refrozen.json`。原报告全部保留;结论范围明确为:原转运及其受保护来源依据原始基线核对,其他客户全局余额仅在重冻后的限定区间比较,不能声称自最初基线全环境完全未变。后续查询要求服务端按目标客户过滤,避免与独立F34写入混淆;重冻文件引用的一般继续指令不作为总控对未见差异的逐项批准。 + +客户进港实际页面已显示唯一 `NYEXX2610040031 / D1441 / TSTU6184325` 的已进港、实际01:44:54、预计“—”和人工记录来源;Admin/客户/API会话均退出,浏览器标签已关闭、视口恢复(`reports/customer-port-live-20261005-r1/browser-released.json`)。F34已接续原冻结4托/2车/2司机页面验收,不重新造数。进港重放修复与运行验证见本文件最新记录;F27匹配修复仍未部署,不将阶段显示通过扩大为整体验收通过。 + +2026-10-05 入仓计划异常重试关闭重开缺陷已完成本地修复,尚未部署:旧页面重开后使用最新展示快照和新键,而 LOCAL_COMMITTED 服务端要求原命令,定向红灯已精确复现键/版本/hash均变化。后端 `a0a4e03d` 在既有预览附带仅 LOCAL_COMMITTED 可用的 `resourceRetry`(原键/版本/hash),外层当前预览保持不变;Admin `058b0778` 优先提交这一组原恢复命令。严格同键异载荷拒绝保持,恢复只确认原资源,不创建新计划/预留。后端64项定向及最终3项接口合同、19项协调器复验、Gateway5项通过;Admin全量2457通过,测试夹具类型更正后75项定向和最终类型/build通过。原命令行解析失败、旧静态合同红灯及夹具类型构建失败均保留。冻结交接 `reports/f27-resource-reopen-root-handoff-20261005-r1.json`;发布及真实 LOCAL_COMMITTED 失败/重开页面恢复、资源与锁数量核对仍未执行。 + +F23.2 本次 B 柜进港首次实际页面 POST 成功,节点 `2106804475531366401`、实际 `2026-10-05T01:44:54`,原因明确 TEST 合成;客户正常登录页面已显示原入仓码/柜次/柜号唯一“已进港”、实际时间与预计空值。唯一一次原键原载荷重放却返回 S0500,节点仍唯一、报关及库存不变。总控只读日志 `reports/customer-port-replay-error-probe-20261005-r1.json` 精确证明 `CarrierScheduleNodeFactMapper` 的 `ON DUPLICATE KEY UPDATE id=id` 触发 MySQL不可变事实保护(SQLSTATE45000/1644)。已安排严格插入与唯一冲突读取修复,保留不可变触发器和同ID异摘要拒绝;未删除节点、改key或重放第三次,当前不关闭重放验收。 + +F34 已准备独立客户 `2106797629442723841` 的4个正式实收托盘(ABE4/ABE8各2托,每托1箱)、两台合格车辆和两名司机,原F33客户与资源未复用;`reports/f34-multi-vehicle-ui-20261005-r1/api-preparation-frozen.json` 21项检查通过,4条独立STOCK_IN、无排车/拣货、原操作员草稿为空。第一托助手误从汇总余额取入仓码的失败已保留,正式明细/位置回读后沿原托盘续接,没有重造。浏览器由进港验收使用,F34实际页面尚未开始。 + +2026-10-05 01:23 客户运输节点投影已完成匹配发布:后端 `b000b056d1d5d938f37cc7dd2eeea846335c16a2` 经 Firstleg #481、Order #182 成功发布,服务测试分别1599项(9项既有跳过)和374项,零失败/错误;Client `e139c5c87b5ade89c3014ada2d69850008afaa69` 经 #383 发布,完整504项本地测试及类型/build通过。三方实际镜像和 healthy 均已独立核对,见 `reports/customer-port-matched-runtime-20261005-r1.json` 与对应 deploy 报告。沿原详情接口新增只读 `transportFragments`,限定当前客户、当前订单、完成实装的入仓/柜片段;整票跳拣、其他客户/订单及已删除装柜成员不授予节点读取。预计时间与实际时间分别保存展示,不改业务状态、权限、Gateway或SQL。 + +原 B 合成客户正常 MERCHANT 登录后,`GET /merchant/v1/orders/2106713930479501313` 已真实返回 `NYEXX2610040031` / D1441 / `TSTU6184325` 唯一片段及原 `DEPARTED_WAREHOUSE` 实际时间 `2026-10-04T21:48:34.64`,证明新链已连到实际数据;对应合成 OWNER 凭据通过正式账号管理恢复到私有配置,成员完整资料未变、两会话关闭(`reports/customer-port-b-owner-restore-20261005-r1.json`)。尚未以此关闭实际进港页面:下一步只在 B 柜添加明确标记的合成 TEST 进港事实、核对 Admin/Client 实际页面及重放;不当作外部船司或真实港区证据。多车任务已获准恢复独立 API 准备,浏览器暂由该进港验收独占。 + +F33 后续 HTTP 已完成原换标审核、PDA认领、LA作业托盘创建及原键重放;首次先绑定后逐箱作业被业务 A0409 拒绝。原失败 journal 保留,完整拒绝前后单据、任务、库存和流水一致;响应 message 未保存,拒绝原因仅根据现行 `PdaPalletOperationService` 的“先完成本箱换标作业再组托”守卫及作业数0作出判断。总控已复核并限定恢复为原单原批次先 unit,再以原 bind 键/载荷作一次有独立失败证据引用的恢复;不改服务端门禁、不重造、不放开未知结果重试。原目录为 `reports/fba-remaining-nodes-20261004/transfer/live-f33-original-20261005-r1/`,绑定及后续客户确认/出库/NY收货仍未通过,整体 F33 保持未完成。 + +2026-10-05 原已有库存转运页面分配已实际通过:Admin #511 在原 `WT-WH-20261002-430594` 选择 `DP-261002-0018` 的1箱,正式 POST 200/200,生成唯一关联换标 `RL-WH-20261005-174913`,转运进入 WAIT_RELABEL。总控 `reports/f33-original-allocation-root-audit-20261005-r1.json` 对实际请求响应及完整前后正式回读作7项独立比较,全部通过:分配1条、关联申请及原入仓/余额/位置准确;来源总4箱不变,可用3→2、HOLD1→2;其他托盘、其他余额和全部原流水不变,只追加本换标 AVAILABLE→HOLD 的1箱流水。页面、来源候选禁选和关联详情证据在 `reports/f33-transfer-relabel-ui-20261004-r1/original-allocation-511-*`;页面已正常退出,API取证会话退出。现在接续本票换标、真实客户确认、原转运出库和纽约收货 HTTP,不能以本次分配完成关闭整个 F33。 + +2026-10-05 00:48 原转运客户确认账号前置已恢复:正式只读确认原合成客户 `2105875471489142785` 及其唯一 OWNER `2105875471547863044` 均 ACTIVE,已排除旧全量报告后续 ALLOC-B 覆盖的另一客户凭据。总控在既有 TEST 授权范围内,通过正式客户 OWNER 密码管理接口仅重置该合成账号,撤销其旧会话,新凭据只保存于私有环境目录;没有新增成员或修改角色、客户资料、转运、库存。新普通客户登录返回准确 MERCHANT/本客户/原成员身份,具有换标确认权限,成功读取原转运;成员完整资料前后相同,两独立会话已退出。证据 `baiyue-firstleg/reports/fba-remaining-nodes-20261004/transfer/customer-owner-restore-20261005-r1.json` success=true、LOGIN_READY。本项仅消除登录前置,不等于已执行换标客户确认。 + +2026-10-05 部分装柜自动化入口已收录:`5ad3fec4` 保存两柜真实阶段使用的部分实拣/跳过入口、原命令恢复、下游只读核对及直接测试;交接3文件摘要与 `reports/partial-loading-AB-closure-handoff-20261004-r1.json` 一致,22项直接测试和4项脚本文档检查通过(`reports/partial-loading-runner-integrated-20261005-r1.log`)。此次仅保存代码和执行方案,未重跑两柜或追加船节点;既有 A 原失败报告不改写,阶段通过仍以各恢复与独立事件证明为准。 + +2026-10-05 00:31 总控只读核对 Admin #511 实际运行镜像 `ea24496b1179` / `sha256:c1d5e18e535e6da9bd6539a1309b08c05df142583531066db42404aabf792158`,运行中且 healthy,Compose 项目正确;证据 `baiyue-firstleg/reports/f33-admin-511-runtime-20261005-r1.json`。首次运行缺显式 TEST 配置在网络请求前被拒绝;补齐同目录 TEST 与 Jenkins 配置后完成只读核对,无重新部署。F33 分阶段助手、剩余证据审计与 PDA 账号准备入口已由 `67c528c3` 集成推送,27项直接检查/文档/网关合同通过(`reports/f33-stage-integration-20261005-r1.log`),不需要业务服务部署;原票页面分配与后续真实履约仍在执行。 + +F23.2 本地核对发现客户展示缺口:现有 Client 订单详情未接入柜级 `AT_ORIGIN_PORT` 事实,而正式《头程节点与报关清关交互矩阵》要求客户查看进港节点。本项转为实际修复,沿当前订单详情链补最小只读运输事实及客户隔离,不新增第二套客户状态。B 柜 `TSTU6184325` 为海铁渠道 `EXX_RAIL_NY`,按现行规则 DO 不适用,不能换渠道绕过门禁;其 PU、人工节点及独立提柜仍须合法测试输入和实际操作证据。外部船司链、真实邮件及设备条件继续单独列为未验证,不能以本地准备关闭。 + +2026-10-04 22:28 转运执行权限已补齐并以新会话验证:后端 `4bded73040e02196039cdc9806cd06ab34ecc02c` 将既有 Controller 要求的 `lastleg:warehouse-transfer:manage` 注册为独立执行按钮,只授予默认平台管理员,不扩大 PDA/仓管角色。TEST 精确增加一项权限和一项角色授权,并推进两名受影响主体的权限版本;未修改库存或业务单据。`reports/transfer-permission-apply-20261004-r1.json` applied=true,新登录 `reports/transfer-permission-login-verify-20261004-r1.json` 确认执行、库存列表及转运审核权限同时存在,退出成功。此前 Admin #510 的按钮隐藏原因已定位,尚不能以权限查询通过代替原票分配操作。 + +Admin 数量修复 `ea24496b1179c3ef7c76295756eb02cf30eaece2` 已由 #511 发布成功,Jenkins 精确检出该提交且容器 Healthy;发布证据为 `reports/f33-admin-deploy-20261004-r2.json`。原票实际页面分配仍须独立验收。API 边界将实际 Long 字符串数量严格归一为非负安全整数,拒绝非法值,保留其他托盘 HOLD 和原来源权限规则。73 项定向、2456 项全量断言、类型检查及 TEST build 通过;全量 worker 收尾告警保留,单独复查无残留。冻结证据 `reports/f33-transfer-relabel-ui-20261004-r1/string-quantity-release-final-evidence.json`。原 `WT-WH-20261002-430594` 的页面分配及换标、客户确认、出库和目标仓实收仍待验证。 + +部分装柜 B 柜 `TSTU6184325` / D1441 已完成:仅实际买单来源1箱进入尾程、在途库存和初始流水,跳拣退税来源未推进 LOADED;实际报关为全买单完成,原完成请求重放无漂移。`reports/partial-loading-actual-PARTIAL-ACTUAL-20261004-B-completion-r1/report.json` success=true,58次请求、独立会话均退出;总控 `reports/partial-B-completion-event-proof-20261004-r1.json` 5项通过,唯一实际来源事件 PUBLISHED、唯一 APPLIED、Lastleg Inbox PROCESSED 且摘要一致。自动船期任务 `CSQ2106743282653466625` 已建立,未人工推进后续船节点;B 柜保留供海运剩余场景继续验收。A 柜原失败报告仍保留,由上文对应恢复/独立事件证据限定证明,不能改写为原报告全绿。 + +海外 PDA 退出修复已补正常真实 UI 证据:本机5176连接 TEST,主动退出只发送一次 `/auth/logout`,HTTP/业务码200并回到登录页;同一原 Access 再读仓资料被401/A0401拒绝,原 Refresh 返回 A0401且未签发凭据。`reports/pda-local-h5-ui-20261004-r1/fixed-logout-network-r1.json` 完整无截断,`fixed-logout-credential-proof-r1.json` success=true,临时凭据文件删除、取证标签页关闭、视口恢复。本次关闭正常主动退出分支;自然过期 Access 后退出仍只有自动测试,公网反代和 Android 硬件仍待验证。独立 PDA 账号保留 ACTIVE 供原转运后续作业。 + +2026-10-04 运营凭证页内预览已通过:原 `TR-EF0C3EFA5DA54EC7` 实测记录仍version1、125.5mile/27.5L,实际点击已保存附件后在原弹框内出现预览,浏览器图片complete=true、naturalWidth/naturalHeight=1/1,与原1×1合成PNG一致;关闭预览移除区域但保留表单,从更正历史原版本再次打开也正常解码。独立HTTP11项核对全部通过:完整实测记录/历史/车次/履约历史/成本/筛选统计不变,原68字节PNG的SHA-256保持 `2b6d880d224dc908aafe90ec84a98733be333421c9c12f9f47d31709d7d5b4fa`。证据 `baiyue-firstleg/reports/fleet-operations-preview-ui-root-20261004-r1/independent-verification.json`、DOM、实际图片状态及 `operations-inline-evidence-preview.png`;合成单像素只验证图片加载机制,不代替真实凭证内容或PDF预览。未上传/保存/更正本轮业务数据,独立会话及浏览器已退出、视口恢复、临时页关闭。 + +2026-10-04 F22客户报关资料页面第二页及恢复已补验:新测试客户 `2106633407064805378` 通过正式客户资格、下单/审核/测量、同柜PDA实拣和装柜完成,形成 `TSTU8545690` / loadingPlan `2106633660689027074` 的11票退税资料。默认20条一页显示全部11票,改10条后第一页10票、第二页仅原 `FL2106633426539446273` / `NYEXX2610040003`;打开资料时只默认勾选该票,其他同柜入仓码未误选。第二页临时阻断当前浏览器标签页的订单列表读取,刷新后旧行清空并显示错误/重新加载;解除后11票完整恢复至第1页,再翻第2页仍是原票。网络区间无截断,1次故意阻断,恢复1次订单GET+11次资料GET全部200;独立回读22项通过,完整订单集合和11份资料均未改变。 + +本批证据为 `baiyue-firstleg/reports/customs-pagination-ui-root-20261004-r1/`。原prepare的4项空凭据失败、recovery中通用请求助手覆盖显式客户令牌而导致错误身份探测、r2因本地报告重复脱敏过慢导致平台会话到期均保留;后续先核对原任务/证据/审计无漂移、以明确客户会话验证3项403隔离,再续接同一柜。最后r3复用第8票原草稿完成提交审核与测量,仅新建第9票,全部9张新增单与原2票正式进入LOADED,356项最后阶段检查通过、会话退出,没有重跑或复制已装货物。`recovery-r3-prepared.json` prepared=true,`independent-ui-verification.json` verified=true;截图 `customs-page2-exact-order-detail.png`、`customs-page2-after-recovery.png` 配对CSS1920×1080/scale1证据。临时网络阻断已清除;本次只证明显示分页和从显示第二页刷新失败恢复,不冒充201票触发的后台读取第2页成功/失败验收,人工视觉仍单列。 + +2026-10-04 CSV浏览器实际下载已补齐证据:定向检查既有下载目录找到两次实际点击生成的原文件。`车次运营.csv` 创建于11:46:55,晚于原筛选DOM约41秒,597字节,唯一行 `TR-EF0C3EFA5DA54EC7`,3托、自有5箱/外接1箱、125.5mile、27.5L、CNY100.03/USD13.07;`车次运营 (1).csv` 创建于13:26:11,晚于对应筛选DOM约45秒,477字节,唯一行 `TR-90ED255787B44C86`,自有2箱/外接1箱、USD1.00,其SHA-256与独立HTTP导出完全相同。原文件未改动,证据副本及原始创建/修改时间、字段解析、SHA保存在 `baiyue-firstleg/reports/fleet-browser-downloads-root-20261004-r1/final-evidence.json`。这关闭实际落盘缺口;此前download观察超时和无效网络游标报告原样保留,不能据超时认定浏览器下载失败,也不据文件存在推定精确请求数量。 + +报关分页样本准备暴露并修复验收脚本问题:`055cd29e`将装柜模块客户凭据改为每次执行读取本轮客户,缺完整凭据时在业务请求前拒绝,避免导入时空账号导致隔离检查误失败;定向58项及运输/文档合同12项通过。`cbd5dc0c`将报告脱敏值去重并在整棵报告树只整理一次,避免长运行反复扫描重复凭据;先失败用例从重复读取6400次收敛为80次,相关19项通过。两提交已推送,仅验收脚本变更,无服务部署。 + +2026-10-04 成本页面实际登记与更正已通过:沿用已完成退回分批验收的 `TR-97295BBEE337454E`,独立前置确认成本为0条、签收1箱/退回2箱及两项资源释放事实完整;实际页面登记合成燃油USD1.23,生成唯一 `TC-2361C2B5A89F4479` / version0,再从该条“更正”保存USD2.34及明确合成更正原因,版本推进至1、仍只有一条成本。UI列表/分摊/历史均正确回显,历史保留CREATE 1.23与UPDATE 2.34,原CREATE完整快照不变;自有分摊2.34、外接0。`baiyue-firstleg/reports/fleet-cost-write-ui-root-20261004-r1/before.json`、`created.json`、`corrected.json` 分别4/6/8项通过,独立完整库存、原派送/异常及车次均无漂移。只登记运营合成费用,没有实际付款、客户账单操作或新部署;截图 `cost-create-correct-history.png` 为1920×1080、DPR1、scale1。实际点击次数不替代完整网络计数,本轮不宣称写请求计数验收。 + +退回历史业务链接已实际补验:从 `EX-WH-20261003-615809` 的原 `RSR2106404964772397058` 实收2箱历史点击重派排车,正常打开 `DS-WH-20261003-433217`、已发车、关联原尾程 `FL-WH-20261003-703888`;切回异常页后原详情保留。再点击重派派送,实际进入 `DL-WH-20261003-167938`,URL保留原customerId、显示派送完成/已签收,SKU明细为原客户、`NYEXX2610030168`、ABE8及2箱,不再以原订单3箱代替此次重派数量。证据 `baiyue-firstleg/reports/fleet-exception-links-ui-root-20261004-r1/` 的源详情、两个目标DOM、目标URL及SKU DOM,截图 `return-linked-delivery-two-boxes.png`;只读导航,不修改该历史样本。该项关闭历史链接实际交互,不能替代剩余四端页面、CSV浏览器下载或完整人工视觉验收。 + +2026-10-04 同路线成本页面已补验:Admin #507正常登录后,出车记录筛选 `TR-90ED255787B44C86`,列表/统计/图表均收敛为1趟、3托、自有2箱/外接1箱。由实际“详情→直接成本”进入,显示USD1.00,自有0.67/外接0.33,三笔业务来源分别0.34/0.33/0.33;成本历史唯一登记version0,编辑金额/币种/时间/备注正确回显,不修改直接保存正常关闭。独立HTTP比较原完整车次、成本及不可变历史完全相同,未新增版本或金额;本项只关闭展示、历史、编辑回显和不变保存,不外推实际新增/修改金额写入。证据 `baiyue-firstleg/reports/fleet-cost-export-ui-root-20261004-r1/independent-verification-r2.json` 11项通过及同目录DOM;截图 `same-route-cost-panel.png` 实际1920×1080、DPR1、scale1,人工视觉结论单列。首轮验证脚本错误比较“汇总四字段”和“带分摊明细的整行”而失败;按当前DTO只比较共有金额字段后通过,原失败保留,无业务代码改动。 + +本轮CSV浏览器下载观察仍未通过:一次导出点击与download等待发生工具60秒超时;恢复后页面仍正常,未重复点击。原网络游标28在观察工具重置后返回新游标5,空事件不能证明零请求或导出成功,`filter-export-network.json`仅保留为无效区间证据。独立授权HTTP按相同筛选返回477字节CSV、表头+唯一原车次行,3托/自有2箱/外接1箱/直接成本USD1.00正确,SHA-256为`c68a0f2c19d70aa6cc7caf274bd43bf5b28c1b3fed7c4e45f5d1437b14668e5e`,`http-export.csv`明确不是浏览器下载文件。浏览器落盘及准确请求计数继续待验,不因接口导出通过关闭该项;没有新增部署或数据写入。 + +2026-10-04 分批退回实收已完成真实页面操作、库存核对及原车次收尾:异常 `EX-WH-20261004-669633` 经页面开始处理后,两次分别上传独立合成文件、选择不同真实库位托盘、各实收1箱。第一批保持PROCESSING/version2、剩余1箱;第二批COMPLETED/version3、剩余0箱,保留 `RSR2106609031780024323` 与 `RSR2106611827870842881` 两个独立收货号。`baiyue-firstleg/reports/fleet-partial-return-ui-root-20261004-r1/verify-batch1.json`、`verify-batch2.json` 各11项通过:仅原来源余额增加实际实收数量,每批唯一RETURN_STOCK_IN流水及新位置,两个目标托盘各1箱,其他库存/原位置/原流水不变。 + +期间真实页面发现Element Plus数字输入在开始处理后遗留禁用ARIA,修复以表单锁定状态重挂载数字控件并保留受控值,补真实控件的开始处理及分批保存锁定/解锁测试。Admin `1d73a40a07dbf02ea29e105b1e0a59770bf603bd` 经 #507 SUCCESS、精确源码和Healthy确认;定向26项、完整299文件2374项、含类型检查的build及Gateway5项通过,原失败日志保留。证据 `reports/exception-partial-aria-*.log`、`reports/exception-partial-aria-admin-deploy-20261004-r1.json`。Lastleg仍#205,无新增SQL、Schema或权限变更。 + +第二批完整网络区间无截断:上传及complete各一次POST200,随后列表和详情各一次GET200;捕获的原版本2、原幂等键、原请求体独立重放,明确replayed=true、同一库存调整号和完成时间,`verify-replay.json` 12项确认完整异常详情和库存均不变。第一批业务结果与库存已验证,但原标签页关闭前未保存其完整提交网络体,不宣称第一批请求计数或原键重放已验证;重放脚本首次误用API域与页面代理域作同源比较,在认证/业务请求前拒绝,改为严格匹配显式TEST登录域后执行一次。 + +原车次 `TR-97295BBEE337454E` 实发3箱、退回2箱后,为剩余1箱保存合成签收文件,原派送 `DL-WH-20261004-197634` 实签1箱;正式车次结案及原键重放、车辆/司机分别释放通过,两个退回位置仍各1箱且全部退回事实不变。`close-trip-result-r2.json` verified=true;首次收尾脚本误期望DELIVERING,实际现行部分退回状态RETURN_PENDING,仅读后即停止,原失败保留;核对正式签收服务允许RETURN_PENDING且扣除已实收退回数后恢复,无重造/重发货物。此样本复用ONE_CLICK_DROPSHIP原库存,不作为新FBA完成事件/Firstleg ACK证据。临时PDA已停用,全部独立会话及浏览器正常退出、视口恢复、临时页关闭;1920×1080、DPR1、缩放1截图 `partial-return-two-batches-completed.png` 留证,人工视觉验收仍单列。 + +2026-10-04 同路线自有/外接成本分摊真实链路通过:脚本提交 `791d1a650f8a801b27c9517ab7bbc0f0a3152db9` 已推送,新增同路线串行入口,未重新部署业务服务。`baiyue-firstleg/reports/fleet-cross-same-route-20261004-r1/report.json` success=true,419/419检查、231次实际请求、0跳过;两新客户经普通转运来货/PDA实收/客户确认各一托一箱,再通过真实外接预订、来货、PDA测量实收和排车关联追加一托一箱。三张排车同车 `TR-90ED255787B44C86`、同FBA卸货站实际发车,固定DEPART版本19及原装载hash,不用计划容量冒充实运依据。 + +成本 `TC-DE708BC40FA2468D` 登记合成USD1.00,按三个独立实运业务来源的最大余数规则分为自有 `DS-WH-20261004-488065` 0.34、自有 `DS-WH-20261004-607938` 0.33、外接 `FB-2106597523297714178` 0.33;自有合计0.67、外接0.33,原币合计守恒。外接来源冻结真实实收与BOUND排车 `DS-WH-20261004-406593`,原键重放不新增成本或改变分摊,仅一条CREATE历史。成本登记/重放、签收均未改变客户完整库存;三票独立签收后车次COMPLETED,车辆/司机分别释放并通过再次占用隔离核对。临时PDA停用、所有自有会话退出,保留样本。独立只读 `independent-final.json` 五项再次确认当前结案/资源/成员/分摊/唯一历史,verified=true。此项不证明财务付款或浏览器成本面板验收。 + +同路线入口离线检查47项通过,先失败日志保留:缺少样本的空引用已改为写前拒绝;错误客户/排车/目的地、未BOUND或错误实收、遗漏或重叠托盘、过期DEPART/hash、混币、错归属、丢分及错误余分接收方均拒绝。通用两客户入口现在要求验收器显式返回本轮车次VERIFIED,未验证或别车结果不能进入结案。日志 `fleet-same-route-contract-root-20261004-r1.log`、`r2.log`;没有扩大权限、执行写SQL或修改正式业务状态规则。 + +2026-10-04 出车运营实测已通过实际页面保存及独立回读:Admin #506 / Lastleg #205,车次 `TR-EF0C3EFA5DA54EC7` 原空记录从版本0变为1,正常页面一次上传合成PNG、一次点击保存,录入125.5mile、27.5L、明确测试备注及更正说明;重新打开表单和“更正历史”均正确回显,历史唯一1条且凭证唯一1份。`baiyue-firstleg/reports/fleet-operations-ui-root-20261004-r1/after-verification.json` 12项通过:实测值及历史一致、凭证鉴权下载字节/SHA一致,原车次详情、全部履约历史、成本完整快照不变,仍3托/6箱(自有5、外接1),原CNY100.03/USD13.07成本与统计/图表均未改变。首次preflight误用严格null判断,而当前序列化省略未填字段,原ready=false证据保留,intent单独记录空值复核;没有据此回填数据。 + +UI自动fill未保留数字,经实际键盘逐字输入并离焦后稳定保存,未修改业务代码;浏览器网络事件取证多次超时,未验证实际请求数量,不把一次点击直接等同一次HTTP。目标车次筛选后列表/统计均1趟;点击导出CSV后的download事件超时、没有可核验下载路径,未重复点击、未用独立HTTP文件冒充浏览器下载。CSV实际落盘、网络请求计数及凭证内嵌预览继续待验。最终组合证据 `baiyue-firstleg/reports/fleet-operations-ui-root-20261004-r1/final-evidence.json` verified=true、goalComplete=false,范围仅实测保存/回显/历史/独立HTTP守恒。CSS视口1920×1080、visualViewport.scale=1及DPR约1已同时记录;截图 `operations-history-saved-20261004-r1.png` 为原始完整页面,人工视觉验收仍单列。独立API会话及浏览器正常确认退出,视口覆盖已reset,临时标签页已关闭。 + +本批异常历史最终组合证据:`baiyue-firstleg/reports/fleet-exception-lineage-final-root-20261004-r1.json` verified=true、goalComplete=false,冻结两端发布、独立HTTP、实际DOM和截图的SHA-256。正常退出确认后已回到登录页,`exception-lineage-506-logout-confirmed.txt`留证;本轮两个临时标签页均关闭。第一次只点“退出登录”后仍在确认框,不算退出,原记录保留。 + +2026-10-04 异常实收/重派历史已完成TEST串行发布与功能页面核对:Lastleg #205固定 `dc993c971391447bc5ac32fa7fb29f4f2f6bbf57`,Admin #506固定 `a8ff0ef1de204f8396d59d541bb27cc2466ed8ad`,均SUCCESS、精确源码及容器健康已核对。发布报告为 `baiyue-firstleg/reports/fleet-exception-lineage-lastleg-deploy-20261004-r1.json`、`fleet-exception-lineage-admin-deploy-20261004-r2.json`。Admin首次向非参数化入口提交HTTP400,独立确认未排队/未启动后按实际CLIENT_WEB_URL参数入口提交;原r1失败记录保留。Admin完整299文件2372项及含类型检查的build通过,Linux Lastleg1323项零失败/错误、2跳过。无SQL、Schema、权限或Gateway配置变更。 + +实际只读HTTP `baiyue-firstleg/reports/fleet-exception-lineage-http-root-20261004-r1.json` 7项通过并退出会话:异常 `EX-WH-20261003-615809` 返回实收号 `RSR2106404964772397058` / 2箱,关联 `DS-WH-20261003-433217` 实选/实拣各2箱、状态DEPARTED及 `DL-WH-20261003-167938` DELIVERED。正常浏览器登录后从“异常订单→查看”打开原居中详情,实际显示同一实收批次、重派业务单号链接和箱数;完成态没有处理提交按钮。DOM `exception-lineage-506-dom.txt`、可见历史截图 `exception-lineage-506-history-visible.png` 保存在本轮visualizations目录。浏览器多次观察超时经实际状态回查后继续,没有重复提交业务命令。本次截图1280×720,只作为功能展示证据;1920×1080、100%缩放的人工视觉验收继续待确认,链接跳转及开始处理/分批实收实际交互仍未由本次只读查看覆盖。 + +2026-10-04 跨客户整车事务中途回滚已补验:原Lastleg #204镜像上,独立新车次 `TR-8CFD83527D254FE1` 的第二客户托盘锁由65秒只读锁租约占用;MySQL实际wait graph与独立READ UNCOMMITTED观察共同证明第一客户已经在同一未提交事务内写入DEPARTED、OUTBOUNDED及唯一DEPART操作记录,第二客户随后被数据库锁超时拒绝。正式HTTP返回现行 `CannotAcquireLockException` 映射的A0409“资源正在处理中,请稍后重试”,保留requestId/traceId。租约释放后,整车、两客户排车/出库/派送/PDA及完整库存/流水的一致性快照SHA-256前后完全相同,没有部分提交。脏读仅用于证明中途执行,不作为最终库存证据。 + +失败证据分别保留:`baiyue-firstleg/reports/fleet-cross-rollback-20261004-r1/` 因普通请求30秒先于数据库50秒超时而结果未知,未重发;只读回查10项确认业务恢复、锁等待归零,原PDA停用及会话退出。r2已取得完整回滚,但脚本错误预期S0500而误判失败;依据当前异常处理器改为严格A0409及精确消息/追踪要求,拒绝任意业务冲突或通用500冒充通过。未改写两份原失败报告、未第三次注入故障。脚本提交 `8a735020`、`ba4179b2`、`446fad33` 已推送;最后17项直接及Gateway合同通过。 + +r2显式恢复证据 `baiyue-firstleg/reports/fleet-cross-rollback-20261004-r2/recovery/report.json` success=true:先核对冻结原报告SHA、原故障证据及当前完整READY快照,再暂启原PDA账号,用原版本、原幂等键、原请求体成功发车并重放,未重复扣库存;两客户分别上传独立合成签收凭证,签收互不影响,车次COMPLETED、车辆与司机分别释放且通过再次占用隔离检查。94项恢复检查、29项结案检查、97次实际请求通过;临时PDA再次DISABLED、会话退出。原r1保持已拣齐待发样本,未取消或清库。本项关闭跨客户整车事务中途回滚缺口,不替代剩余四端页面、运营实测及同路线费用分摊验收。 + +异常退回历史批次已完成本地集成并开始串行发布:后端 `dc993c971391447bc5ac32fa7fb29f4f2f6bbf57` 保留全部实收批次、逐批重派排车及对应目的地派送,耗尽库存不隐藏历史;只读DTO/OpenAPI更新,无Schema或权限变更。23项直接Java检查和完整Lastleg1323项检查均零失败/错误(完整检查2项环境跳过),日志 `fleet-exception-lineage-java-root-20261004-r2.log`、`fleet-exception-lineage-java-full-root-20261004-r1.log`。Admin299文件2372项通过,含类型检查的build与正式发布继续单独核对。Lastleg发布记录 `baiyue-firstleg/reports/fleet-exception-lineage-lastleg-deploy-20261004-r1.json`;此时仅已提交队列,尚不宣称新版本在线或实际历史页面通过。 + +2026-10-04 10:09(Asia/Shanghai)运营记录数字控件修复已发布:Admin #505固定源码 `2c2e19c4eac53e8ebbafc297c1180fa73f8fad66`,SUCCESS、精确源码及容器Healthy均通过(`baiyue-firstleg/reports/fleet-bounded-admin-deploy-20261004-r3.json`)。表单待实测记录返回后再挂载,避免Element Plus数字控件初始加载时遗留禁用ARIA;空值与明确零值分别保留,只读权限继续禁用。真实控件延迟响应回归及页面/API共19项通过,299文件2369项完整检查和含类型检查的build通过;日志 `fleet-operations-aria-root-20261004-r1.log`、`fleet-operations-aria-full-root-20261004-r1.log`、`fleet-operations-aria-build-root-20261004-r1.log`。当前仍待实际填入、保存、凭证与历史回读,不将发布绿灯视为整条验收。Lastleg #204现有重派单已由真实DTO、BOL和1920×1080页面回读确认实发/实签2箱、SKU总数2且混合标识未知,原签收时刻不变;证据 `reports/fleet-return-redispatch-ui-20261004-r1/lastleg204-readonly-dto-bol.json` 及同目录截图。异常历史关联10文件冻结实现仍待Java和统一发布,不代表新关联已在线。 + +2026-10-04 F23首次登记与只读页面补验通过:原柜详情正式入口为“船期维护与历史”,独立柜次 `D1438` / 订舱 `CB-261004-0001` 通过实际“登记原柜船期”表单创建首条船期,未截断网络记录证明一次POST、HTTP200,独立正式回读26项通过;船名、航次、预计时间及来源与表单一致,只有一条CREATE历史,原对照柜次 `D1357` 的船期/绑定未改变。证据 `baiyue-firstleg/reports/f23-create-ui-20261004-r1/creation-verification.json`,本轮visualizations的 `f23-first-create-network.json`。样本为隔离TEST订舱和待装柜柜次,尚无实际集装箱号、货物或开航,不冒充真实船司输入或F24进度。 + +F23受限账号正式页面已核对:仅保留货柜列表与船期列表两项权限,正常登录后身份始终为本轮只读账号;原柜弹框五个可编辑字段全部禁用、保存按钮不存在、唯一首次登记历史可读。未截断弹框网络区间仅一次目标船期GET200、零写入。独立回读完整船期/历史及柜次快照与首次登记终态相同,账号和角色均恢复DISABLED、权限及角色归属不变,浏览器和独立管理员会话正常退出。证据 `baiyue-firstleg/reports/f23-readonly-ui-20261004-r1/final-verification.json`,17项通过;截图与DOM为本轮visualizations的 `f23-readonly-canonical-1920-r2.png`、`f23-readonly-canonical-dialog-r2.txt`,网络为 `f23-readonly-canonical-network-r2.json`。截图位图1920×1080;本次未保存与截图同时的CSS视口/缩放记录,只计功能/权限证据,不宣称完整人工视觉验收。 + +本轮首次只读尝试遭同源身份切换,未计通过;临时本机入口原样转发TEST资源及保留Origin时,实际登录被HTTP403拒绝,未移除或伪造Origin、未放宽访问保护。失败记录与代理日志保留,临时代理已停止且监听数0,两个自有标签页关闭、视口覆盖清除,清理见 `f23-readonly-ui-20261004-r1/local-cleanup.json`。独立船节点查询A0403符合该账号未授予查询权限的范围,不为取证新增权限。本轮未改业务源码、SQL、部署或开航节点;只关闭F23首次登记与只读功能页面缺口,全流程目标继续未完成。 + +2026-10-04 03:14(Asia/Shanghai)当前派送SKU数量修复已发布:Lastleg #204固定源码 `c46a68e32b31b2038d33c341f5b85999bd289267`、镜像 `fleet-c46a68e3-20261004-r1`,SUCCESS、精确源码及容器Healthy均已核对;完整Linux检查1318项,零失败/错误、2项环境跳过。本次派送明细改读当前排车与实际PDA拣货归属,不复用整单申报箱数;混合SKU不能唯一归属时保持未知,重量与体积没有实际SKU测量也保持空值。直接Java复验71项通过,第一次空来源订单映射错误日志保留,修正两处空键保护后通过;Gateway合同5项通过。证据 `baiyue-firstleg/reports/fleet-bounded-lastleg-service-deploy-20261004-r1.json`、`fleet-delivery-sku-java-root-20261004-r2.log`。未改SQL、Schema、库存、签收事实或事件,已有新重派2箱的正式DTO/BOL及页面回读仍须单独验收。Admin #504 `caf9fd89d4bb5aab6109a437465d0baaa0cc2914` 已SUCCESS/Healthy,恢复运营实测弹框被导航专用页签样式隐藏的内容;字段可见后又发现数字控件异步加载遗留禁用ARIA,最小修复正在验收,尚未宣称运营记录保存完成。完整车辆目标保持未完成。 + +2026-10-04 F22分页代码复核:当前 `customsDocumentsReader.ts` 已按服务端TAX_REFUND+loaded过滤顺序读取全部200条接口页,逐页校验total/page/size/pages、记录数量和重复ID,并以最多4条资料请求并发读取;没有发现固定首200条截断。Client当前工作区 `f0777ba` 与实际已发布 `a073623` 的该reader、资料页面及其测试没有差异。定向页面15项通过,日志 `baiyue-firstleg/reports/f22-current-pagination-audit-20261004-r1.log`,覆盖201条接口第二页失败与完整重试、21条显示末页、筛选及错误/恢复。本轮只读代码并执行本地测试,未改代码、造数、发布或浏览器操作;当前合法客户仍只有5票实际退税已装柜资料,真实页面第二页/第二接口页故障恢复证据继续未关闭,不用模拟201条证明真实页面通过,也不为取证提交大量人工测试单。 + +2026-10-04 F32 MySQL与完整PDA拣货并发验收已收口:`baiyue-firstleg/reports/f32-pda-race-preparation-20261004-r1/final-verification.json` verified=true,原来源 `FL-WH-20261002-827853`、排车 `DS-WH-20261004-059073`、车次 `TR-80050837108443B0` 在Lastleg实际镜像 `fleet-1f7ddf7b-20261003-r3` / `sha256:d0f62f0215bf0604fabd4dc921ecb4196fa0bbc594239bed6d51a8f1dc3aae0c` 完成两种竞争顺序。每阶段用12秒原订单行锁租约和MySQL实际wait graph证明两个正式HTTP请求同时等待同一行:HOLD_FIRST暂扣成功/PDA精确A0409,完整4箱移到HOLD、无拣货与归属记录,原键重放不变,再正式解除本轮暂扣;PICK_FIRST扫码1箱成功/新增暂扣精确A0409“已进入出库流程”,实际剩余3箱、单一1箱/10件拣货与原票归属、ALLOCATE/PICK/SHIP三条原位置流水全部核平。F36现行规则是扫码成功即扣库存,PICKED桶最终为0、源订单picked计数为1,不能猜测未公开的详情DTO计数。原r1因mysql客户端剥离SQL注释未观察到租约,未发暂扣或拣货;改为值内关联标识后r2取得真实竞争结果,却被旧桶/DTO假设拦住。两份失败报告保留。显式 `replay-recovery-report.json` 验证r2冻结SHA、原完整后态和SQL源计数,只重放原已成功扫码命令,完整快照不变,没有重做竞争或新拣一箱。独立只读 `lock-cleanup-verification.json` 确认4个自有租约连接及原订单等待均0,PDA账号恢复DISABLED且两端会话退出。保留部分拣货:原排车计划3箱、已扫1、尚余2;另一个原托盘1箱仍可用。该样本未完成拣货或发车,不推定F36/F37全链关闭。脚本及README `9cd709edee7dd675162be17e80439947a88a6016` 已推送,7项直接合同及9项文档/Gateway共16项通过,SQL注释与扫描扣减的先失败日志保留;未改业务Java、Schema或部署。此项仅关闭F32暂扣与正式PDA拣货竞争的TEST缺口,全目标仍未完成。 + +2026-10-04 01:09(Asia/Shanghai)F32正式PDA并发样本前置已补齐:`baiyue-firstleg/reports/f32-pda-race-preparation-20261004-r1/` 重新读取原受控尾程单 `FL-WH-20261002-827853`,仍INBOUND_COMPLETED/version=20,实际库存4箱、两个位置1+3箱且hold/allocated/picked/receiving均0;按尾程业务号查询得到两个同客户同仓实收候选,未将入仓计划号查询空结果当成候选缺失。正式API创建独立排车 `DS-WH-20261004-059073`(仅选3箱原托盘)及隔离测试车辆、合成证照司机和车次 `TR-80050837108443B0`,调度审核通过。首轮创建已明确200成功,但脚本错误读取DispatchResponse不存在的customerId而停下;原 `prepared-runtime.json` 保留。显式恢复先冻结原报告SHA、回查原排车唯一身份/来源托盘/入仓码/箱数及源订单、库存,复用原单,没有再次发送pre-arrange,`prepared-runtime-r2.json` success=true。原自有PDA操作员只临时启用并登录读取正式任务,确认同仓、PDA_PENDING、canPick=true及当前车次,随后会话退出并恢复DISABLED;证据 `pda-gate-verification.json`。MySQL实际只读查询确认performance_schema.data_lock_waits与information_schema.innodb_trx可见(`readonly-lock-visibility.json`);此时未建立SQL锁屏障、未发送暂扣或PDA拣货,所有报告raceExecuted=false。下一步才是两种竞争顺序及库存桶、历史、逐箱归属和重放的实际验收,当前不关闭F32并发项。新排车/车次和测试资源保留供该受控验收使用,没有删除或重置业务数据。 + +2026-10-04 01:07(Asia/Shanghai)司机页面补验与缓存详情修复:#502 真实页面创建合成司机 `DR-C083B3732BEA4116`,首次POST因401经一次正常Auth刷新与权限更新后重放200,实际新增一条档案;附件POST一次200,正式页内预览完整加载1×1合成PNG,返回70字节及SHA与上传样本完全一致。仅姓名、电话、时区必填,其他证照字段空值保持待审核/待补有效期;最终PATCH一次将该测试档案停用至version2,服务端 `active=false`、`canDispatch=false`,附件保留。证据 `reports/fleet-driver-create-ui-20261004-r1/driver-create-upload-preview-summary.json`,1920×1080及100%缩放;本地初版PNG CRC无效被上传前检出并保留,实际上传使用另存的有效样本。并行页面退出曾使同源root返回登录,正常恢复同一档案后继续,没有重做创建/上传。 + +司机返回列表单次刷新在#502已实测,但离开详情额外读取 `drivers/undefined`;多个按司机ID缓存的详情共享全局路由也可导致旧实例读取新司机。限定修复绑定每个详情实例的原司机ID,离页失效详情/历史/资格请求,重入当前实例仅一次读取;6项先失败,修复后25项直接、299文件2366项完整及类型/build通过。Admin #503 固定 `f4d58e669be3af2642335ac1253cda4105a95585` 已SUCCESS/Healthy,证据 `reports/fleet-bounded-admin-deploy-20261004-r1.json`;#502失败请求保留,新版实际返回与双司机缓存回归仍待最终证据。异常专项只读另发现新重派实际2箱、签收历史2箱,但SKU表合计3箱,正在沿实际发运归属修复,不能按整单申报数量冒充当前派送明细。异常开始/分批实收的正向实际UI、退回号/新重派号页面关联以及PDA公共入口等剩余范围继续核对,完整目标尚未完成。 + +2026-10-04 00:05(Asia/Shanghai)下单三依赖故障验收收口:脚本修复 `e8cf5e70ba8b6be2ac53a8fa68b31b00fdeed0ac` 已推送,直接36项回归和9项文档/Gateway门禁通过。正式阶段一要求的IAM、Finance、Warehouse三类不可用已在客户/平台两端共6次真实提交验证,均精确返回S0503且订单、版本、历史、履约任务和完整入库列表不变。证据目录为 `baiyue-firstleg/reports/order-warehouse-fault-20261003-r2/`:初轮 `runtime-report.json` 保留 success=false/RECOVERY_REPLAY_DRIFT;6次故障观察均通过,原镜像/配置及三依赖已恢复,但当轮没有保存漂移字段,不能断言其精确差异。离线复现证明旧恢复检查会把连续两次空入库结果当成同步完成,修为等实际唯一SUBMITTED入库投影、保持Order事实不变,再按原版本原键重放并保存前后完整快照。没有重新故障注入或新建草稿;显式恢复 `recovery-report.json` success=true,两张原订单均SUBMITTED/version=1、唯一提交历史和唯一入库单,重放快照不变。随后独立延迟只读复验两轮仍一致,`final-verification.json` verified=true并冻结原报告SHA,原失败不改写。Order原镜像ID、容器配置fingerprint、Nacos摘要、三依赖读取及健康全部复原,代理停止、业务会话退出。业务Java、SQL和正式镜像未改,只有授权测试窗口内同镜像Order临时重建。本项关闭三依赖不可用及恢复重放的HTTP缺口,不替代页面提示、F01–F40全部节点或尚未关闭的PDA/车辆场景。 + +2026-10-03 23:59(Asia/Shanghai)全新车辆退回重派样本 `fleet-return-redispatch-20261003-r2` 已完成实际退回2箱、独立新车次发车2箱、新派送实签2箱、同请求精确重放及资源释放。原始报告仅安全扫描失败(9671/9672);保留原文件与SHA `9727ae42c4631da328d2da8659f9c8fde9b86aed0b458ee162b79a94904aee54`。修复报告数字附件长度键及已脱敏认证键后,以相同HTTP终态生成独立派生报告(9672/9672,5571次请求,SHA `a97e43cfed8be11d5a2d8708862d44ea9f7fe8bca3f79fdd307a5a1769f340e3`);总控独立再生成、比较全部业务事实和原始扫描规则,未重做业务写入。source pre/final/replay与Firstleg receiver pre/final均VERIFIED:A由已签1/退回2、无完成事件,推进为累计实签3且唯一完成事件;B实签1、原唯一事件ID/hash不变。两来源Firstleg均DELIVERED,精确投递ACK、Inbox、UTC完成历史与本地签收时刻一致。只读审计初次排序规则冲突和Firstleg容器名误配均保留失败文件;修正后核对实际 `firstleg-test-business` 容器,无数据库变更。根证据为后端 `reports/fleet-return-redispatch-live-20261003-r2/root-final-evidence.json`。Order两根仍PROCESSING,各有有效余量child处于WAIT_SPLIT,完成事件0条,门禁符合现行规则,不能宣称整单全部完成。 + +司机详情修改后返回缓存列表仍显示旧审核/到期与统计,已用真实页面复现并修复为返回时单次刷新、保留筛选分页、忽略离页迟到响应。两项新增用例先失败再通过;299文件2360项及类型/build通过,首次全量并行的报价控件测试超时保留,限制2workers复验全绿。Admin #502 固定 `5c4a381d87366d8e6c1254d9ea871aa0d698a23c` 已SUCCESS/Healthy,真实新版返回请求量仍在专项核对。海外PDA同版源码 `12de982` 本机H5加真实TEST接口、390×848及两张原r5交接详情只读验收通过;证据 `reports/fleet-pda-readonly-ui-20261003-r3/final-ui-report.json`,进出页面按需查询,三派送已签收/剩余0且不可重复发车。本地服务与标签页已清理、视口恢复,唯一专用账号DISABLED(`fleet-pda-ui-operator-20261003-r1-cleanup.json`)。公共H5网页入口尚未确认,司机创建/上传及其余页面范围仍须单独核对,完整车辆目标保持未完成。 + +2026-10-03 23:13(Asia/Shanghai)签收数量与事件时间修复已发布:Lastleg #203 固定源码 `1f7ddf7bc9e2e0077b4ed15b7ce3fd7c4f628197`、镜像 `fleet-1f7ddf7b-20261003-r3`,Jenkins SUCCESS 且新镜像健康;完整 Linux 测试 1312 项、零失败/错误、2 项环境跳过。合并后本地 Java 90 项通过,签收字段相关 Node/前端检查 100 项及两端类型检查通过。派送列表/详情返回实际可空 `signedPackages`,签收事件按服务执行时区转换为同一 UTC 时刻,不以原箱数或旧错误时间替代事实。证据为后端 `reports/fleet-bounded-lastleg-service-deploy-20261003-r3.json`、`fleet-signature-quantity-time-java-root-20261003-r1.log` 和 `fleet-signed-packages-contract-freeze-20261003.json`。Firstleg 仅增加测试,无发布或 SQL;Admin `9ec1fb5`、Client `f0777ba` 仅类型与测试提交,运行页面版本仍为此前部署。全新 `fleet-return-redispatch-20261003-r2` 已放行,必须在新签收前核对完整来源与 Firstleg 接收端,再验证签后及重放;旧 recovery-r2 保持 STOPPED,完整链仍未宣称通过。 + +2026-10-03 22:30(Asia/Shanghai)车辆交接主链已取得限定范围通过证据:原r5-cost-recovery-r4为171/171、93次请求,3单真实签收并分别释放当前资源;冻结交接fixture SHA为`7ea5ac8528a7738025ac2274934a94bd325cbb615d35e8b3f64e7081dadfc9aa`。#501报价保存后同弹窗重开值11/总价22、来源16保留,运营29项真实接口及1920×1080页面通过,多站成本100.03CNY/13.07USD来源分摊仍不可用。司机实际UI完成打回、重提、过期通过拒绝A0400、改为10月18日到期后空意见通过;始终停用,体检等旧过期日期不额外阻止审核,内嵌合成1×1证照加载且正常关闭。证据见`fleet-root-ui-20261003-r1/root-company-cost-driver-ui-summary.json`和专项UI报告,不扩大为真实资质审核。 + +新退回重派r1复现同托第二来源候选为空:实际A的拣货1+2=3被出库项的主入仓码过滤。修复按排车明细冻结字段唯一关联,支持同托多出库项、顺序反转及歧义拒绝;18项Java与Gateway5项通过,`6dbc8996`已由Lastleg #202发布,1308项中1306通过、2跳过,新镜像Healthy,无Schema/API路径变化。原样本候选复验A3/B1通过,`0c8ede38`的180项Node检查后恢复到实际退回2、新DEPART2及前签闸口。此时审计发现正式派送DTO缺signedPackages,不能按原箱数猜实签;独立只读仅确认A事件0/B事件1(`fleet-return-redispatch-live-20261003-r1-recovery-r2/pre-source-count-snapshot.json`),未签发新签收解除。另发现本地签收时间被直接当UTC产生事件时间偏移,生产转换与公开签收字段正分别由原成本/异常专项补齐;当前样本停止在新签收前并保留原事件/快照,不回填或改造旧事实冒充通过。新的匹配版本与fresh链、Firstleg接收端完整审计仍待验。PDA已准备独立洛杉矶仓受限操作员;公网H5入口仍未提供,私有配置里的Auth API不能当页面,本机同版H5交互和公网入口分别核对。 + +2026-10-03 20:53(Asia/Shanghai)报价详情修复已发布:Admin #501固定`6df6f6dabc4f48913eed43b2fff893fbc4e718c8`,299文件2355项、类型检查和build通过,Jenkins SUCCESS且容器Healthy。本地资产`index-BJFlMrNJ.js`与Linux构建不同,曾误向专项指定本地资产而阻断复验;已直接核对#501构建日志和当前服务器HTML,均为`index-DXGBY6IW.js`,证据`fleet-admin-501-served-asset-20261003-r1.json`,无需重发部署,实际保存后重开详情仍待专项复验。当前r5两条派送费用事件唯一性及Finance精确APPLIED回执已验证(10与30CNY,`fleet-r5-fee-ack-audit-20261003-r1.json`),不据此推定签收完成事件已验证。维修/救援实际页面已核对原币、折算、全额付款及历史:维修13.65+13.66=CNY27.31;救援USD10按月汇率8折算CNY80,两次付款40+40、未付0。救援历史请求先401、统一刷新200后仅重放一次GET200,无循环;原失败事件保留。凭证点击打开1×1图片blob标签页,但浏览器策略禁止读取该协议,内容视觉仍待人工确认,不通过其他入口绕过。原车次交接显式车辆沿用入口正在审阅;新退回重派已要求签收前A0/B1及签后A1/B1的独立事件审计,完整目标仍未关闭。 + +2026-10-03 20:30(Asia/Shanghai)原车辆样本继续取证:手机号隔离修复`f56c68d9`的135项通过后,r5-cost-recovery-r2真实登记两条成本,CNY100.03/USD13.07均VERIFIED,多卸货站来源分摊UNAVAILABLE;该报告SHA为`78483b5f0515a31d4a82c2b7736bd33907fa5bdf7296a4d61d3c1a8760de4361`。交接助手读取排车DTO不存在的顶层customerId导致只读断言失败,修为绑定客户及原DEPART明细/托盘/箱数核对,提交`f2e25ec3`,140项通过。新的显式恢复仅保留已登记成本和原DEPART,从交接继续;r3通过排车/PDA前置,接替车辆POST明确成功,但返回身份字段断言再失败,交接仍未确认、原单未签收,已停写并由成本专项只读核对完整助手合同,不重复创建车辆。原失败报告均保留,退回重派和事件ACK仍待验。总控实际Admin维修页面已确认VC-261003-0001为已付款、未付0,两笔付款13.65+13.66合计CNY27.31且各有凭证入口;DOM与截图见`reports/fleet-root-ui-20261003-r1/company-repair*`,凭证预览及救援页面仍未关闭,不以入口出现推定文件预览已通过。 + +2026-10-03 20:12(Asia/Shanghai)车辆恢复继续:Admin #500固定`60dd86ab88d75f320fd7d0da14ba1af488989dd7`已SUCCESS/Healthy,修正新建车辆空白油耗被控件最小值自动填成0.01的问题;299文件2354项及build通过,原空值/控件测试失败日志保留。1920×1080、scale=1真实页面已核对#500资产`index-BimvArF4.js`及油耗留空,证据`fleet-root-ui-20261003-r1/vehicle-create-after-fuel-fix*`。司机列表、30天筛选、详情各一次GET且均200,统计随筛选从23变1,截图及请求量同目录;此前车辆旧会话401与#499旧资产证据分别保留,当前自有车辆单次GET200,不将旧失败算通过。handover r5已DEPART(2排车、3托、6箱),成本助手原先错误要求同站而停止;修正`bab967ac`只支持整趟原币成本,多卸货站按现行规则分摊不可用,不假造分票成本。严格原车次恢复入口`6d922516`经133项及原报告SHA/实时状态审阅后已执行一次,业务事实复核通过,但新测试账号手机号复用返回明确拒绝;成本、交接、签收仍未开始,原失败和原DEPART均保留。账号生成修复正在处理,不重复发车。退回重派、事件ACK、运营统计及剩余页面验收尚未关闭。 + +2026-10-03 19:09(Asia/Shanghai)车辆后续发布与验收:Admin #499固定`049f895b44a85396650367cec72a15ddd0f57569`已SUCCESS/Healthy,修复自有/外派车辆查询迟到响应覆盖列表、总数及加载状态;3项先失败复现后修正,20项定向、299文件2353项完整前端测试及build通过,原失败日志保留。海外PDA固定`12de982`已发布,`pda-handover-h5-release-20261003-r2/post-success-readback.json`确认health=healthy及首页SHA一致;首请求在Jenkins编译时因单字符串超限拒绝,先只读确认远端未执行,再分块编码完成发布,不自动回滚或盲重发。独立预订选价33项通过(`fleet-booking-quotes-live-20261003-r2/00076-final.json`),只证明草稿来源版本/日期/币种/计价/手填与快照,不覆盖承运成功、实收和发车。前置写入保护提交`3bf26124`的66项与4文档检查通过;fresh handover r3在入库测量POST箱标PDF处被该保护误判为未知JSON而停止,无DEPART,正在修验收器,原r2/r3均不重放。浏览器多会话及单会话取证持续超时,已登录不等于真实页面验收通过,UI和跨服务整链继续待验。 + +2026-10-03 19:00(Asia/Shanghai)车辆后端与Admin已发布:File #146、Finance #122、Lastleg #201固定`4ff55ba3`,Admin #498固定`102194460ccda8115d74740b50ee0c1626e68d83`,均SUCCESS且新容器健康。Admin原#497失败证据保留:异常处理模板两个事件参数隐式any;仅将回调改显式类型命名函数,13项直接测试及build通过后重发#498。Lastleg本次1304项中1302通过、2跳过。实际HTTP:公司成本203项/61次业务请求通过,独立报价89项通过,证据分别为`reports/fleet-cost-live-20261003/api-report.json`与`reports/fleet-quote-live-20261003/00092-final.json`;不覆盖页面、预订选价及出车统计。handover新r2在前置造数遇订单备注PUT http:0,随后装柜断言失败,952/958通过不能算整链通过;原报告保留,无DEPART、未开始退回重派。独立只读证实目标备注当前未生效,缺完整原请求体,未直接重放。前置请求持久化与未知结果停止保护正在修复。PDA固定包发布窗口已向原专项开放,尚无发布成功结论;页面与事件ACK仍待逐项取证。 + +2026-10-03 18:44(Asia/Shanghai)车辆串行发布进展:File #146、Finance #122已SUCCESS,均核对固定源码`4ff55ba3`、受限Maven入口及本批新镜像健康。File复用#145的220项通过;Finance本次241项中240通过、1环境项跳过,无失败。Lastleg #201正在完整测试,尚未声称新容器就绪;构建期间一次cgroup快照约1.87GiB,memory.events与memory.pressure均无告警,此为瞬时值,不是峰值结论。证据`fleet-bounded-{file,finance,lastleg-service}-deploy-20261003-r1.json`、`fleet-{finance-122,lastleg-201}-resources-20261003-r1.json`。业务HTTP、事件ACK与Admin/PDA页面验收仍待对应版本就绪。 + +2026-10-03 18:37(Asia/Shanghai)车辆发布恢复:用户确认Jenkins恢复后,复核`java-test-agent`online、临时停用已解除、执行器为1。复用主总控File #145的Linux构建证据:`4ff55ba3`、新资源限制入口、220项测试通过,DEPLOY=false(`fleet-reused-file-145-20261003-r1.json`)。车辆正式File #146已进入运行,随后按File→Finance→Lastleg串行发布,单服务固定`4ff55ba3e08c7fe0c6e04832fa95ebb680c76b8c`及本批镜像标签;File复用#145测试而只编译打包,其他服务执行测试。该提交9个业务/公共模块Git tree与已验`e49ad96c`一致,包含必须使用的CI内存/互斥防护,详见`fleet-bounded-release-plan-20261003-r1.json`及8项发布前合同结果。当前仅表示正式发布进行中,尚未宣称容器健康或业务验收通过;既有Schema不重跑,Admin`4dc497c`与海外PDA`12de982`待对应串行窗口。 + +2026-10-03 16:42(Asia/Shanghai)车辆目标受阻复核:连续多轮确认`java-test-agent`仍offline、原因为`Connection was broken`,本次证据`fleet-node-blocked-audit-20261003-r1.json`;三个独立专项均已完成当前本地工作并冻结,等待匹配版本部署。后端`e49ad96c`、Admin`4dc497c`及海外PDA`12de982`保持待发布,已执行Schema不再重跑。当前无法继续完成部署、真实HTTP/事件ACK和指定视口页面验收,需要恢复该执行节点或提供可用的测试主机运维入口;另有运营页应收/实收展示范围等待用户选择。完整目标保留为未完成,不重复排队构建或用本地测试替代环境结果。 + +2026-10-03 异常处置与实测凭证Admin已推送`4dc497c`(15文件,选择摘要`fleet-exception-evidence-admin-selection-20261003-r1.json`):异常详情接入开始、取消、证据及分批实收/完成,规范化真实字符串版本/数量,历史证据与本批选用分开;目标托盘和库位各一次详情读取,复用既有资源接口。未知命令保留同键载荷且禁止关闭重开后并发重放,迟到响应不删除新批次;普通说明采用标准动作说明。实测附件选填,保存后按当前/历史引用预览;未知上传停止重传,可暂不绑定继续保存。Admin完整298文件2350项及类型检查/构建通过(`fleet-exception-evidence-admin-{full,build}-r2.log`),此前2349项r1及各专项定向证据保留。当前待发布组合为后端`e49ad96c`(File/Finance/Lastleg)、Admin`4dc497c`、海外PDA`12de982`固定包;本批无新增SQL,上一批已应用的结构不要重复执行。1920×1080及390×848真实页面、HTTP与事件ACK均仍待匹配版本部署后验证。 + +2026-10-03 出车实测凭证后端已推送`e49ad96c`(22文件,`fleet-evidence-backend-selection-20261003-r1.json`):选填PDF/JPG/PNG,固定平台+车次+独立业务类型,保存时核验文件归属,只有当前/历史实测版本引用可下载;不创建额外库存或费用事实,不新增SQL。File全量220项、Lastleg全量1304项(1302通过、2环境跳过)通过;日志`fleet-operation-evidence-file-full-r1.log`、`fleet-operation-evidence-lastleg-full-r1.log`。File首次定向因测试JPEG样本字节不足被正常拒绝,r1失败保留;改真实图片样本后r2的37项通过。同步依赖检查另发现车辆4个既有Feign和本批1个HTTP客户端未登记,逐个核对真实读写/幂等后补齐为70个Feign、25个HTTP,保留r1/r2失败,r3的64项通过,未放宽最长链或访问模式门禁。OpenAPI和1094项索引通过。16:39节点仍离线(`fleet-node-preflight-20261003-r5.json`),未发部署;此提交仍待与本批Admin匹配后真实验收。 + +2026-10-03 完整首版范围复核新增两项实际实现缺口:Admin异常页尚未完整消费后端开始处理、证据上传、分批实收及取消/完成操作;出车实测记录尚缺原型已纳入的凭证附件。两项继续由原异常/报价运营专项接线,总控集成File独立平台车次文件类型;不以此前HTTP脚本和局部页面通过替代用户可操作闭环。报价选用与公司成本已实现部分的陈旧“仍在接线”说明已在业务文档10.10收敛,部署和真实验收仍未完成。运营页是否首版增加Finance应收/实收展示已另询问用户;现有收款按账单分配,不能按整账单金额或未经确认比例推算某车次实收。当前新一批代码尚在实现,不把上一批已验证版本当本次最终交付。 + +2026-10-03 正式退回重派HTTP入口已推送`d05ff1cd`:在现有车辆入口显式选择`--scenario return-redispatch`,只接受当轮新样本,覆盖A实退2箱、余货签收、B独立完成、退回候选/锁/预排、PDA重拣、新发车、A补签及国内状态回查。新增断连`http:0`、5xx及非明确响应保存UNKNOWN_RESULT并停止的测试,保留原请求、不自动重跑;事件唯一性和投递ACK仍由总控只读取证,不伪装已验。44项入口/模块/Gateway及4项文档检查通过(`fleet-redispatch-runner-final-r1.log`、`fleet-redispatch-runner-docs-r1.log`),尚未执行真实链。16:11(Asia/Shanghai)再次只读核对节点仍offline、Connection was broken(`fleet-node-preflight-20261003-r4.json`),未发起新部署;待发布为后端`d05ff1cd`中的File/Finance/Lastleg、Admin`9fa73f5`、海外PDA固定`12de982`包,已执行Schema不得重复应用。 + +2026-10-03 车辆第三批TEST结构已应用:按`8700fc34`对应两份基线,执行预检r2冻结的8条DDL,新增`ll_return_stock_receipt`、7个字段,并更新退回历史索引、拣货来源非空约束及数量约束;未删除业务数据、未回填或重置。`fleet-v3-schema-apply-20261003-r1.json`保留8步成功记录及首次审计误报:检查器硬编码16字段,而基线实际15字段。未重跑DDL,后续独立只读`fleet-v3-schema-audit-20261003-r1.json`按字段名、类型、非空、中文注释、唯一索引及CHECK逐项复核,33项全部通过。早先v2/v3预检不再可用于重复执行;后端/Admin/PDA仍未发布,不能把Schema就绪视为业务联调完成。 + +2026-10-03 车辆退回重派与逐来源签收后端已推送`8700fc34238bc33339351c73c15f3af8de8ce517`(39文件,精确选择与摘要见`fleet-v3-backend-selection-20261003-r1.json`、`fleet-v3-backend-commit-20261003-r1.json`)。140项定向通过后,全量r1暴露旧Controller Mock和库存并发测试缺失新Mapper依赖,5项失败原证据保留;补齐真实Mapper/表及当前调用后13项直接复验通过,全量r2为1298项1296通过、2环境项跳过、零失败/错误(`fleet-redispatch-{source-java-r3,consumers-java-r1,lastleg-full-r1,lastleg-full-r2}.log`)。初始化/Gateway19项、322个Mapper、1094项索引及受影响OpenAPI验证通过;独立政策4场景复验覆盖签前/签后多跳与无关分组隔离。TEST只读结构预检17项通过,`fleet-v3-schema-preflight-20261003-r1.json`冻结当前两基线SHA和8条DDL,`executed=false`;结构执行及复核结果见上文。版本尚未部署,真实HTTP、事件ACK及页面仍待验收,不以本地全量关闭完整目标。 + +2026-10-03 退回重派Admin已推送`9fa73f5`:真实退回来源独立传递凭据ID;草稿候选恢复失败保留全部选择并禁止少发提交,重试恢复后才提交计划与退回两类来源。完整296文件2323项及类型检查/构建通过(`fleet-redispatch-admin-{full,build}-r2.log`),尚未部署或完成1920×1080真实验收。后端集中定向首轮因测试缺失导入未执行;补齐后r2为131项128通过3错误,错误位于新增来源签收持久化测试的参数绑定和并发等待,原日志`fleet-redispatch-source-java-r1/r2.log`保留;退回重派相关86项通过,但新增混选/部分消耗覆盖和签收入口修复仍待下一轮测试,不据此发布后端。 + +2026-10-03 结案数量Admin消费修复已推送`6a135c3`:展示原实发/实签/本趟实退/未结箱数,混合退回后显示“余货已签收”,沿既有一次结案查询,不逐票增加接口。首次字段转换回归失败保留,修复后17项直接测试及完整295文件2321项通过,类型检查/构建通过(`fleet-completion-quantities-admin-r1/r2.log`、`fleet-completion-admin-{full,build}-r1.log`);真实1920×1080视觉仍待部署。运营只读入口`dd52bfd0`绑定同轮交接fixture的SHA与来源预期,57项入口/模块/路由/文档检查通过(`fleet-operations-final-entry-contract-r1.log`),未执行真实统计验收。 + +逐来源签收核平正在接入实际签收事务和完成事件;此前16项Java定向证据(`fleet-source-completion-java-r1.log`)只覆盖较早版本,不能证明当前接线、并发或重派已通过。独立复核已修正“原始10箱先签6箱、签后退回其中4箱再签一次误算全签”的重复计数;多次重派及不同来源互不阻断仍在补验。真实退回来源凭据、候选和拣货额度已写入工作区,两份初始化基线新增`ll_return_stock_receipt`及三个关联字段,海外基线153表;14项初始化、5项Gateway及322个Mapper检查通过(`fleet-redispatch-contracts-r1.log`、`fleet-redispatch-mapper-r1.log`),均未执行TEST DDL。前端33项及构建通过后,独立复核另发现草稿候选恢复失败可静默漏提交退回来源,正在修复并补交互测试;旧通过结果不覆盖该缺陷。原4字段预检不含新结构且源码摘要已变化,发布前须重新准备匹配清单。15:51(Asia/Shanghai)节点仍offline、Connection was broken,见`fleet-node-preflight-20261003-r3.json`,未发起新构建。 + +2026-10-03 正式车辆验收入口已推送`7d9ee181`:公司成本、独立报价、车次成本与在途交接编排和脱敏持久化证据共15文件;117项定向/入口/文档/路由检查通过(`fleet-v2-final-acceptance-contracts-r1.log`),未运行新真实业务链。PDA固定`12de982dacaebd741ca77ef9b470de4116f60247`的85文件H5包已准备,`reports/pda-handover-h5-release-20261003-r2/manifest.json`记录源码/资产摘要,归档SHA为`baa6f5b930080d98eebc0a3ef7282204426fc6e35e010d22346ac3a3589bf147`;旧包保留为被替代证据,尚未上传或替换容器。14:51(Asia/Shanghai)再次只读核对java-test-agent仍offline,原因Connection was broken,不重发构建。 + +2026-10-03 车辆后端第二批已推送`a6fd0ba3`,海外PDA已推送`12de982`,尚未发布。报价来源版本、实际签收/退回量、剩余货物交接与结案已集成。首次定向248项有1失败(未实际出库时提前读取退回事实);保留`fleet-v2-integrated-java-r1.log`,修正生产校验顺序且未删除断言后,完整Lastleg1258项为1256通过、2环境项跳过、0失败/错误(`fleet-v2-lastleg-full-r1.log`)。113项脚本/依赖/路由合同、319项Mapper、1094项索引通过;PDA178项及H5/App源码构建通过,日志`fleet-v2-offline-contracts-r1.log`、`fleet-v2-mapper-contract-r1.log`、`fleet-v2-agents-contract-r4.log`、`fleet-v2-pda-{full,h5,app}-r1.log`。后端60份精确文件及SHA见`fleet-v2-backend-selection-20261003-r1.json`,没有混入其他任务Firstleg修改。 + +同托多明细退回映射缺陷保留原SQL复现:一笔2箱被映射为两条共4箱。修复改为按原拣货仓位与订单归属关联,独立新SQL5项复验通过,覆盖同托多明细、不同来源、多次拣货及缺归属不猜测;证据位于`reports/fleet-cost-live-20261003/`,未访问TEST、未改写原证据。该结果不替代MySQL真实退回链或页面验收。混合退回/签收的国内整票回写仍明确待处理,不因Lastleg全量通过关闭此跨服务语义缺口。 + +2026-10-03 Admin报价选用与成本交互已推送`5641ea0`:可选来源版本与实际成交价分开,手填保持可用;公司成本切换清空付款草稿,迟到批量财务响应不覆盖新状态,车次成本未知新增保留原车次/键/载荷。合并后295测试文件2320项全通过、类型检查/构建通过,Gateway5项与索引1094项通过(`fleet-quote-cost-admin-{full,build}-r1.log`、`fleet-v2-final-gateway-r1.log`、`fleet-v2-agents-contract-r3.log`)。索引r1/r2超字符预算失败保留,收敛路由说明后r3通过,未提高门禁。旧Admin #496已在确认仍等待执行器且未进入stage后停止,终态ABORTED,证据`fleet-admin-496-superseded-20261003-r1.json`;不再等待该旧作业自动发布。当前前后端新批次均未发布健康,真实页面验收未完成。 + +2026-10-03 异常/报价第二批结构只读预检完成:`baiyue-firstleg/reports/fleet-v2-schema-preflight-20261003-r1.json`核对4个目标新列尚不存在及原退回唯一索引,保存拟执行DDL及两基线SHA,`executed=false`,尚未发送结构写入。其中`ll_delivery_order.signed_packages`冻结实际签收量,NULL不得推定全签。国内现有完成事件会把来源入仓单记作整票已签收,部分退回后余货签收不能复用该事实;生产者保护及明确待处理审计正在实现,混合履约的国内回写仍为未关闭项,不以待处理记录冒充跨服务完成。Jenkins节点仍离线,新增结构、源码及页面尚未发布。 + +2026-10-03 车辆异常数量增量尚未发布:异常专项修复分批实收累计与整单提前结案、取消退回恢复冻结状态,以及非仓库异常关闭不产生货物退回事实。两份SQL基线增加`ll_exception_order.return_context_json`、`ll_exception_return_item.received_packages`及批准量上界约束;历史退回关系改普通索引,活动单并发仍须派送锁内保证。13项初始化合同通过(`fleet-return-quantity-schema-contract-r1.log`),未执行TEST结构变更;该批Java/并发回归和部分退回后的剩余货物交接仍在处理,不能记为异常流程验收完成。 + +2026-10-03 客户订单首页分页缺陷已复现(待修复):当前代码 `firstLegOrders.ts#getOrdersForClient/load` 丢弃接口total/pages,只读取默认首200条,再与草稿拼接;页面 `FirstLegOrdersView.vue` 对该局部数组计算总数并再次本地分页。相同测试客户的真实默认首页显示206条(200条正式订单+6草稿),而只读统一订单接口返回5533条/28页,第二接口页另有200条,后续订单无法通过当前正常翻页访问。证据 `baiyue-firstleg/reports/client-order-pagination-readonly-20261003-r1.json`,客户范围已核对、会话退出。该问题优先按服务端分页及一致筛选修复,不用一次拉取28页代替合理分页,不改变报关列表已完成装柜筛选。 + +2026-10-03 F22 本地真实接口补验:发布节点12:59上海时间仍offline(`f22-publication-preflight-20261003-r2.json`),未触发新发布。临时本地Vite直接使用当前Client `78315873` 源码,经代理访问真实TEST Gateway;正常登录同一测试客户,在1920×1080、scale1下完成迟到资料失败、迟到海关结果成功、迟到海关结果失败三场景。均先暂停第一票真实响应,待第二票结果返回后再释放/失败第一票;第二票完整文字不变、没有串票或旧错误污染,事件无截断。延迟详情时显示骨架而非“暂无海关结果”,截图 `f22-local-late-detail-failure-pending-1920.png`。本轮visualizations下 `f22-local-late-detail-failure-r2.json`、`f22-local-late-clearance-{success,failure}.json`及`f22-local-verification-summary.json`保存证据;初次未观测到第二票请求的失败记录保留;该预览启动期亦发生依赖优化重载,未将首轮中断归为产品故障,后续显式等待弹框关闭并完成稳定运行后的取证。临时XHR拦截和视口已恢复、正常退出会话并关闭预览页,`f22-local-cleanup.json`为清理证据。本地通过不代表TEST已部署,Client正式服务仍为#380,78315873待节点恢复后发布并复验。 + +2026-10-03 报价选用接线准备:候选服务/持久化、起运仓城市时区解析及原仓目录16项Java定向全部通过,证据`baiyue-firstleg/reports/fleet-quote-booking-context-java-r2.log`;r1为PowerShell参数拆分错误,在测试运行前失败,原日志保留。外接预订`quote_source_json`已同步Lastleg/海外统一SQL,13项初始化合同通过;该新增列尚未在TEST执行,完整Booking及Admin接入仍由报价专项实施。仓资料复用已存在的内部详情接口,不新增Warehouse部署要求;本段仅为源码准备,不证明引用报价已在环境生效。 + +2026-10-03 车辆Admin交互修复:`3440f9d`已提交推送,尚未发布。修复外接预订关闭只读详情后列表编辑按钮残留禁用;报价新增/导入及实测记录识别HTTP200内A04xx明确拒绝,允许修正重提,网络结果未知继续保留原键与原载荷;CSV无效替换清空旧内容、忽略迟到文件读取。预订组件回归r1/r2保留失败,精确修复后r3五项通过;本批完整293文件2305项通过、类型检查/构建通过,Gateway5项通过,证据`baiyue-firstleg/reports/fleet-admin-ui-fixes-{full,build,gateway}-r1.log`。当前Jenkins节点阻塞未解除,未重复发起Admin发布,未据离线结果声明新版本真实页面通过。 + +2026-10-03 F22 加载空态修复待部署:迟到响应实测中的 firstText 证明,弹框预填列表资料后、详情GET尚未返回时,海关结果会提前显示“暂无海关结果”。Client `78315873d7d2db363bf0570fb7ed324b2b683589` 将结果骨架加载条件扩为详情或结果仍在请求;成功空数组才显示空态。新增延迟详情测试先失败后通过,相关32项检查、类型检查/构建及5项网关合同通过,日志 `baiyue-firstleg/reports/f22-result-loading-{red-20261003-r1,green-20261003-r2,build-20261003-r1,gateway-20261003-r1}.log`。首次green-r1的旧模板枚举断言已同步,保留原失败日志。源码已推送,未触发发布:2026-10-03 12:57上海时间直接Jenkins预检确认java-test-agent offline=true、temporarilyOffline=false、Connection was broken,Client最后构建仍#380/SUCCESS;证据 `f22-publication-preflight-20261003-r1.json`。不得将本地修复写成TEST已生效,也不为此重复排队或重启业务服务。 + +2026-10-03 F22 真实切单迟到成功响应验收:Client #380 在1920×1080、scale1使用同客户两票已完成资料。仅浏览器临时拦截第一票 NYEXX2609300079 资料GET的真实200响应;关闭后打开 NYEXX2609300076,待第二票资料及海关结果均200,再放行第一票响应。未截断事件顺序确认第二票结果响应先于第一票迟到响应;前后弹框完整文字相同,只含第二票入仓码,未额外查询第一票海关结果,共3条GET、无失败/取消。证据为本轮 visualizations 下 `f22-switch-race-success-response.json`(passed/released/cleared均true)。未修改业务数据或生产配置。 + +初次分步尝试超过页面15秒请求超时,出现ERR_ABORTED,记录 `f22-switch-race-attempt1.json`,不计作迟到成功响应通过。后续迟到失败场景因工具执行超时未完成取证,仍待验;其临时XHR拦截已通过空patterns明确清除,见 `f22-switch-race-attempt3-cleanup.json`。清理后第二票重新正常读取,与已验证文字完全一致,`f22-switch-race-recovery.json`及`f22-switch-race-restored-1920.png`保存恢复证据。此次只关闭“关旧票/开新票后旧资料成功响应不串票”,不覆盖旧海关结果、迟到失败响应或所有切单方式。 + +2026-10-03 F22 报关列表请求量收敛:Client `fc32d0b39053fd41edacd8427f867dafb9bfa158` 经 #380 精确发布,实际镜像及 healthy 已核对(`baiyue-firstleg/reports/f22-loaded-filter-{release,runtime}-20261003-r1.json`)。原测试客户有2618条退税订单、14个接口页,但符合报关条件的仅5条。现通过既有统一订单接口同时传 `taxMode=TAX_REFUND&loaded=true`,在服务端按真实完成装柜关联筛选,再保留客户端正式状态和归属校验;未修改API路径、后端或SQL。31项直接测试、类型检查/构建、5项网关合同通过。 + +只读对照 `f22-existing-pagination-probe-20261003-r2.json` 与 `f22-loaded-filter-compare-20261003-r2.json` 确认原5票及另一客户已完成根/子两票报关均可读取。初次对照r1保留失败:旧税制筛选从订单表得到1票,而该历史子单在履约摘要与报关中均为退税;r2以无税制过滤的完整两票客户列表及各票报关详情核对,得到完整2票,不补存量、不放宽客户归属。初次分页探针r1只读取首接口页后因仍有后续页而停止,r2才完成14页遍历。 + +新版真实浏览器在1920×1080、scale1显示5票(4票完成、1票报关中),刷新后仍完整、正文无横向溢出。未截断网络区间确认1次订单GET+5次资料GET,6次均200、无重复或额外分页。证据在本轮 `C:/Users/BY-OY/.codex/visualizations/2026/10/03/01a0d0da-130f-7d43-97b5-9c76abc1b5f1/` 的 `f22-loaded-filter-380-{network,page}.json`、`f22-loaded-filter-380-1920.png`。此前工具超时区间不用于计数。此项关闭该五票样本的请求量验证,不外推高量资料负载、真实页面第二页或网络分页失败恢复;现有客户分别仅5票/2票符合条件,200张误建草稿仍未提交。 + +2026-10-03 车辆四任务首批集成:后端精确提交 `cb6c54ffe551faea69c782778da3d8438ec46ea6`、Admin `0b5094dd8f594cee521db6fda229d4b63ff0f6ff`、海外PDA `a1a8bb4` 已推送。包含报价库、出车运营记录、车次成本、整批在途交接、维修/救援公司成本及独立付款凭证。PDA本批只读展示当前运输,不承载写入交接。普通用户已确认维修/救援属于公司车辆成本;不进入客户应收,保留原币并按月汇率折人民币,已付款不直接改写/作废。独立异常流程、部分召回/拆分交接仍未完成。 + +本地最终Lastleg 1222项为1220通过、2环境项跳过(`fleet-lastleg-full-java-r2.log`);Finance241项、File217项通过(`fleet-finance-file-full-java-r1.log`)。公共事件/指标/File/Finance编号32项、Lastleg传输/租约/重试20项、发布合同33项、依赖10项、初始化13项、Mapper318项及索引1094项通过。原Lastleg定向106项中的实体元数据错误、全量r1中PDA控制器反射将合成方法误判为写接口的失败日志保留;修复后分别定向和全量复验通过,不放宽PDA只读边界。Admin全量2297项中2296通过、1占位提示合同失败;修复三专项输入提示后该合同独立通过,构建通过,不将此前全量记为全绿。海外PDA178项、H5及App源码构建通过,未验证原生APK。 + +TEST结构已实际执行并独立回查:新增Lastleg7表、Finance3表及19项权限/平台管理员授权,两平台主体权限版本各加1,无删表、重置或旧业务数据回填。`baiyue-firstleg/reports/fleet-v1-schema-apply-20261003-r1.json`保留原失败:写入完成后验收器误将布尔granted与数值1比较;未重跑SQL。独立只读`fleet-v1-schema-audit-20261003-r1.json`为verified=true、31项复核,核对全部列、权限、授权及版本,并绑定原执行报告SHA。 + +File #144、Finance #121、Lastleg #200已确认终态ABORTED,均报Timeout waiting for agent to come back;Admin #496在确认仍排队、未进入执行阶段后主动停止,终态ABORTED(`fleet-admin-496-superseded-20261003-r1.json`)。原调度与节点证据保留于`fleet-v1-backend-deploy-20261003-r1.json`、`fleet-v1-admin-deploy-20261003-r1.json`、`fleet-v1-jenkins-offline-readonly-20261003-r1.txt`;其中早先的building/等待状态不再代表当前状态,不重发旧版本。海外PDA H5独立发布交由在途专项,其85文件发布包已准备,尚未上传资产、构建镜像或替换容器。尚无本批部署健康和真实业务通过结论;各专项仅在其对应服务就绪后使用独立会话/新样本并行验收。司机资格脚本提交`34cac9c4`的61项真实证据仍以以下单独记录为准,不替代本批整车验收。 + +2026-10-03 F32 同命令并发首次真实验收发现缺陷:`baiyue-firstleg/reports/f32-concurrent-command-20261003-r1.json` 在原本任务入库样本上同时发送两条相同幂等键和载荷的暂扣、解除命令。暂扣两响应均为版本15;解除一条成功、一条A0409,运行停止(30次业务请求、116项检查中1项失败),不能记为通过。LastlegOrderCommandService 在等待订单锁前读取归属,MySQL可重复读快照可能看不到前一事务刚提交的幂等记录;暂扣和人工节点两写入口已统一 READ_COMMITTED,仍保留订单行锁、版本和载荷校验。后端提交 `eadb431f`;16项定向Java测试、25项脚本检查、9项网关与脚本文档合同通过。首次失败后独立回查确认解除已生效、版本只增加一次,原键重放零漂移,再释放本轮独立1箱冻结;11次正式HTTP完成恢复及会话退出,证据 `f32-concurrent-recovery-20261003-r1.json`,原失败报告不改写。发布与新版复验结果以下续记为准。本场景不证明暂扣与PDA拣货的竞争顺序。 + +F32 新版续验:Lastleg #199 按精确提交 `eadb431f332c63d7993a333efa2055c3fbd013f5` 执行包含服务测试的构建并发布成功,实际容器镜像及 healthy 已核对(`baiyue-firstleg/reports/f32-concurrent-release-20261003-r1/{dispatch,runtime}.json`)。新版 `f32-concurrent-command-20261003-r2.json` 为68次业务HTTP、263项检查全部通过;首轮暂扣/解除各两请求时间区间重叠,同键响应一致且各只增加一个版本,第二轮继续正常暂扣/解除,另一业务1箱HOLD保留。原始余额和位置完整恢复,独立会话退出。该证据关闭已复现的同命令并发幂等冲突,不宣称MySQL事务锁等待顺序已直接观测,也不关闭暂扣与PDA拣货竞争场景。未改API/SQL或车辆生产代码,未部署工作区未提交的车辆改动。 + +2026-10-03 F22 页面分页自动化补充:Client测试提交 `1fe2cad` 直接执行实际 Vue setup 的21票样本,覆盖末页唯一订单及打开详情身份、每页条数变化回到第一页、末页筛选/无匹配/清空条件、刷新失败清空旧行及重试恢复有效页。资料列表与弹框共29项行为检查、类型检查及构建通过,日志 `baiyue-firstleg/reports/f22-pagination-behavior-tests-20261003-r1.log`、`f22-pagination-behavior-build-20261003-r1.log`。仅改测试,不另行发布客户端。这些是离线自动化证据,不替代真实TEST第二页订单、浏览器网络分页失败或200条接口页边界验收;不提交此前误建的200张草稿来凑样本。 + +2026-10-03 客户柜次摘要状态修复:Client `8e5fa0be` 经 #379 精确发布、实际镜像及 healthy 已核对。`summary.loading.status` 来源是入仓拣货任务,页面原将其作为“当前节点”并直接显示英文码;现明确显示“拣货状态”,映射待拣货/拣货中/拣货完成,空值为待更新,未知码不透出。订单主节点及业务状态不变。70项直接检查、类型检查/构建和5项网关合同通过;真实详情重新加载后显示“拣货状态/拣货中”,原船期保留。证据 `baiyue-firstleg/reports/client-picking-status-{release,runtime}-20261003-r1.json` 和本轮 visualizations 下 `client-picking-status-379.json`、`client-picking-status-379-1920.png`。页面使用9月27日历史样本,只证明展示语义修复;该旧样本装柜完成而拣货摘要仍为进行中,不作为9月30日已修复生产者的新版状态回归证据,不回填测试存量。 + +2026-10-03 司机证照专项真实回归:`baiyue-firstleg/reports/fleet-driver-qualification-20261003-r1.json` 为61/61通过、39次独立HTTP、0跳过。覆盖缺件审核拒绝、上传后待审核、打回重提、临近30天允许并提醒、到期日末允许及次日禁止、缺少/过去任务结束时间拒绝、非必需资质不阻断、关键字段/附件变更重审、旧版本拒绝、跨司机附件拒绝及历史附件字节一致;两名本轮受控司机最终停用,独立HTTP会话退出。新增正式入口可选模块`fleet-driver-qualification`及离线合同,27项直接与文档检查通过;未修改司机生产代码、未部署或执行SQL。 + +同轮Admin #493页面按1920×1080检查司机DR-7DD9D2DFB22744BC:过期、停用和待审核分别显示,操作历史展开及当前附件预览各1次GET且HTTP200,网络区间无截断;附件为受控1×1 PNG,已验证图片加载完成,不作为真实驾驶证内容视觉样本。证据在本任务2026/10/03 visualizations的`driver-license-history-network.json`、`driver-qualification-history-1920.png`及`driver-license-preview-1920.png`。第一次浏览器会话过期中断未计入成功,重新正常登录后取得上述证据;此项不代替整车发车或整模块人工视觉验收。 + +2026-10-03 F23 原柜人工改船页面补齐:Firstleg `65c12eaf` 经 #475 发布,Admin 功能 `8bae21de` 经 #494 发布、布局修正 `863ad524` 经 #495 发布。精确提交、实际镜像及 healthy 已核对,证据 `baiyue-firstleg/reports/f23-schedule-release-20261003-r1/` 的 dispatch/runtime 与 admin-layout-dispatch/admin-runtime。货柜详情用服务端选定的 currentPortScheduleId 打开原柜船期维护及历史,修改船名、航次、ETD/ETA 和原因;无变更时不提交。后端5项定向测试及网关5项通过,Admin直接41项、功能批次全量2235项与构建通过。最终布局批次本地构建被车辆任务尚未完成的 TripOperationsView ariaLabel 类型错误阻断;未修改或提交该车辆文件,干净源码 Jenkins #495 构建发布成功,不将共享工作区全量构建记为通过。 + +真实页面在 D0955 / TSTU0152125 完成改船,船期版本7→8,客户 NYEXX2609270004 详情同步新船名、航次和预计开船;完整报关资料/回执/确认/完成文件、原查询任务及唯一任务列表不变。随后正式接口恢复四个原字段,版本9;平台与客户页面均已确认恢复。原柜及订舱标识不变,不触发新报关或实际开船。HTTP证据 `baiyue-firstleg/reports/f23-ui-20261003-r1/{before,after,restore-command,restored}.json`。1920×1080、scale1 证据在 `C:/Users/BY-OY/.codex/visualizations/2026/10/03/01a0d0da-130f-7d43-97b5-9c76abc1b5f1/`:`f23-admin-final-1920.png`、`f23-client-changed-1920-r2.png`、`f23-client-restored.json`、`f23-final-ui-evidence.json`。最终弹框1000px,正文无横向溢出;未截断网络记录确认打开仅1次目标船期GET、未修改保存0请求。首次实际保存的网络事件因浏览器工具超时丢失,不能给出保存请求总数。此项覆盖既有船期编辑、历史、双端同步及资料保留;初次创建、只读账号真实页面、外部船司与全流程页面验收仍未全部覆盖。 + +2026-10-03 车辆运维独立回归与编辑修复:后端脚本提交 `ba7dcd39` 注册 `fleet-vehicle-care` 可选模块,不发布服务。首轮 `baiyue-firstleg/reports/fleet-vehicle-care-20261003-r1.json` 为21/23通过:真实响应省略null选填字段,旧验收器误判字段丢失;只读维修详情已确认项目/地点实际存在。r2六类业务均通过,诊断调用退出会话时遗漏refreshToken导致整报告66/67,原失败报告保留。修正调用并增加正金额及事件历史检查后的r3为75/75、43次请求、0跳过;保养/加油照片幂等与下载字节、旧版本拒绝、四类事件项目地点及处理历史、按车按类型分页、跨车读取/修改/图片拒绝、主档不被改写、维修125.50USD及救援零金额不冒充付款均通过,两辆专用车辆停用,本轮会话退出。36项离线脚本检查通过;不据此声明费用已入Finance。 + +运维真实页面另发现并修复:旧Admin编辑维修记录时,NON_NULL响应未返回distanceUnit/verificationStatus,表单残留保养默认值,保存返回A0400“处理记录不能混入保养、加油或核验字段”;原样本版本保持1,失败截图及只读回查保留。Admin `1a52cc0817e68c967a71469f0c0528e4ffddaac4` 对空字段完整初始化,并按同一表单快照判断是否更正;同时包含`fa82710`备注提示修正。2个用例先失败后通过,模块92项及类型检查通过;#493精确发布healthy。使用同一维修记录VR-F7ACCB41C8EB4040完成页面更正,版本只增加为2,历史共3条,金额及未关联财务状态保留。1920×1080、scale1页面截图`vehicle-care-edit-fixed-1920.png`;未截断网络区间证明维修页签1次列表GET,打开并修改保存1次详情GET+1次PUT,未修改保存只有1次详情GET、0写入。证据为本轮visualizations的`vehicle-care-{repair,edit,no-change}-network.json`及`baiyue-firstleg/reports/fleet-vehicle-care-browser-save-fixed-20261003.json`。财务归属仍需区分公司车辆成本与客户分摊,未修改Finance、数据库Schema或客户账单;其余车辆产品范围继续实施。 + +车辆详情页面补验:Admin `8c462cef17ab494abca37bf9916cdaa082c31564` 只补客户名称缺失时显示“—”,直接 11 项检查通过,#492 精确发布并 healthy。实际页面重新加载后,外接派送的缺失客户名称已显示“—”,其余两张派送及换车历史仍可见;最终截图 `C:/Users/BY-OY/.codex/visualizations/2026/10/03/01a0f19d-3f0b-7ae0-a860-c0d1d2e84475/vehicle-fulfillment-492-1920.png`。浏览器调试调用曾超时,恢复后取得1920×1080页面证据;未取得完整浏览器请求事件计数,仍不将自动截图认定为整模块人工验收通过。 + +2026-10-03 车辆详情履约查询增量:后端 `30559fd4` 接入逐车派送和改派历史,首次 Lastleg #197 发布后真实派送查询出现 S0500;Docker 日志定位为排车关联表与派送表客户字段字符集排序规则不同。`d4d5d7907033d7b21edcc64ba815ddb1ecddff25` 改为客户标识按字节精确比较,Lastleg #198 精确发布、容器 healthy;不改 Schema、不回填业务记录。Admin `f7b84ea88769d395438fef777ee97f3e32bfe9fe` 经 #491 精确发布且 healthy。后端新增 8 项定向检查、完整 Lastleg 1151 项(1149 通过、2 环境项跳过)、Admin 2232 项及类型检查/构建通过;SQL 修正后定向 8 项和 Jenkins 构建通过。实际原车次 TR-C285849ACE804E1B 的 9 次只读 GET 核对:发车车辆 3 张已签收派送,原车辆 0 张派送,两车分别保留换入/换出版本22、相同两张排车成员,逐页无重复且越界空页;size=101 返回标准 A0422。原 S0500、诊断器误把分页字符串当数字及误预期 A0400 的报告均保留,最终独立复核 `baiyue-firstleg/reports/vehicle-fulfillment-release-20261003-r1/readonly-http-audit.json` 为 verified=true,绑定原 HTTP 报告 SHA-256,不改写失败报告。浏览器重新加载后两分区数据可见,1920×1080截图 `vehicle-fulfillment-491-1920.png` 已保存;长名称按单元格省略展示,未据此关闭全模块人工验收或声明浏览器请求量验证完成。操作人姓名未进入既有快照,仍显示“—”;维修费用财务关联、车次运营成本、报价库及在途异常剩余范围未完成。 + +2026-10-03 F32 验收脚本补充:提交 `dc05eb3f` 已推送,正式暂扣脚本覆盖两轮暂扣/解除、独立冻结保留、原请求重放、异载荷及人工计划拒绝后的完整库存不变,并在复验前清除上次成功标记。真实接口计费字段为 `heldChargeable`,已同步脚本及测试模型。`baiyue-firstleg/reports/f32-formal-resume-20261003-r1.json` 保留首次字段不匹配失败及成功恢复证据;r2 在原本任务实收样本上定向续验,66 个业务请求、259 项检查通过,库存恢复、会话退出已确认。此次不是新全链造数或 TEST MySQL/PDA 并发验收。直接合同与网关检查 28/28,通过后只提交两份脚本文件,无服务部署。 + +更新日期:2026-10-02。当前只有 test,没有开发/生产环境。本文定义目标部署、切换与验收;具体路由、认证、投递契约唯一见[统一认证与服务通信契约](统一认证与服务通信契约.md)。 状态:单 TEST 统一架构已实际部署,13 个保留服务与两套 PDA H5 均健康;单 Nacos 命名空间、统一认证及八类直接投递已运行。三轮真实 HTTP 验收 7149 项断言通过,目标装柜事件 ACK 丢失→12 次失败 DEAD→人工 retry→DUPLICATE/PUBLISHED 已验证并恢复直连。双 PDA 基础浏览器登录、仓库显示与退出已有证据。整体验收尚未完成:核心业务页面全流程、可靠性矩阵中尚无对应真实运行证据的场景仍待补齐;Android 真机按用户决定后置。 +## 当前未关闭项(2026-10-04 最新复核) + +本节内 10 月 3 日 Jenkins 离线记录保留为历史故障证据,不代表当前仍阻塞。10 月 4 日本轮发布前重新查询:`java-test-agent` 在线、执行器 1 个且空闲,队列为空,Admin 最近 #507 SUCCESS。当前业务未关闭项以下表为准;旧失败报告保留,不把后来补验结果改写进原报告。 + +### 2026-10-03 Jenkins 内存回收与残留构建处置 + +用户主机证据确认代理cgroup MemoryHigh=4GiB、MemoryMax=6GiB,current约4GiB、匿名内存约3.97GiB、文件页仅约24MiB,high累计2209403、oom/oom_kill=0,六个构建/测试Java进程持续major fault。File #144、Finance #121、Lastleg #200于12:41同时启动Maven,12:45代理开始掉线、12:58前后控制端ABORTED,但主机子进程存活近5小时;高读盘来自代理服务cgroup,不是对应业务容器。用户停止 `jenkins-test-agent.service` 后MainPID=0,六PID全部退出,随后vmstat连续样本b=0、bi=0、wa=0,确认本次拥堵解除;服务failed终态不代表残留进程仍在。 + +17:50 已通过Jenkins配置API将测试代理执行器3→1,回读确认仅numExecutors变化,代理仍offline、运行任务0;报告 `reports/jenkins-executor-limit-20261003-r1.json`。源码新增两层构建互斥、Maven/测试JVM分别限额及宿主机超时,具体规则见部署指南和 `deploy/scripts/run-ci-maven.sh`;不是仅修改同Job并发设置。Surefire采用父进程心跳检查,保留JaCoCo;初版native+ping在Windows误判父进程退出,r1失败保留,改ping后common-core 21项通过。File/Finance/Lastleg及公共依赖单次串行回归总1906项、1904通过、2环境项跳过、0失败/错误,耗时2分钟,日志 `reports/ci-maven-three-services-20261003-r1.log`;Node合同20项及Shell语法通过。两个Jenkinsfile均经真实控制器验证成功,`reports/ci-maven-jenkins-validation-20261003-r2.json`;r1为验证请求表单格式错误,不是流水线语法失败。 + +执行器设置已生效;新源码必须从包含防护的提交构建才生效。尚未启动代理、未触发构建/部署,Windows本地通过不证明Linux节点实际flock互斥、断连后的进程组终止或完整运行峰值;代理恢复后先用一个受保护构建验证这些运行边界,不恢复三路并发,不提高MemoryHigh掩盖问题。全流程部署及业务验收仍未完成。 + +18:34 环境恢复及首个受保护构建完成:用户已解除17个当前业务容器的Paused状态,逐个回传healthy;Jenkins代理恢复online、temporarilyOffline=false、执行器1,独立客户登录/资料读取/退出均HTTP200。File #145以精确提交 `4ff55ba3e08c7fe0c6e04832fa95ebb680c76b8c`、DEPLOY=false、SKIP_TESTS=false串行构建,约73秒SUCCESS,File服务220项测试通过,镜像构建完成且部署阶段明确跳过。实际日志证明跨Job锁和受限入口执行,Linux进程采样证明仅一个Maven(Xmx768m)和一个测试JVM(Xmx1024m),代理组采样内存约1.50GiB,memory.events的high/max/oom始终0、压力计数0;结束后cgroup只剩代理主Java进程,没有遗留构建/测试进程。报告目录 `reports/ci-resource-test-20261003-r1/` 包含dispatch、构建观察、前后资源和verification。该证据关闭正常构建路径的服务器预算生效及结束清理,不把采样值当作精确峰值,也未强制断连或超时故障演练。环境离线阻断已经解除,分页和业务新版本仍须后续正式部署验收,不能用本次不部署构建代替。 + +### 17:22 全流程总目标执行阻断(18:34 环境离线已解除,其他缺口仍保留) + +目标仍为 F01-F40 及车辆管理的完整核对、修复、匹配部署及真实验收,未完成。历史 `reports/fba-goal-blocked-audit-20261003-r1.json` 只证明当时代理离线且无活动部署;后续代理恢复及发布已在本节和各专项证据记录。不为维持运行重复造数、重跑已通过矩阵或创建新任务。 + +| 未关闭范围 | 继续所需条件及边界 | +|---|---| +| F21/F22 实装范围一致性(本轮实际发现) | 原柜 `TSTU8545690` 实际拣装、尾程与在途库存均 13,完成清单曾混入 SKIPPED/0 行而显示 14。Firstleg #478 已修复完成清单列表/详情/汇总,原柜 18 项回查通过、页面为 12 条实际 SKU 明细;报关实际箱数经 #479 修为 13,原柜 24 项发布后只读检查通过。另外实查短拣行 2 箱减为 1 箱后件数/重量/体积未同步缩减;全 PARTIAL 完成预检会错误拒绝,混合柜会漏验尚未结算客户。三项生产修复、只读标签预检及精确触发器约束已随 #479 匹配发布,仍需全新合法短拣样本验证。不得以已部署的清单修复推定其余修复已生效,不回填旧事件或库存 | +| F33 已有库存转运与本票换标 | 原票 `WT-WH-20261002-430594` 的可用来源已有 3 箱,另 1 箱为其他换标单 HOLD。总控为本次合成测试明确纽约海外仓接收、ABE4 业务目的仓不变,纽约主档已只读确认有效。但本票 needRelabel=true、要求箱唛及 SKU 换标,当前仍 PENDING_BINDING、无关联作业/客户确认;先前已有库存路径缺少本票换标接线和门禁,已在 Lastleg #207 修复发布;原票只读回查仍未分配,前端来源选择及真实换标/客户确认/转运尚待完成。原失败依据 `reports/fba-remaining-nodes-20261004/transfer/relabel-final-evidence.json` 保留,最新代码、结构和发布证据见下方 F33 发布段,不借来货重收或其他换标单替代。 | +| F33 废弃审核与扣减 | Admin #508 已补齐并实际验证待审核废弃行的专用权限审核入口;关闭/取消/空白驳回校验通过,原测试申请实际驳回后释放 1 箱且库存余额与流水不变。正式文档要求审核即扣减,现有实现为批准后 PDA 确认实际数量扣减;等待业务时点答复,批准、最终逐箱扣减及重放尚未验,不把中性审核入口视为全流程关闭 | +| F24 外部船司及 PDA 公网入口 | 等待有效船司测试输入及两个 PDA 正式测试入口;本机同版H5/人工船节点证据保留,不能代替外部链路 | +| 可继续自主补证的明确分支 | F23.2 实际进港节点的 Admin 保存及两端展示;F25 完整 DO/PU、实际提柜及提柜邮件链的既有证据核对;F27 计划异常重试页面;F33 原已有库存转运 `WT-WH-20261002-430594` 本票最终履约;F34 多车多目的仓完整操作页面(司机双详情缓存回访已另行关闭)。这里列的是当前证据不足,不等于均发现代码失败,也不要求重造已通过主链 | +| 人工页面及设备验收 | 功能 DOM、HTTP 和自动截图只按各报告的操作范围证明;完整人工 1920×1080、100% 缩放验收及 Android 真机/相机未全部确认,不以容器 healthy 替代 | +| 尚未取得的专项证据 | F22 超过 200 票时后台读取第二批的真实传输失败仅有离线覆盖;车辆运营原写入、第一次分批实收的完整网络计数未留存。这些是覆盖边界,不是已证实业务失败,不通过重复造数把它们自动扩大为新的功能范围 | + +已从待办移除的范围:Firstleg #477 / Order #181 / Client #382 的分页和客户隔离、F06 同票提交响应丢失恢复、F23 首次登记/只读/改船、F32 暂扣与拣货实际双等待图及重放均已有独立证据。F22 **显示第二页**已由 11 票实际样本、准确详情、第二页刷新失败清空旧行及重试恢复完成(`reports/customs-pagination-ui-root-20261004-r1/final-evidence.json`,22 项只读核验);不要与每批 200 票的后台读取分页混淆。车辆两个 CSV 的实际落盘已补证(`reports/fleet-browser-downloads-root-20261004-r1/final-evidence.json`),不再因原浏览器观察超时列为导出失败。 + +恢复条件满足后沿用已有提交、脚本和失败/成功证据继续,总目标不缩减为本地测试通过或局部验收完成。 + +2026-10-04 本轮部分装柜修复证据:`reports/customs-actual-green-20261004-r2.log` 53 项通过;`reports/partial-loading-metrics-green-20261004-r2.log` 35 项通过;`reports/loading-preflight-green-20261004-r2.log` 107 项中 102 通过、5 项既有禁用、0 失败/错误,其中新增真实 MyBatis/H2 8 项通过。对应红灯报告保留,预检仍在全部客户结算前执行,预测标签不锁行、不插入或分配持久 ID,最终发布仍拒绝未结算实际项。H2 及 SQL 合同不等于 MySQL 触发器或真实完成链通过,独立头程任务正在复核这批未提交修改。 + +触发器实际只读预检 `reports/partial-cargo-trigger-preflight-20261004-r1.json` 的 5 项检查通过:目标为 Firstleg schema,原触发器未变化,表/时机/事件正确,候选引用列及客服备注列存在。现库仍保留只允许仓库备注的旧定义,当前源码基线已允许平台/仓库/客服三类备注独立更新;本次候选同时收敛到该既有基线及按实际拣货比例结算的严格保护。模块基线、统一空库定义与 `V7__settle_partial_loaded_cargo.sql` 保持相同触发器;受控 V7 已在短暂停止 Firstleg 后成功执行并回读,报告 `reports/partial-cargo-trigger-apply-20261004-r1.json` 的规范化定义 SHA-256 为 `b8069395a6e5cb6ec81f654068568f4a0c48d165cb9a2af4c230bacb86587dd9`;只替换这一条保护触发器,没有重放整库初始化或 V1–V6,没有业务行写入或历史补偿。对应代码及 SQL 16 文件已提交推送 `7319fba35afa38383d09115f054a9d71ef81b6f8`,Firstleg #479 SUCCESS,精确源码 `7319fba3`、有界 Maven 和容器 healthy 已核对;服务测试 1585 项、0 失败/错误、9 项既有跳过,报告 `reports/partial-cargo-firstleg-deploy-20261004-r1.json`。停服期间只替换这条触发器,匹配服务已恢复;不能以发布成功认定全部业务完成。发布后原柜只读验证 `reports/partial-cargo-postdeploy-verification-20261004-r1.json` 24/24 通过:报关 actualBoxCount 唯一差异为 14→13,完整 PDA、计划、尾程、入仓计划、余额、流水、文件及版本保持不变;会话已退出。原短拣历史件数和重量没有回填,这份回查不验证新生成实装指标;新两柜验证窗口已交头程任务。独立复核补齐标签回退的原入仓总箱数分母,Java 214 项中 209 通过、5 既有禁用,Gateway 5 项通过;冻结清单 `reports/partial-loading-actual-review-handoff-20261004-r1.json`。仍需新样本实际完成及事件/下游核验。 + +2026-10-04 独立节点审计 `reports/fba-remaining-nodes-20261004/evidence-r4.json` 保存原报告 JSON pointer/SHA 及 9 次真实只读会话请求,正常退出:F25 原柜 `TSTU5866594` 已 EMPTY_RETURNED,DO 文件已上传、PU 缺失、邮件 0 条;提柜时间由卸柜时间回退显示,历史没有独立实际提柜动作,因此不能关闭完整提柜链。F27 原计划 `IP-ABE4-20261002-218497` 已 COMPLETED、无资源失败,不证明异常重试。F33 原票 `WT-WH-20261002-430594` 仍 APPROVED、1 箱、0 分配、actualShipAt=null,两次读取一致;需沿原票完成履约,不以其他来货样本替代。上述是已确认的剩余验收状态,尚未据此认定新的生产代码缺陷。 + +2026-10-04 19:11(Asia/Shanghai)发布后资源只读核验 `reports/partial-cargo-environment-after-20261004-r1.json`:Firstleg 容器 running/healthy、镜像标签 `7319fba35afa`;Jenkins 代理 memory.current=808042496 字节,memory.high=4GiB、memory.max=6GiB,high/max/oom/oom_kill 当前计数均 0;主机可用内存 7061136kB,IO pressure avg10=0.00、avg60=0.01,内存 pressure avg10/60/300 均 0.00。此为本次发布后的实际采样,不能推定永久不会发生资源压力。 + +2026-10-04 F25 DO 合同校正 `reports/f25-do-contract-reconciliation-20261004-r1.json`:上述原柜的 DO 上传、归属/哈希/版本、同键重放、异载荷拒绝和正式回读共 7 项既有检查全部通过;现行 Controller 仅有 DO 上传/读取/下载,没有 DO 单独完成命令,独立 complete 属于目的港清关资料。因此 DO 的 completed=false 不构成“待完成”缺陷,不新增完成按钮或额外状态。F25 仍缺 PU、独立实际提柜及邮件链证据。容器环境邮件开关为 true 且配置项存在(`reports/f25-mail-runtime-preflight-20261004-r1.json`),不代表 SMTP 发送已验;实际向外发送须用户提供受控测试邮箱并明确授权,当前没有试发邮件。 + +2026-10-04 司机双详情缓存实际回访已关闭:`reports/fleet-pda-remaining-20261004/final-evidence.json` 及总控 `root-verification.json` 的 22 份文件 SHA 均一致;A→列表→B→列表→A 的可见身份、3/15 条历史和未截断网络 8 次 GET 全部通过(3 详情、3 历史、2 列表),无 undefined 请求或串号。F34 原双目的地排车 `DS-WH-20261002-179265` 的列表/详情 2 托 5 箱及 ABE4/ABE8 一致,尚不证明多车真实编排。浏览器初次退出 HTTP401 被保留,正常刷新后正式撤销200,独立会话/tab/视口已清理。该实际观察另复现 Admin 过期 Access 退出不能撤销 Refresh 的缺陷,撤销专用刷新及后续新登录隔离修复已提交推送 Admin `d3a2671fd79dce17f4c3eeb41eb61ef7fe95dcd0`,6 项红灯复现后定向 32 项、完整 299 文件 2392 项、类型/build 和 Gateway 5 项通过。Admin #509 已 SUCCESS/Healthy、精确 checkout d3a2671,发布证据 `reports/admin-expired-logout-deploy-20261004-r1.json`;实际容器标签 d3a2671fd79d,首页引用的 auth 分块已核对新撤销逻辑(`reports/admin-expired-logout-runtime-20261004-r2.json`),首个仅查入口 JS 的阴性探针保留。页面任务原子操作前已停在零写检查点,发布后继续原柜。新版实际页面退出及过期分支证据仍分别待核对,不用静态资产证明运行行为。 + +2026-10-04 新两柜短拣执行入口已交付,首次新样本 `NYEXX2610040025` 在图片上传返回 S0500 后停止,保留原订单/客户和全部请求。精确 File 日志 `reports/partial-loading-file-upload-diagnostic-20261004-r1.json` 定位为验收脚本将文件描述对象按 application/json 发送,Controller 尚未进入;不是存储或 OCR 故障。专项修正 multipart 适配、通过实际本地 HTTP Content-Type/boundary/字节测试,并获准沿原 WAIT_MEASURE/DRAFT 无称重样本显式续跑;不重造原票、不部署 File,原失败记录不改写。两柜完成/下游结果仍待新证据。 + +2026-10-04 F27 现存失败候选只读复核:`reports/f27-conversion-runtime-candidates-20261004-r1.json` 确认转换命令 530 个 COMPLETED、4 个 FAILED;四柜当前正式预览均 READY、未建立计划,不是资源已提交后的 RESOURCE_PENDING。选定原合成柜 `TSTU5467402` 的 2 票/4 箱/4 来源托盘,原失败是预计到仓时间缺失(`reports/f27-conversion-original-error-20261004-r1.json`),由页面任务经正式预计到仓和转换入口恢复;TEST 操作时间明确选择 2026-10-05 10:00,若已有合法值则不覆盖。Admin 发布前零业务写入检查点已确认,#509 后原会话刷新继续。此分支只证明已失败命令在补齐前置后的页面恢复,不能替代远端资源预留/确认失败后的重试、补偿和无重复资源证据。 + +2026-10-04 F27 旧柜页面前置核对结束:`reports/f27-conversion-recovery-ui-20261004-r1/final-evidence.json`/总控哈希复核确认 TSTU5467402/D0293 仍 WAIT_CUSTOMS、资料缺失、离仓 NOT_CREATED,海外 ACTIVE/HISTORY 都 0 条,不能经清关提柜页面写 ETA。9 项回查订单/柜/ETA/计划/库存和流水未变,无 ETA/转换/重放命令,保留旧失败,不补造海外资格;后续使用合法推进的新柜验证对应分支,不将新样本结果冒充旧失败已恢复。#509 实际普通 UI 退出仅一次 POST200、登录页/会话/tab/视口清理已确认;未自然触发401,因此实际过期分支仍仅有红绿测试和代码部署证明。 + +2026-10-04 F33 后端及结构已匹配发布:`76f02d8d` 接通已有库存来源冻结、本票换标、客户确认后的实际 SKU 分配及转运出库/收货,130 项定向 Java、5 项 Gateway、4 项 Node 和 OpenAPI 校验通过。受控 `V8__bind_stock_transfer_relabel_sources.sql` 两条 ALTER 已执行,增加三列、历史位置索引改普通索引,活动占用唯一约束保留;0 条原分配和 117 条原绑定的前后内容 SHA 完全一致,无业务回填(`reports/stock-transfer-schema-apply-20261004-r1.json`)。Lastleg #206 全量构建发现平台接口说明插入客户分组,客户隔离合同切片误读 customerId;保留失败报告,仅调整分组为 `1302275b715a8391c1b857d4af8c83e037794ef2`,原测试不变。#207 全量 1337 项、0 失败/错误、2 项既有跳过,SUCCESS/healthy,精确镜像 `1302275b715a` 已核对(`reports/stock-transfer-lastleg-deploy-20261004-r2.json`、`reports/stock-transfer-runtime-after-20261004-r1.json`)。原票发布后 7 次真实会话请求正常退出;详情、余额、流水、来源及位置五类完整快照与原 preflight-r2 一致,仍 APPROVED/0 分配、3 可用及另 1 HOLD(`reports/stock-transfer-postdeploy-verification-20261004-r1.json`)。Admin来源分配与关联换标入口已提交 `939cc11d7b70058758831cd566410e1a0386e99b`,43项定向及301文件2428项全量、TEST类型/构建通过。#510 SUCCESS/healthy并核对精确checkout(`reports/f33-admin-deploy-20261004-r1.json`);明确库存冲突提供重新选择,网络/5xx/身份未知则保留原请求。9文件冻结与旧失败见 `reports/f33-transfer-relabel-ui-20261004-r1/reselection-release-final-evidence.json`。原票页面分配、真实换标、客户确认和最终转运仍在执行,不以部署关闭F33。 + +2026-10-04 新短拣 A 柜 D1440 的真实完成尚失败:首次 worker 在 WAREHOUSE_SETTLEMENT 报“PDA任务不包含指定入库单”,第二次在 OWNER_READY 报“入库单尚未关联有效柜次装柜计划”;两实装 owner checkpoint 已 INBOUND_COMPLETED,全跳拣 owner 仍 READY。证据 `reports/partial-owner-ready-worker-20261004-r1.json`、`reports/partial-owner-ready-checkpoint-20261004-r1.json`,没有 SQL 回填。修复 `ea9732749a9215e660530035c40afc69fe56a5ae` 的6文件仅让正实拣 PICKED/PARTIAL 来源进入完成 owner 集合,原 INBOUND_COMPLETED 检查点恢复和 LOADED 门禁保留;定向115项中110通过/5既有禁用、Gateway5通过。Firstleg #480 SUCCESS/healthy,精确镜像ea9732749a92,服务全量1593项、0失败/错误、9既有跳过(`reports/loading-owner-firstleg-deploy-20261004-r1.json`)。原A在 `reports/partial-loading-actual-PARTIAL-ACTUAL-20261004-A-completion-r3/report.json` 中一次正式原载荷恢复后,原commandId不变、attempt2→3、任务COMPLETED,完成清单和报关实际数3箱。原报告因库存列表聚合口径断言失败仍保留success=false,后续只读回查逐余额确认两票在途2+1箱和各一条初始流水、全跳拣来源无订单/库存。总控 `reports/partial-A-completion-event-proof-20261004-r1.json` 5项通过:只两个实装客户事件、均PUBLISHED/retry0、各唯一APPLIED尝试,Lastleg Inbox均PROCESSED且客户/hash一致;没有再次complete或SQL补造。既有B续跑继续交专项,船节点保持零推进。 + +PDA 入口补查:TEST 验收配置未定义 PDA 公网地址,服务器存在宝塔 Nginx 主进程,但当前执行账号不能读取 vhost 目录,现有 sudo 只读检查也未获执行(`reports/pda-public-entry-host-discovery-20261004-r2.json`、`reports/pda-public-entry-proxy-read-20261004-r1.json`)。用户重新启动本机 H5 后,总控已浏览器确认 `localhost:5175` 国内 PDA、`localhost:5176` 海外 PDA,两个登录页正常;`reports/pda-local-h5-entry-check-20261004-r2.json` 替代首次 5176/5177 都为海外端的入口观察。项目代理配置与 TEST 地址一致。后续 `reports/pda-local-h5-ui-20261004-r1/evidence.json` 已验证国内正式登录、义乌仓查询、28条待拣任务列表和退出共4次HTTP200,页面A柜完成失败/B柜拣货中与服务端一致;未领取、重试或提交业务。海外旧验收账号返回“账号已禁用”,另以本轮独立作业账号实际登录、读取洛杉矶仓主档和换标列表,4次HTTP200且无业务写入。发现主动退出仅清本地、没有/auth/logout请求;`reports/pda-local-h5-ui-20261004-r1/overseas-ready-evidence.json` 保留失败。已通过正式IAM状态接口临时停用该独立成员以清理会话,不改旧账号;退出修复 `b247b0cbb4b01d736daef788e254b3f52a12290a` 已提交,42项定向、192项全量Node与H5构建通过。TEST海外静态容器已发布 `h5-20261004-46b99b21c7c8`,健康及实际首页hash通过,国内容器imageId保持不变(`reports/pda-logout-release-20261004-r1/dispatch.json`、`reports/pda-logout-runtime-after-20261004-r1.json`);本机用户开发进程未修改。独立账号已正式恢复ACTIVE供修复后UI验证,尚不能声明新版真实退出及旧Access/Refresh拒绝通过。CDP要求390×848但IAB截图出现额外空白,不计精确视口视觉验收;公网反代和Android硬件证据仍未补齐。 + +### F01–F40 与车辆管理的逐段证据对照(2026-10-04) + +本次按冻结矩阵与六份阶段文档重新核对原始报告步骤,形成后端 `reports/node-completion-audit-root-20261004-r1.json`:F01–F40 无遗漏映射,车辆四类能力分别列证,39 份引用文件保存 SHA-256。下表的“已证明”仅指列明的场景,不表示该段所有页面、设备和异常分支全部验收。`admin-full-current-20261002-r4.json` 整体仍为 15499/15500、success=false;其中成功模块可以支持相应场景,不能把原报告改称全绿。 + +| 节点 | 已证明的实际业务范围 | 当前判断与明确边界 | +|---|---|---| +| F01–F07 | 企业资格、正式下单/导入、草稿版本、提交重放、资质/资金/渠道门禁、三依赖故障恢复、平台审核及正式入库生成 | HTTP 主链及提交响应丢失页面恢复有证据;人工逐页结论另列。阶段一 F01 的补资料是企业资料维护后审核,不因矩阵泛称“补件”新增订单退回状态需求 | +| F08–F13 | 称重图片与人工确认、测量审核、费用发送与客户主动确认、国内扣货/解除、一件代发清点/封托及重复操作门禁 | HTTP/服务事实有证据;不把自动发布费用当客户确认,不把普通 FBA 强制改成一件代发清点;对应人工页面与设备范围另列 | +| F14–F21 | 真实柜号/订舱、预装、拖车、唯一 PDA 任务、原子拣货、照片/铅封、实际 LOADED 及完成重放 | 主链有证据,11 票同柜又发现完成清单把跳过 1 箱计入的 F21 投影错误,见当前未关闭项;国内 PDA 公网与扫码/取证仍待验 | +| F22.1–F22.8 | 同柜两税客加买单隔离、资料上传冻结、首次发送、回执替换/打回/确认、全柜发送执行、正式申报、完成文件齐全门禁、四类人工海关异常及解除 | 核心 HTTP 和指定页面通过;报关行独立接收/回执轮次属于后续增强;11 票显示第二页已通过,后台超过 200 票第二批故障仅离线覆盖 | +| F23.1–F23.3 | 报关齐全后唯一离仓任务、实际进港 HTTP、原柜人工改船/恢复、首次登记、只读身份页面 | F23.2 实际进港的页面保存与平台/客户投影需补证;不能把船期编辑页面当成实际进港操作 | +| F24–F25 | 实际船节点逐步推进、预计节点不推进实际;清关文件/DO 上传及锁定、车队选择预约、还空状态及历史 | 外部船司输入仍缺;F25 的全部 DO/PU、实际提柜和邮件链需进一步核对已有证据,不由 PICKUP_READY 一个节点推定全部完成 | +| F26–F27 | 装柜事件创建尾程、原事件 ACK 丢失/DEAD/恢复且零重复;按柜逐票计划、托盘资源及原命令重放 | 本轮 11 个 FBA 来源已由 68 项只读对账补齐映射与收货前在途归属;计划异常重试实际页面尚未定位证据 | +| F28–F32 | 六柜不同收货模式、三类签收照片、四阶段完整库存守恒、卸柜事件恢复、移库/拆合托/盘点、暂扣与拣货实际竞争 | 业务 HTTP 有对应步骤;PDA 公网和真机不由这些报告证明。大批量性能未测不自动升级为本轮新功能缺陷 | +| F33 | 换标审核→作业→返工→再次作业→客户确认/完成;转运审核及来货实收;废弃锁箱与驳回释放、新 Admin 审核入口 | 原已有库存转运本票最终履约尚未定位证据;废弃批准和最终扣减待时点选择,不能用驳回通过关闭该分支 | +| F34–F38 | 候选/草稿锁/正式排车、多目的仓、费用覆盖、自有与外接同车、跨客户原子发车与故障恢复、唯一扣库及逐单签收 | 核心 HTTP 链有证据;多车多目的仓实际页面和 PDA 公网/设备单列,单车样本不能替代所有页面 | +| F39–F40 | 实退 2 箱后新车重派/实签,来源完成事件与 Firstleg 回写;两批各 1 箱实收页面;根先签、子先签、根签余量取消三种 TAX 整单收口 | 退回页面样本与 FBA 完成事件样本分别引用;有合法 WAIT_SPLIT 子单的根仍 PROCESSING 是正确门禁,不伪称已完成;第一批实收原键重放未留证 | + +| 车辆能力 | 已证明的范围 | 仍须保留的边界 | +|---|---|---| +| 司机、车辆详情与运维 | 司机资格真实 61 项;30/31 天、到期截止、DST、延长任务由 7 项 Java 明确覆盖;六类运维 75 项含跨车隔离;司机创建/上传/预览/停用与车辆履约查询有页面或 HTTP 证据 | 双司机详情缓存切换已由本节 8 次 GET/DOM 及独立回读关闭;迟到响应现场故障另列,合成 PNG 不证明真实证件内容 | +| 报价与维修/救援公司费用 | 报价空值/零价、整批导入回滚/重放 89 项,预订选价 33 项;公司成本 203 项包含原币折算、独立入账、两笔付款、重放及客户费用池隔离 | 公司付款凭证新标签页像素查看仍待人工确认,不绕过浏览器限制;公司成本不冒充客户应收 | +| 实际行程、运营与成本 | 自有/外接和跨客户实运、原子发车/恢复、签收结案及车辆/司机分别释放;同路线按实际托位分摊;实际成本登记/更正、里程油耗、历史预览及两份 CSV 落盘 | 运营原写入准确请求计数未留存;多卸货站来源成本分摊当前明确 UNAVAILABLE,不声称所有路线都能自动分摊 | +| 在途交接、退回与重派 | 整批剩余货物交接/PDA 当前资源只读、真实退回重派及来源完成、部分退回分批实收 | 已拣未发撤拣/退仓撤回、余货拆给多车没有被当前退回链证明;按既定首版范围单列,不能由新增设想自动承诺拆单能力 | + +本次核对没有发现“某整段主链完全不存在”的证据,但发现了上表列明的取证缺口。故当前仍不能回答“每个节点、每个分支都已完工”;下一步应沿这些具体分支补证或修复,不再用“其余四端页面”作为无边界待办。 + +F26 后续只读补证:直接复用 11 票退税同柜样本,未生成新业务数据。`reports/f26-loaded-transit-verification-20261004-r2.json` 68 项通过:PDA 当前 COMPLETED 的每条正实拣明细按 `loadingPlanItemId + inboundDetailId + inboundId` 唯一关联来源;11 个来源分别只有一条尾程单、共享同一业务尾程号,全部 PENDING_ASSIGNMENT,客户/仓/柜/入仓码归属一致;逐 SKU 货物与在途流水数量匹配,总计实际 13 箱;未自动创建入仓计划,所有可用/冻结/已拣/收货中库存均零,无实物库位,在途流水在计划前保留真实来源入仓码。该证据关闭此柜全部来源的映射及收货前在途归属核对,不冒充事件重放或其他收货模式的新测试。 + +只读取证原 r1 误读已完成计划的预装详情,收到 A0409 后退出会话;根据正式 lifecycle 切换完成清单接口后 r2 取得完整数据。验证器原 r1 假设每条 PDA 部分拣货行都重复携带订单号/入仓码,实际 PARTIAL 行省略这两个展示字段;改为上述三键精确关联来源元数据,重新独立比较全部 11 票后通过,原失败报告保留。期间确认完成清单 14 与实际 13 的投影差异,已转为 F21 修复项;不得为了让对账一致将正确尾程数或库存改为 14。 + +F21 完成清单修复已发布:`22133fe6041d3509b90fe60f2e225598026f4c5a` 仅修改完成投影 Mapper 并增加实际 SQL 测试;修复前 3 项业务失败,修复后 70 项直接测试及 Gateway 5 项通过。Firstleg #478 精确源码、受限 Maven、1563 项服务测试(0 失败/错误,9 环境跳过)、镜像 Healthy 已核对。`reports/loading-list-actual-verification-20261004-r1.json` 的 18 项回查证明列表/详情同为 13 箱、只保留原实装明细,各汇总等于这些原明细之和,计划版本/历史、完整 PDA、尾程、入库计划及库存余额/流水不变。原柜页面亦显示 12 条实际货物行、跳过 SKU 已排除;截图 `reports/loading-list-actual-customs-count-mismatch-20261004-r1.png` 同时保留报关区仍 14 的独立缺陷,不能把本次清单修复称为整页全部通过。 + +人工重试UTC修复已提交并推送 `d93185e7`:共享OutboxOperations统一以UTC写入next_retry_at和requested_at。17项定向Java测试通过(含上海默认时区下的立即可投递、真实Lastleg持久化链路、三个服务内部运维入口),28项网关/拓扑/部署合同通过;首轮测试编译错误已修正,保留r1/r2日志。Firstleg #474、Finance #120、Lastleg #196 均SUCCESS,实际三容器镜像标签d93185e7504c且healthy,runtime.json保留镜像ID与指纹;状态文件为 `baiyue-firstleg/reports/outbox-utc-release-20261003-r1/dispatch.json`。不回填旧失败样本的未来时间,不据本地测试关闭真实恢复验收。 + +2026-10-03 费用作废首轮失败记录(后续新版r2已通过,见下段)。`baiyue-firstleg/reports/fee-void-20261003-r1/report.json` 首轮在只读预检报来源摘要不一致,未注入故障;原始事件证明载荷摘要正确,验收器误将 NON_NULL 序列化省略的 action/sourceHash 补为 null,已由脚本提交 `588227f1` 修正。保留原费用 `2106188098971942914` 后显式续验,`original-source-recovery.json` 记录恢复阶段轮询超时。后续 `stall-schema-attempts.json` 纠正最初“未开始投递”的判断:原 VOIDED 事件实际已有11次RETRY及第12次DEAD,人工retry后变为PENDING、retry_count=0、next_retry_at=2026-10-03 09:12:21.072;投递审计使用UTC 01:11至01:12,字段均DATETIME(3),next_retry_at无默认值或自动更新。共享OutboxOperations人工retry使用默认时区LocalDateTime.now,而Lastleg扫描使用UTC,导致恢复排期延迟约8小时;该缺陷已由d93185e7修复并部署,但此旧样本仍保留失败结论及未来排期,不回填。结束时原/current Lastleg 镜像ID及完整配置/网络指纹一致、healthy、proxyStopped=true,独立会话退出;没有保留故障代理,不修改业务行补偿该费用。 + +2026-10-03 费用作废新版真实验收通过:`baiyue-firstleg/reports/fee-void-20261003-r2/report.json` 完整入口20次业务HTTP完成,原费用2106195364471160834的VOIDED事件f7ba8539-5b9c-46ca-9bc4-7dc9d39674f1(Outbox2106195511926112258)首次APPLIED后丢失ACK,11次RETRY、第12次DEAD,原事件人工retry第13次DUPLICATE/PUBLISHED。DEAD阶段Finance已VOIDED且operationVersion只增加一次、Lastleg仍ACTIVE;匹配ACK后Lastleg同版本才VOIDED/CONFIRMED,原事件信封与摘要不变,唯一Inbox与重试审计、无新增账务关联、原命令重放不变。两个客户完整库存及另一客户全部费用不变,原客户费用池仅移除该新来源。Lastleg恢复发布后原镜像及完整配置/网络指纹、healthy、proxyStopped=true,独立会话退出。`final-evidence.json`保存报告SHA与范围,goalComplete=false。只覆盖未出账RECEIVABLE仓储服务费,不推定PAYABLE、已出账作废或全部故障矩阵通过。 + +2026-10-03 签收完成事件故障验收:`baiyue-firstleg/reports/fba-core-delivery-recovery-20261003-r2/summary.json` 已通过显式 `TAX_REFUND + ROOT_FIRST + --verify-delivery-event-recovery` 完整入口,1312项检查、748次HTTP、13份只读取证,0失败、0跳过。原事件 `35393772-fd1a-4698-854b-5050b5971f30`(Lastleg Outbox `2106178949882101762`)第一次真实消费APPLIED后丢失ACK,11次RETRY及第12次DEAD,受保护原事件retry第13次DUPLICATE/PUBLISHED;完整信封/hash不变,Firstleg唯一PROCESSED inbox、唯一入仓签收历史,Firstleg/Order状态、版本、历史和完成事件在DEAD与恢复后均不重复变化,完整客户仓库存前后相等。首片根单等待子片,不被提前完成;恢复后第二片正常签收,根 `2106178579272892417` 和子 `2106178647354834946` 最终均COMPLETED,两车次货物结案及车辆/司机释放完成,客户完成态退税文件检查仍通过。Lastleg原/current镜像ID均 `sha256:36038509bb2b2967aece892bb523dfc8c9341aab24f7f3c371e650162f9979e9`,完整配置与网络指纹一致、healthy、proxyStopped=true;本轮没有持续故障代理或配置变更。报告与哈希清单见同目录 `final-evidence.json`,`goalComplete=false`,四项第三方船司缺口继续保留。 + +该批初次r1在首签前因隔离片段上下文未持有父证明对象而停止,服务未注入故障(restoration attempted=false),失败报告不改写。脚本提交 `933dd4cd` 修正父证明引用后,原未签收派送 `DL-WH-20261003-449026` 已单独续验同一事件故障恢复,证据为r1目录 `original-delivery-recovery.json`,但r1整轮仍失败;随后r2才证明修正后的完整入口。工具与入口初次整合72项离线检查、父上下文修复56项直接检查通过。此次关闭的范围为 `OverseasDeliveryCompleted` 的ACK丢失、重试耗尽、原事件恢复及库存/完成事实不重复;不覆盖费用作废ACK故障、事务中途故障回滚、全部真实摘要冲突或全部页面验收。 + +2026-10-03 跨客户同车真实验收通过(限定本段范围):`baiyue-firstleg/reports/fleet-cross-20261003-r2/report.json` 为815项检查通过、284次HTTP、36份完整原始库存快照。新客户 `2106168505141399553` 与 `2106168530068148225` 经普通转运/PDA真实实收各一托一箱,排车 `DS-WH-20261003-912513`、`DS-WH-20261003-618050` 共同关联 `TR-6D2DDEB987BF4EE5`。只拣A时从A发车被明确点名B未拣齐而拒绝,两客户库存、流水、PDA、出库、派送和车次完整快照零变化;B完成后统一发车及原键重放,两张排车DEPARTED、出库OUTBOUNDED,两客户库存各归零,各仅一组STOCK_IN/ALLOCATE/PICK/SHIP,发车不重复扣减。两张派送 `DL-WH-20261003-384129`、`DL-WH-20261003-954561` 分别签收,另一客户详情不随之改变。该证据是前置门禁拒绝,`midTransactionRollback=NOT_TESTED`,不证明事务中途故障回滚。 + +同样本后续 `closure.json` 29项通过,车次正式COMPLETED、车辆与司机分别释放,旧释放重放不影响新计划占用,探针计划已取消,两客户完整库存前后不变。`finance-consumers.json` 核对两客户各唯一30CNY派送应收、来源独立、查询范围不串客户;`finance-ack.json` 核对两项原事件唯一PUBLISHED且生产者收到匹配APPLIED/DUPLICATE。四份报告摘要和范围汇总在 `final-evidence.json`,`goalComplete=false`。临时PDA停用和独立会话退出均确认。初次r1失败保留:公共DTO补充的入仓码被错误套到原始位置行,脚本修正为按客户/仓和balanceId关联验证;该失败样本只创建一票实收库存,无发车,不回填或删除。修复提交 `29928719` 后用明确新批次r2验证。自动入口已于 `ef1eef32` 合入同一结案/资源释放助手与库存前后比较,26项直接及文档合同通过;原样本结案采用单独续验报告,不重复发车。没有为本次脚本更新重新部署业务服务。 + +2026-10-03 跨客户车次验收取证准备:Backend脚本提交 `4e129a7f` 增加 `readFleetInventory`,按明确客户/仓库在同一只读事务读取余额、位置、全部类型流水,并以逐表COUNT拒绝截断;保留零行、版本、时间及长ID。12项直接/文档合同通过。真实只读探针 `baiyue-firstleg/reports/fleet-inventory-reader-probe-20261003-r1.json` 在已归属本任务的客户范围读到16余额、19位置、87流水,其中3条为零余额。该探针仅证明当前TEST库结构与取证器可用,不证明跨客户发车;两客户最小新样本与真实链路仍待运行。 + +2026-10-03 Admin #490 计划态补验:在1920×1080、scale=1下通过页面新建专用计划 `TR-53FE312851DD4B5C`,仅1次创建POST与1次详情GET,无重复创建;经正式HTTP准备未确认询价 `FB-2106160184054300673`,未占用容量或关联库存。计划态外接表格实际宽1615px、详情容器1640px、操作列320px,详情/编辑/确认承运/取消预订四按钮及右侧来货/排车列完整可见,无横向溢出。详情为1080px居中只读弹框,13个输入控件禁用;列表货量摘要存在省略,完整值可在详情查看。证据为本任务2026/10/03 visualizations下 `admin-490-planned-booking-1920.png`、`admin-490-planned-booking-proof.json`;正式HTTP准备记录 `reports/fleet-planned-ui-fixture-20261003-r1.json`。保留计划与DRAFT询价供后续页面复验,未确认承运、未发车。 + +2026-10-03 海外 PDA 会话失效与排车文案修复:提交 `399007435293263fed2378dced61dec31eff88ba`,174/174 本地测试与 H5/App 资源编译通过。刷新失败或重放后仍未授权时清理会话并返回登录页;会话代次检查阻止旧请求与迟到刷新影响重新登录后的身份。排车列表使用“排车任务/查看任务详情”,保留真实状态徽标。发布报告 `baiyue-firstleg/reports/pda-session-release-20261003-r1/dispatch.json` 确认新容器健康、实际首页 SHA-256 与构建一致。同版本本机 H5 经真实 TEST Gateway 在 390×848、scale=1 下验证:列表仅 1 次 GET 200,已发车行文案正确,无横向溢出;专用测试账号恢复停用后点击刷新,1 次业务 GET 401、1 次 Auth refresh 后自动返回空白登录表单,没有手动重载或循环请求,网络记录无截断。证据为本任务 2026/10/03 visualizations 下 `pda-session-expiry-proof.json`、`pda-session-list-390.png` 和 `pda-session-expired-login-390.png`。账号原 DISABLED 状态、角色与仓绑定已核对恢复,见 `reports/pda-session-operator-restore-20261003-r1.json`。不据此关闭公网入口或 Android 真机验收。 + +- 最近已核验版本:Firstleg #475 / `65c12eaf`、Finance #120 / `d93185e7`、Lastleg #199 / `eadb431f`、File #143 / `5e683da3`、Admin #495 / `863ad524`、Client #380 / `fc32d0b3`,海外PDA `3990074` / `h5-20261003-8a4d35b83ed6`;各次精确源码和容器健康证据见本文对应发布记录,后续独立车辆发布以新增记录为准。TEST已应用匹配的9张车辆表、容量/费用覆盖/实际重量字段及22项无冲突权限。F40退税三顺序、同客户多排车外接履约、正常费用确认和两端IAM/Finance依赖故障恢复均已取得真实证据。跨客户整车前置拒绝、发车重放与独立签收已取得下述证据;事务中途故障回滚、剩余事件故障及完整四端页面验收仍未关闭;局部通过不能宣布全流程完成。源码、部署、HTTP与页面的具体证据边界见下文。 +- 国内/海外 PDA 公网测试入口仍未提供;已取得的作业页面证据是已部署同版 H5 经本机代理访问真实 TEST Gateway,不能替代公网反代或 Android 真机。 +- 完整四端逐节点页面验收、外部船司输入及尚无真实证据的故障场景仍保持开放;卸柜、签收回写及未出账应收费用作废的原事件 ACK 丢失、DEAD及恢复已分别取得独立证据,不能外推其余场景。 +- F33 废弃审批权限缺失已修复:提交 `375e355faf6e8b40d2b8841763932ca9d836a1a9` 补充 `lastleg:cargo-discard:approve`,TEST 已新增该权限、默认平台管理员授权并更新权限版本(`discard-permission-apply-20261003-r1.json`)。2026-10-03 原阻断申请 `CD-WH-20261002-535874` 通过真实拒绝及重复拒绝验证:候选箱数 3→4,完整库存余额和流水不变,重复拒绝后完整快照不变,14 个业务 HTTP 请求成功且独立会话已退出;证据 `baiyue-firstleg/reports/discard-reject-runtime-20261003-r1.json`。批准扣库存尚未执行,不计为通过;正式文档要求审核事务扣减、当前实现由 PDA 确认扣减的差异仍待业务时点确认与后续验收。 + +2026-10-03 客户报关完成态定向页面取证:原退税样本 TSTU9529734 / NYEXX2610020156 显示报关完成、资料覆盖 1/1、已确认回执、源文件与完税文件入口、人工放行结果,关联入仓码不可编辑。首次列表查询自然触发 401 后仅一次令牌刷新、一次原查询重放及三个身份上下文查询;资料详情按钮触发两次 GET(资料与 clearance-results),均 HTTP 200,无循环请求。证据为本任务 visualizations 下 `client-customs-completed-20261003.json`。该客户仅一条记录,未证明第二页场景;初次视口实际 1280×720,后经显式渲染尺寸设置读到 1920×1080/scale=1,但截图表面比例与 DOM 坐标不一致,`visualAcceptancePassed=false`,不据此关闭视觉验收。临时尺寸覆盖已恢复,无业务数据变更。 + +2026-10-03 F22 跨客户下载隔离:`baiyue-firstleg/reports/customs-file-isolation-20261003-r2.json` 以两个经独立登录和企业资料核对的不同客户执行,所属客户三类文件(原件78B、回执79B、完税文件77B)实际下载与服务端 SHA-256 一致,另一客户三条下载均 HTTP 200/A0404、无文件数据;资料完整快照前后不变,11 个业务请求完成,两个会话已退出。r1 因诊断入口漏 `/api` 在登录阶段失败,0 个业务请求,保留失败证据。此项证明对应文档三类客户下载接口隔离,不替代所有文件服务或页面故障验收。 + +2026-10-03 F22 申报结果失败提示修复:Client `b1f538b3ac94527302036d80a240109052330003` 已经 Jenkins #377 精确发布并 Healthy(`baiyue-firstleg/reports/client-customs-results-deploy-20261003-r1.json`)。结果查询失败不再伪装为空结果,保留资料详情并给出局部错误和重试;重复点击合并,重试仅查申报结果,关闭/切单/卸载使旧响应失效。组件14项及列表10项定向测试、含类型检查构建、网关5项通过。发布后真实浏览器故障注入与局部重试已补验,见后续证据;该结论不扩大到第二页或整页视觉验收。 + +2026-10-03 Client #377 申报结果错误恢复已完成真实浏览器验证:仅在原客户标签页阻断目标 `clearance-results`,打开资料后出现明确错误及“重新加载”,资料、回执确认和完税文件入口仍在,未显示成功空态;清除阻断后局部重试恢复原放行结果。重试窗口因令牌自然过期,结果 GET 401→一次 refresh→原 GET 200,附三个 IAM 上下文 GET;没有重查资料详情或列表,没有循环刷新。证据为本任务 visualizations 下 `client-377-customs-result-failure.jpg`、`client-377-customs-result-retry.json`、`client-377-customs-result-recovered.jpg`。工具超时后已显式清除全部临时 URL 阻断,恢复结果验证成功;不修改后端数据。此为错误恢复/请求量证据,截图仍不作目标尺寸视觉合格证据。 + +2026-10-03 F22 分页样本准备未达成目标:`baiyue-firstleg/reports/customs-pagination-fixture-20261003-r1.json` 经客户正式批量接口创建200张退税草稿(四批各50),未提交、未审核;统一订单查询总数仍为1,分页断言失败。源码 `UnifiedOrderQueryService.ACTIVE_ORDER_STATUSES` 排除DRAFT,因此该样本不能证明第二页,属于验收准备假设错误,不认定产品分页缺陷。不得重跑同一创建入口或自动提交这些草稿凑验收;保留其业务编号及失败报告,后续需使用真实已提交/履约订单的隔离样本或另外验证方案。随后只读逐单核对200张均为DRAFT/TAX_REFUND且仅一条CREATE历史,原订单及报关仍COMPLETED,会话已退出;证据 `baiyue-firstleg/reports/customs-pagination-draft-audit-20261003-r1.json`。 + +2026-10-03 F23 原柜改船定向复验:`baiyue-firstleg/reports/ship-customs-retention-20261003-r1.json` 在原任务验收柜 TSTU0152125 上执行正式船期版本更新,修改船名、航次、ETD/ETA;完整报关资料/回执/确认/完税文件快照、原船任务详情及正常节点、原柜唯一任务列表均不变。原请求重放后完整快照不变。随后以当前版本恢复原字段,船期版本5→7,仅追加修改与恢复两条可追溯历史;20个业务请求通过、恢复成功、独立会话退出。此项不替代当前版本平台/客户两端视觉同步或外部船司输入验收。车辆费用覆盖字段 `ll_outbound_order.fee_coverage_json` 已从模块基线同步到海外统一空库初始化,10/10初始化合同通过;仅本地结构同步,未执行TEST结构变更或发布车辆功能。 + +2026-10-03 F22 完成态目标尺寸截图已补齐:本任务 visualizations 下 `client-customs-1920-20261003-final.json` 与 `client-customs-list-1920-20261003-final.png`、`client-customs-detail-1920-20261003-final.png`、`client-customs-detail-bottom-1920-20261003-final.png` 配对,DOM视口1920×1080、visualViewport.scale=1,三张PNG实际1920×1080。设备DPR=1.75;普通截图对渲染表面处理有裁切,改用浏览器原生Page.captureScreenshot显式逻辑区域及1/DPR采样,无本地图像拉伸或编辑。列表全部列/分页、居中弹框、正文内滚动、三类文件入口及固定关闭区可见,完税文件按钮Tab可到关闭按钮,无横向裁切或操作区遮挡。此为该真实完成样本的布局检查,不宣称原型全量一致,也不覆盖上传态、错误态、多页/多票。临时Emulation与viewport覆盖已清除,专用取证标签已关闭;此前不合格截图继续保留。 + +2026-10-03 发布前索引门禁旧规则已收敛:原5条失败来自脚本仍要求测试任务登记清空,与2026-09-30用户明确新建四任务冲突。现核对当前四个唯一task_id、所属总控、测试projectId/cwd及明确创建依据,并继续拒绝历史总控和开发环境身份;不修改登记表、不新建或恢复任务。实际PowerShell校验器10项正反例通过,当前工作区完整AGENTS索引合同1094项通过,Gateway合同5/5。此为当前源码/索引验证,不表示车辆功能已提交或部署。 + +2026-10-03 PDA公网入口只读排查补充:`pda-route-discovery-20261003-r1.json` 确认两套PDA容器仅在firstleg-test-network暴露80,无published port及Traefik路由标签。已从TEST主机nginx主进程定位 `/www/server/nginx/conf/nginx.conf`,其配置包含panel/vhost/nginx站点通配;当前执行身份展开该通配得到0个文件,五份可读取配置中未定位测试站点(`pda-nginx-test-routes-20261003-r2.json`)。该结果只证明当前可见范围无法定位入口,不证明公网路由不存在;未修改Nginx、容器或网络,PDA公网地址仍待提供或获得可读取的确切测试站点配置。 + +2026-10-03 C63 签收文件实际保存已取得当次证据:先记录Downloads目录已有两个同前缀文件,再在Client #377原派送单DL-WH-20261002-671298点击下载;点击始于19:32:21.565Z,新增receipt (2).txt创建于19:32:42.809Z,96B,SHA-256为ed1e7a2dd4d4f138a59b437dcacf74863c9c7e72d171082f00c2bcd71b444ab7。新文件与此前独立认证读取的服务端真实下载逐字节一致,UTF-8内容可读;HTTP验证没有写入Downloads。证据 `baiyue-firstleg/reports/receipt-browser-save-before-20261003-r1.json`、`receipt-browser-save-proof-20261003-r1.json`、`receipt-saved-file-verification-20261003-r1.json`。关闭此样本页面点击→本地保存→内容校验缺口,不再需要用户为同一文件人工确认;工具download事件未返回路径的历史事实保留,不将之解释为产品失败。此项不扩大到所有文件格式、账号或全流程完成。 + +2026-10-03 报关上传页面新样本已准备:`baiyue-firstleg/reports/customs-upload-ui-fixture-20261003-r1.json` 经624次真实请求、1045项准备检查,生成原柜TSTU1062983、计划2106106581065142274,停在LOADED/WAITING_CUSTOMER_DOCUMENTS,资料为空且startedAt为空;未开始报关。隔离客户凭据只存用户指定env目录,平台会话已退出,准备成功不代表页面上传已验收。切换客户时另发现Client #377退出缺陷:确认退出后账号/菜单清空但旧派送详情及URL仍在,控制台出现SESSION_CHANGED;已交前端任务复现修复,后续Client #378已完成正常退出页面复验,见对应记录。 + +2026-10-03 F22任意格式页面上传已执行:隔离客户在原柜TSTU1062983通过文件选择器上传43B的`customs-upload-proof-20261003.customblob`,页面显示V1、关联NYEXX2610030006、覆盖1/1;独立只读回查和实际下载字节比对通过(`baiyue-firstleg/reports/customs-ui-upload-content-20261003-r1.json`),文件SHA-256为24b48cc358b86a1ff456acda26467c4842bd457952ad75ce9d6e67715ccfadd8。merchantStatus=DOCUMENT_UPLOADED,整柜因另一个客户尚未上传而保持WAITING_CUSTOMER_DOCUMENTS,未开始报关。发现旧列表错误使用整柜状态而提示本客户“待上传资料”;已与退出残留修复合并为Client提交5c53eba31b32e65532c1c0bfe0fe36a808e76a45,59项直接测试及含类型检查构建通过,发布与页面复验已补,见Client #378记录。 + +2026-10-03 Client #378 已精确发布5c53eba31b32e65532c1c0bfe0fe36a808e76a45并Healthy(`baiyue-firstleg/reports/client-logout-customs-deploy-20261003-r1.json`)。真实浏览器重新加载后,TSTU1062983客户列表正确显示“资料已上传”、覆盖1/1,另客户未上传不再误导本客户;确认退出后回到登录表单,旧业务列表/详情移除。证据为本任务visualizations下 `client-378-upload-and-logout-proof.json`、`client-378-customs-uploaded-list-1920.png`、`client-378-logout-fixed-1920.png`,同次DOM视口1920×1080、scale=1,浏览器原生采样PNG完整,临时尺寸覆盖已清除。59项直接测试及含类型检查构建通过;服务器注销失败与跨身份竞争为离线测试覆盖,不能据正常退出页面推定所有故障场景均已真实注入。 + +2026-10-03 车辆集成前置实证:原manifest新增权限有6个ID与TEST现存箱型/产品冲突,总控同步IAM模块及统一SQL为上述空闲编号,既有权限未覆盖;`fleet-permission-number-preflight-20261003-r1.json`、`fleet-permission-number-map-20261003-r1.json`保留核对依据。`baiyue-firstleg/reports/fleet-runtime-apply-20261003-r1.json`回查9表全部列集合、容量3列+CHECK、覆盖列、4处可空重量、22权限+22管理员授权,subject权限版本合计5→7(2个主体)。未删除/重置/回填业务记录。Gateway+初始化15/15、IAM4/4及File新增文件类型定向测试通过;IAM首轮仅命令行转义失败、未执行测试,r2为通过证据。两组只读审阅核对保留退货和F32修复,未发现确定生产代码阻断;仍须真实跨服务和四端验收。源码提交选择见`fleet-backend-release-selection-20261003-r1.json`,HTTP编排脚本及无关共享指引未并入此生产提交,保留当前工作区待独立完整集成。 + +2026-10-03 新版F40退税三模式闭环:`baiyue-firstleg/reports/fba-core-f40-tax-fleet-20261003-r1/summary.json` success=true,根先签1307项/743请求、子先签1310项/747请求、根签后余量取消836项/478请求,合计3453项检查与1968请求,零失败、零跳过模块。基于Lastleg #195等匹配版本,通过真实资料/回执/完成文件、车次调度与理货、PDA发车、签收、完成后客户三类文件下载;29份独立只读取证核对实收库存及完成Outbox。正常两片各一条已发布完成事件;余量取消仅根一条、取消子零条,重放与异载荷拒绝不漂移。每种模式均保留4项外部第三方覆盖缺口;未覆盖反向事件丢ACK、多客户整车、专项费用覆盖、外接货及完整四端页面。原失败批次保留,不覆盖旧报告。海外PDA发布成功不代替390×848作业页面验收。 + +2026-10-03 Admin #488车次列表真实页面检查:当前平台会话经正常登录进入车辆管理/车次管理,列表15条,操作列在最左;DOM视口1920×1080、缩放1、页面宽1920,无横向溢出,浏览器原生截图PNG为1920×1080。进入列表仅1次GET `/api/platform/v1/last-leg/fleet/trips` 返回HTTP200,无逐行详情请求;网络事件未截断。证据为本任务visualizations下`admin-488-fleet-list-1920.png`及`admin-488-fleet-list-proof.json`。截图发现未分配车牌/司机为空白,已在TripsView改用公共表格空值格式化显示“—”,8项现有行为测试及完整2214项测试通过,含类型检查构建通过;修复22dcae616caf4147bab158abb7d2da0d33debe1c已通过Admin #489单独静态发布,精确源码与Healthy核对,未改后端/数据库、未中断专项HTTP。真实页面已复核原未分配样本的车牌/司机显示“—”,DOM1920×1080/scale=1与原生PNG尺寸一致,证据`admin-489-fleet-empty-fixed-1920.png`、`admin-489-fleet-empty-fixed-proof.json`;发布证据`baiyue-firstleg/reports/fleet-admin-empty-deploy-20261003-r1.json`。这里只证明菜单与列表展示/读取,不替代详情、写操作、权限边界或完整页面验收;临时视口覆盖已恢复。 + +2026-10-03 Admin #488车次详情只读交互:由列表进入本轮F40已结案车次TR-C527DEB4E94349D3,实际发车/结案时间、已通过调度审核和关联排车显示正常;结案页签分别显示车辆与司机任务结束时间、地点,未出现再次分配/发车入口。操作历史页签首次打开仅一次GET `/api/platform/v1/last-leg/fleet/trips/TR-C527DEB4E94349D3/history`、HTTP200,事件未截断,展示14条真实历史。证据为本任务visualizations下`admin-488-fleet-history-requests.json`及`admin-488-fleet-history-visible.txt`。详情初次进入的较早网络事件发生截断,`admin-488-fleet-detail-requests.json`明确保留truncated=true,不能据此关闭详情整体请求量;随后补齐历史页签目标尺寸证据`admin-488-fleet-history-1920.png/json`:DOM1920×1080、scale=1、PNG1920×1080,概况、14条历史及分页完整可见,无横向溢出;临时视口已恢复。该结论只覆盖历史页签的展示,不包含其余详情页签或写操作。 + +2026-10-03 下单依赖故障运行前提只读核对:`baiyue-firstleg/reports/order-dependency-runtime-prerequisites-20261003-r1.json`确认当前Order镜像ID、TEST标识、受支持JarLauncher入口、容器健康、host-gateway路由、内部身份与Nacos读取配置存在;IAM/Finance容器健康、与Order共享网络且端口明确。只执行docker inspect,未读取输出凭据、未重启、未故障注入或修改配置。该检查只说明后续隔离故障运行具备基础条件,不代表F01/F05依赖不可用场景通过;故障脚本、两端冻结命令/原事实核验及恢复合同已提交推送`bde1cd53`(8文件,根README仅选择对应入口段落,其他专项改动保留),28项离线检查通过,证据`order-dependency-integration-contract-20261003-r1.log`;未部署或故障注入。须等车辆专项释放独占窗口后准备本轮合法草稿及正式预检。 + +2026-10-03 车辆专项真实首轮未通过:`baiyue-firstleg/reports/fleet-current-20261003-r2/report.json`记录8999项检查、8997通过、2失败,112次模块执行、84个独立模块、5242次请求、零跳过模块;失败为“失败命令没有生成出库或派送事实”及模块停止,脚本停在原样本,未宣布全/部分费用覆盖、外接或多客户整车已通过。专项后续已定位脚本使用不支持的排车号筛选,因而读入其他客户记录;受支持客户范围查询确认本轮无出库单,正在修正脚本并原样本续验,无需业务服务修复。5项覆盖缺口(设备1、外部第三方4)另列。r1在只读取证节点配置阶段失败,未造业务数据;r2及其资源保留,不覆盖或全链重造。 + +2026-10-03 F40根先签样本费用确认补证:`baiyue-firstleg/reports/f40-fleet-fee-ack-readonly-20261003-r2.json`以只读一致性事务限定原F40客户,读取4条费用Outbox(2条OVERSEAS_DELIVERY_FEE、2条OVERSEAS_CONTAINER_FEE),均版本1、PUBLISHED;每条精确事件ID均对应一条已完成APPLIED投递审计。来源Relay仅在requireMatches通过后事务记录结果,因而本证据验证该样本收到匹配确认,不是仅据PUBLISHED推断。首次查询失败后核对真实字段,再用二进制精确比较关联字符串列取得结果;无数据或配置写入。该结论不覆盖车辆专项的新费用、撤销确认丢失重试或财务重复消费故障。 + +2026-10-03 F40其余顺序费用确认补证:`f40-fleet-fee-ack-child_first-20261003-r1.json`读取4条、`f40-fleet-fee-ack-root_signed_remainder_cancelled-20261003-r1.json`读取2条费用事件,均在本轮客户范围内、来源/版本/动作组合唯一且有精确eventId匹配APPLIED;与根先签样本合计10条(5条派送费、5条柜费),每条仅一条已完成APPLIED审计。两份新增报告均verified=true、uniqueFeeEvents=true。此为三个F40样本的来源确认与事件唯一性只读证据,不替代车辆专项全覆盖/部分覆盖/撤销ACK故障或Finance全量账务核对。 + +2026-10-03 车辆原样本续验进展:`fleet-current-20261003-r2-fix1/report.json`保留43/45通过、目的仓断言失败,原成功转派送请求未重建;fix2按实际变更后的destinationWarehouseCode核对并原请求重放,`fleet-current-20261003-r2-fix2/report.json`为154/158通过。其FULL与PARTIAL费用proof均VERIFIED:全覆盖出库OB-WH-20261003-266241对应两派送、新增应收0;正式取消重排后部分覆盖出库OB-WH-20261003-011778对应两派送、新增应收10。原覆盖引用按实际目的地分组,过期货物/费用版本及重复收费拒绝、请求重放已有报告证据;车次reservation=VERIFIED,询价不占位、确认占位、超卖拒绝及取消恢复通过。整体仍失败:创建续验PDA账号触发“手机号已存在”,其后未执行外接真实收货/绑定/整车发车,专项正在修正测试账号生成并保留原样本续验。不能据阶段proof把fix2总报告改成通过。 + +2026-10-03 外接原样本收货进展:`fleet-current-20261003-r2-fix3/report.json`已越过PDA账号创建,正式PDA测量/生托盘/绑定/照片/完成接口返回成功,检查在库存分页范围断言停止(49/51通过,27请求),未认定整链通过。总控独立只读一致性事务取得`fleet-external-receipt-stock-readonly-20261003-r1.json`:精确本轮客户/仓/来货WT-WH-20261003-705217与实托,1条余额available=1、1条对应仓位available=1、其他核对桶0;仅1条STOCK_IN流水before0/delta1/after1,余额/仓位/托盘关联一致。该时点证据确认已入库一箱,但不替代原完成请求重放及其前后不变证据;分页失败已由专项定位为库存接口返回分组汇总、不带入仓码,脚本须按余额明细和实物位置核对;修正与原样本重放正在进行,后续运营实收确认/绑定/整车发车尚未闭环。 + +2026-10-03 Admin #489新建车次空表单交互:实际1920×1080/scale1,内容面板1080px宽、x=420水平居中,三列主字段、路线、备注和底部按钮完整可见。未选起运仓点击保存后无任何网络请求(事件未截断),弹框仍保留;取消后dialogVisible=false,未创建业务数据。首次快照未捕获短时提示,后通过点击前建立可见性等待,实际捕获“请填写起运仓、计划时间和站点名称”,等待及点击均fulfilled;关闭后dialogClosed=true。补证`admin-489-trip-create-warning-proof.json`,原截图记录保留,未伪造提示截图。截图/DOM/网络证据`admin-489-trip-create-1920.png`及`admin-489-trip-create-proof.json`,临时视口已恢复。该检查不包含合法创建、未知结果重试或编辑。 + +2026-10-03 下单故障关联前提补查:Gateway、Servlet关联过滤器及FeignTraceRequestInterceptor支持本次dep-*请求标识。实际Order镜像255个依赖包包含OpenFeign4.1.3、Feign13.3和Sentinel2023.0.3.2;初次分类只识别Resilience4j/SpringRetry,已按实际包列表更正为存在Sentinel实现。对应本地同版本SentinelCircuitBreaker字节码显示同步run直接Supplier.get,无执行器切换,当前没有据此认定MDC传播缺陷,也未关闭熔断或改配置。证据`order-feign-runtime-libraries-20261003-r1.json`、`order-sentinel-circuitbreaker-bytecode-20261003.txt`;实际目标请求到依赖代理的标识匹配仍须故障窗口验证。 + +2026-10-03 外接续验fix4/fix5仍未整体通过:fix4报告46/48通过,已证明原PDA完成请求重放后库存精确范围及流水不变,失败点为运营实收字段断言;专项按正式字段修正后,fix5为50/52通过,停止在“实收重放不改价格或版本”。证据分别为`fleet-current-20261003-r2-fix4/report.json`与`fleet-current-20261003-r2-fix5/report.json`,原报告及已入库样本均保留;该新失败仍在定位,不将阶段成功扩大为外接履约全链完成。 + +2026-10-03 原外接实收确认只读旁证:`fleet-receipt-confirmation-readonly-20261003-r1.json`精确预订FB-2106135832546033666与原客户/车次,只有1条BOOKING_RECEIPT历史,车次版本16=原请求15+1;保留原receipt_key,实际1托位/100kg/1m³、单价及金额30。查询时专项已推进BOUND、booking版本4,因此此当前版本包含后续绑定,不能与实收后应为3的版本直接比较;原请求重放前后证据继续以专项报告为准。本次只读,不补写历史或修改状态。 + +2026-10-03 外接车辆专项fix6已推进至末尾:`fleet-current-20261003-r2-fix6/report.json`为220/222通过、118请求,失败在专项入口误将finishFleetTrip返回的资源状态对象当作status=VERIFIED判断;原链已执行外接并车/报价、逐单拣货、整车6箱发车与重放、3张派送签收、车辆/司机释放;随后只读终态对账已通过,见下文terminal报告,未重跑已完成写入。总控另核定`fleet-external-fee-ack-20261003-r2.json` verified=true:指定客户、OVERSEAS_DELIVERY_FEE来源2106142502261145601版本1,事件e8e5ef7a-aed2-43ee-b447-81b2068493cf唯一Outbox=PUBLISHED,唯一匹配attempt=APPLIED,totalAmount=30/CNY;专项Finance池唯一RECEIVABLE:3736尚需汇入最终报告。r1只读取证误用amount字段、verified=false保留,r2依据事件DTO totalAmount正确取证。该阶段仍待最终报告收口,不把fix6原失败报告改为成功。 + +2026-10-03 车辆专项原样本完成终态收口:`fleet-current-20261003-r2-terminal/report.json`22/22通过、9个唯一GET;`final-evidence.json` verified=true且goalComplete=false,总控复核其fix6、终态与ACK三份源报告SHA-256全部一致。两张排车共6箱、3张派送签收、货物结案、车辆/司机独立释放及再占用隔离、30CNY唯一费用与匹配APPLIED确认均已有组合证据,原fix6失败报告不改写。两排车与外接貨均属同一客户,此证据不覆盖跨客户整车原子性;页面、故障矩阵和未实现产品范围另列。独占HTTP窗口已释放给总控;`order-dependency-draft-fixture-20261003-r1.json`随后经正式API新建客户/平台各一张DRAFT(2106144387453485058、2106144388153933825),会话已退出,生成冻结请求计划`order-dependency-plan-20261003-r1.json`;此为故障测试前准备记录,后续故障与恢复提交结果见下文F01/F05通过记录。 + +2026-10-03 F01/F05真实依赖故障与恢复通过:`baiyue-firstleg/reports/order-dependency-fault-runtime-20261003-r1.json` success=true,IAM与Finance各在客户/平台提交执行一次,共4次限定客户/路径/原请求ID的真实503命中,Order返回规定S0503,订单详情/版本/历史/Firstleg任务与入仓完整快照未变。恢复后两张原草稿各提交一次到SUBMITTED,原版本原幂等键重放快照不变;原Order镜像及容器配置fingerprint一致、Nacos源摘要未变、两个依赖读取正常、容器健康、代理停止、业务会话退出全部确认。没有业务SQL或Nacos写入,也未放宽熔断。初始预检因脚本沿用Nacos v1失败,按本项目现行v3契约修正为固定v3登录/配置读取并严格校验返回身份;只输出阶段/HTTP状态的脱敏错误分类已补测。29项合同与4项文档门禁通过,修复`c55bd7f4`已推送;先前预检失败证据保留。此项关闭两端IAM/Finance依赖不可用真实验收,不等于Warehouse、所有页面或其他故障矩阵通过;Warehouse后续结果见本文件2026-10-04三依赖收口记录。 + +2026-10-03 验收代码与外接列表布局收口:后端仅HTTP验收脚本批次`d858357c`已推送,52文件含已冻结车辆11文件与直接F40/排车/会话消费者,957项离线检查全部通过、无失败/跳过;精确范围见`fleet-http-source-selection-20261003-r1.json`,4份构建质量工具改动未混入。Admin列宽修复`94b8b8b31ca3c4549a30750851fabfb4c3822384`已由#490精确发布并Healthy;原操作列440px造成表格1720px超出1640px内容区,现计划阶段320px、其他170px。完整2214项测试及含类型检查构建通过;总控在已结案外接车次TR-C285849ACE804E1B按1920×1080/scale1复验,操作列170px、两表1615px均在1640px区域内,来货/排车单号及两个只读按钮完整可见。截图与尺寸证据`admin-490-booking-width-fixed-1920.png`、`admin-490-booking-width-fixed-proof.json`;计划中320px状态尚无本轮页面证据,不由本图推定。海外PDA只读390×848由专项临时启用原样本作业员进行,须恢复停用并核验旧会话失效,尚待回传。 + +### 逐节点复核后的自动化优先项 + +下表区分缺少证据与已复现缺陷;未找到当前证据不等于对应功能一定有错。各专项只补对应场景,不为每个缺口重复运行完整造数链。 + +| 范围 | 当前判断 | 下一项可自动化验证 | +|---|---|---| +| F01/F05 下单门禁 | 资质、负余额、渠道拒绝及两端IAM/Finance/Warehouse不可用后零漂移和恢复重放均有真实证据;原失败保留,显式恢复与延迟只读复验通过 | 资质/余额/渠道门禁的实际页面错误提示按人工验收单列,不追加未定义的并发矩阵 | +| F04/F06 导入、草稿编辑取消 | 当前Order #181、Client #382;Platform 命令181项、两端提交301项定向HTTP、旧编辑页冲突及跨标签会话恢复已有证据;模板318仓/15渠道、双客户隔离、外客户地址JSON/XLSX拒绝及对应Order七表摘要不变通过;页面提交前失败重试与提交成功后的响应交付失败、原表单重试完整链均已通过 | 已定义的提交响应丢失分支已关闭;数据库七表不变仅覆盖两种XLSX地址拒绝,F06恢复以同票完整详情/历史及请求计数证明,不外推 Excel 桌面操作或人工视觉 | +| F22 报关资料 | 核心HTTP、三类文件隔离、完成态1920×1080、五票刷新6次GET、旧资料成功响应隔离已有证据;Client #382正式页面已复验加载骨架、三项迟到响应隔离,以及当前五票刷新失败清空旧行、显式错误/重试和同数据完整恢复 | 11票新样本已补真实显示第二页、准确详情和从第二页刷新失败/完整恢复;仍未实测超过200票触发的后台读取第2页及其传输失败,已有离线覆盖 | +| F23/F24 船信息与外部节点 | 原柜实际改船、历史、平台/客户同步及恢复已有证据,报关资料、柜标识和原查询任务不变;10月4日实际首次登记一次POST200、唯一CREATE历史及26项正式回读通过;两项列表权限账号正式页面五字段禁用/无保存按钮、一次GET200零写入,17项回查和账号恢复通过 | Integration/调度器输入异常与解除的真实生命周期仍缺有效外部船司输入;F23功能页面证据不代替完整人工视觉或实际开航验收 | +| F32/F33 库内服务 | 暂扣重复周期及其他冻结保留通过;TEST MySQL实际双等待图下的暂扣先到/PDA拣货先到、原命令重放、扫描扣减/来源归属及锁和账号恢复已收口;废弃拒绝释放和重复拒绝通过 | 废弃扣减时点确认、实际扣减、逐箱流水及重复操作不二次扣减;原已有库存转运本票终态按本节逐段表核对 | +| F35–F40 出库至完成 | TAX 三模式、同客户多排车外接履约、全/部分费用覆盖、正常费用ACK已有真实证据;跨客户整车前置拒绝/发车重放/独立签收、MySQL中途故障全车回滚及同原命令恢复结案、未出账应收费用作废ACK恢复、签收完成事件ACK恢复均已补验;Lastleg205/Admin507实际开始处理、两批各1箱退回实收、第二批原请求重放及库存不变、剩余1箱签收与原车次结案/资源释放通过;运营实测已实际上传/保存/回显/历史及独立HTTP核验;同路线三票自有/外接实运托位分摊、重放及完整签收结案链已通过;同路线成本页面展示/历史/回显/未修改保存、独立原车次实际成本登记/更正及库存不变、退回历史重派链接/实际2箱明细均已核对;两次CSV实际落盘和内容、运营记录/历史PNG页内预览及原事实不变已补证;历史 BUY 三模式另存 | 多车多目的仓完整操作页面;PDA公网/设备和人工1920×1080视觉;运营原写入准确请求数、第一次分批实收原键重放未留证,作为证据边界保留 | + +废弃专项 `reports/discard-approval-http-20261002-r2.json`:7157 项断言中 7155 通过、2 失败,4350 次请求,0 跳过模块;两条红灯来自同一拒绝审批权限阻断。申请 `CD-WH-20261002-535874` 的待审锁箱、创建同键重放及异载荷冲突后事实不变已有证据;批准未执行,逐箱 SQL 流水仍待取证。失败样本与报告保留,两名临时 PDA 操作员停用,管理员会话退出。r1 为配置前置失败、0 请求,不算业务回归。 + +页面证据尺寸复核更正:`admin-completed-container-gate-fixed.jpg` 实际为 375×815;`client-customs-upload-queue-fixed.jpg`、`client-customs-empty-copy-fixed.jpg` 为 1905×1072 且缺同次目标视口记录。它们可用于对应文字/状态观察,不能关闭 Admin/Client 1920×1080 验收;下文历史“新版 1920×1080 页面已复验”的空态表述据此降级,待重新配对截图与实际视口记录。其他有独立尺寸证据的页面不受此项影响。 + +Admin 原柜 D1299 / TSTU9529734 已补同次浏览器复核:截图前后均实际读到 1920×1080、DPR=1、缩放=1,页面显示 7 项门禁全部通过、0 阻断、已确认离仓,报关已完成,实际渠道为“—”,提单号保持 `BL-06b15e95ca09d97ecc`。新配对证据为本轮 visualizations 下 `admin-completed-container-gate-viewport1920-r2.json` 与同名 `.jpg`。截图工具输出的 JPEG 实际为 1905×1072,已单独记录尺寸与摘要,不声称原始图片为 1920×1080,不拉伸图片;此次只读展示复核不代替整条操作链或其余页面验收。 + +废弃跨端核对补充:Admin 缺少审核入口的问题已由 `cc973c72c08627879c9f13919cca30f4e92e137f` 补齐,沿尾程订单 `CARGO_DISCARD + PENDING_REVIEW` 行提供审核,精确权限为 `lastleg:cargo-discard:approve`,按业务号及字符串客户 query 调用既有接口;关闭不写、驳回必填 1–1000 字、提交中禁止重复点击、失败后可重试。修复前 6 项失败复现,修复后定向 69 项、全量 299 文件 2385 项、含类型检查的 build 与 Gateway 5 项通过;测试桩类型初次失败已修正。Admin #508 SUCCESS、精确源码及容器 Healthy 均已核对;初次普通 build 请求被参数化 Job 以 400 拒绝且未入队,随后沿原配置 buildWithParameters 唯一发布,原失败记录保留。 + +真实页面在 1920×1080 下对旧自动化测试申请 `CD-WH-20261002-737281` 验证:待审行显示审核,居中框准确显示申请号且原按钮禁用;关闭、空白驳回校验、取消驳回后完整申请/订单/库存余额/流水/候选均未变(5 项)。随后通过页面提交有明确 TEST 备注的驳回,申请 REJECTED、尾程主单 CANCELLED,审核按钮消失;原锁定 1 箱释放,目标候选及 SKU 可用 3→4,原申请货物明细、完整库存余额与流水以及其余候选不变(7 项)。本轮没有批准或实际废弃,没有新增造数、SQL或后端发布;浏览器准确请求计数未单独留存,不声明一次 HTTP。证据 `reports/discard-review-entry-root-20261004-r1/final-evidence.json`,浏览器和独立 HTTP 会话均退出,临时视口恢复。人工视觉结论仍单列。Client 已有申请/取消,海外 PDA 已有批准后按实际数量废弃的执行页;扣减时点等待答复,不移除 PDA 执行、不改成审批自动扣库。 + +F32 本地真实事务红灯:`reports/f32-hold-concurrency-red-20261003-r1.log` 中 6 项测试、3 失败、0 错误/跳过。第二轮暂扣可用箱仍为 12(应为 0),解除本订单暂扣后其他业务 HOLD 为 0(应保留 2),交叉持锁复现 H2 Deadlock/CannotAcquireLockException。库存任务正在修复暂扣操作周期与精确释放;共享 PDA pick 入口已协调唯一写入,在首次库存变更前按稳定来源订单顺序锁定并校验未暂扣,保留车辆任务既有门禁。此为真实 Spring/MyBatis/H2 证据,不是已经发生的 TEST MySQL 故障或修复通过;尚未提交部署及真实 HTTP 复验。 + +F32 后续修复与发布:`7530a95fbd40e803e47b4859d02d90a4aa4426aa` 只包含订单暂扣周期、按周期 HOLD 流水精确释放、来源订单先于库存加锁及直接测试;共享 PDA 文件只选择新增两行调用,未混入未发布车辆功能。65/65 定向通过,真实事务 8 项包括重复周期、另一业务 HOLD 保留、第二位置流水失败整笔回滚及暂扣/扫码两种顺序。Lastleg #194 精确发布并 healthy,993 项服务测试、0 失败/错误、2 环境项跳过;证据 `reports/lastleg-hold-cycle-deploy-20261003-r1.json`。 + +F32 真实环境复验 `reports/f32-hold-runtime-20261003-r1.json` 已通过:复用原 7065/7065 收货报告的本任务样本,正式库存 API 先冻结独立 1 箱,再对尾程订单执行两轮暂扣/解除及各自原请求重放;每轮暂扣均为 available=0/hold=4,解除均为 available=3/hold=1,独立冻结不会误释放,所有重放的订单/原始余额/位置完整快照不变。最后用原独立解除命令恢复 available=4/hold=0,原 2 个位置及总量保持,订单版本仅四次推进;53 个业务请求成功,恢复和独立会话退出均已核对。无 SQL 写入,不是并发 MySQL/PDA 竞态验证。预检 r1/r2 因错把 SKU 汇总余额当原始余额而没有匹配来源,未写业务数据;r3 改按既有不可变收货事实中的 balanceId/positionId 读取原始详情后通过,旧失败报告保留。 + +Client 上传待办补验已完成:以原退税样本客户登录,`NYEXX2610020156` 与 `NYEXX2610020156-1` 均显示已完成、全部订单共两条;上传资料无数量徽标,点击后为零条且文案为“暂无需要上传报关资料的订单”。截图前后实际视口均为 1920×1080、DPR=1、缩放=1,配对证据为本轮 visualizations 下 `client-customs-upload-empty-viewport1920-r2.json` 与同名 `.jpg`;工具输出 JPEG 实际 1905×1072,尺寸与摘要分别记录。此项补齐上述空态/待办截图的视口证据,不覆盖上传写入全链或本轮请求量。 + +F06 从缺证升级为已确认接口差异:现行阶段一要求取消携带当前版本与幂等键,Merchant 实际取消只有 reason;草稿编辑未接收页面版本,数据库乐观锁不能拦住旧页面在新保存之后发来的覆盖请求。当前正收敛 Merchant 编辑/取消:专用版本请求、持久化命令幂等及 Client 冻结编辑快照,并同步直接验收脚本;尚未部署和真实 HTTP 复验,不计完成。平台取消和两端提交的客户端版本缺口单列保持开放,本批不以 Merchant 局部修复覆盖它们。F04 正式 XLSX 导入与 F06 拒绝后事实不变的自动化增强同时进行,JSON 批量草稿测试不替代 Excel 导入。 + +F06 后端与 F04/F06 正式自动化已提交推送 `58dfcc21f69bb92d16a09a8dba1bbcea7b81f584`。Merchant 编辑采用 `{expectedVersion,draft}`、取消采用 `{expectedVersion,reason}`,两者必须携带 `Idempotency-Key`;原键同载荷成功重放不重复写入,首次执行检查版本与状态。复用既有幂等表、取消根聚合及事务,无 Schema 或权限新增;已有 `merchant:order:cancel` 与 Client 权限映射已核对。Java 定向测试 83/83、Client 验收脚本及文档合同 19/19、网关合同 5/5 通过。Order #179 已发布该精确提交、healthy 核对,服务测试 353/353,证据 `reports/order-f06-command-deploy-20261002-r1.json`。Client 匹配提交 `dae119a1e8bc6de349825f1000b75392eed45ace` 已推送,90 项定向测试、类型检查及构建通过;发布队列已提交,尚待完成。真实 HTTP 与页面回归待两端发布匹配后执行,不因后端发布成功关闭 F06。 + +后续 Client #373 已成功发布 `dae119a`,精确 checkout 与 `client-web-test Healthy` 均已核对,证据 `reports/client-f06-command-deploy-20261002-r1.json`。两端版本匹配后执行正式 Client 全链 r1,报告 `reports/client-f06-regression-20261002-r1/client-test-env-20261002134153-72ab5b2f.json`:226 通过、1 失败、0 跳过;其中新 F06 `order-mutation-evidence` 的 58 个真实检查均通过,覆盖原键重放、异载荷、过期/缺版本、缺键、跨客户、无效图片、已提交编辑及取消后的完整快照不变。整轮仍失败:F04 PARTIAL 首次返回失败行未包含 orderId,工具却断言必须显式 null;实际为一行失败、一行成功的正确结构。正在修正空字段断言并保留原报告,尚未执行后续 ATOMIC 环境回滚场景及本批页面操作,不能据 F06 子集通过宣布整体验收完成。 + +F04/F06 后续真实回归 r4 已通过:`reports/client-f06-regression-20261002-r4/client-test-env-20261002135420-b17f2212.json` 为 288/288、0 失败、0 跳过。F06 原键成功重放、旧版本/异载荷/跨客户/错误状态拒绝及全订单快照不变再次通过;F04 使用真实下载的中文模板,核对 PARTIAL 成功行及错误报告、同键重放,ATOMIC 后行冲突使前行回滚且原成功行不变,恢复原后行内容后原键可成功重试,以及错误扩展名、损坏文件、超 5MiB、51 行、缺表头、伪造隐藏选项均不新增订单。执行版本摘要见 `reports/client-f06-regression-summary-20261002-r4.json`。 + +原 r1/r2/r3 报告保留,分别为 226/227、233/234、247/248;其红灯依次是省略 null 标识字段、Excel 数值行号 `3.0` 的文本比较、上传层已提前拒绝超大文件返回 A0400 而脚本要求 A0422。脚本修正分别提交 `8c190541`、`afb02a0a`、`25580dab`,未重新部署业务服务;直接行为合同最终 17/17,仍拒绝失败行实际标识、错误数值行号及错误拒绝理由,不放宽事务及数量断言。整轮 Client HTTP 通过不覆盖本批新增取消/编辑的真实页面操作、全部模板目录与跨客户私人地址模板对照、不可逆履约取消,以及此前单列的 Platform/submit 版本缺口。 + +F06 页面首轮已实际执行:原测试客户复制订单得到新草稿 `FL2106021903416754177`,编辑备注保存成功,取消弹框正确显示业务号/草稿状态,空原因被提示拦截,填写原因后成功取消并回到列表,草稿数量清零。只读 HTTP 回查 `reports/client-f06-ui-cancel-facts-20261002-r1.json` 确认 CANCELLED/version=2、唯一 UPDATE 与 CANCELLED 历史、备注和原因一致,会话退出。但重新打开详情显示“未知状态”及继续履约提示,端侧状态映射缺陷正在修复;不能据取消命令成功关闭页面验收。前态截图与实际 1920×1080/缩放1 记录位于本轮 visualizations 的 `client-f06-cancelled-unknown-before.jpg/json`。浏览器请求观察两次超时,未取得可靠完整请求计数,此项保持待补证。 + +上述取消详情缺陷已修复发布:Client `187deb5047e7a3d1ff835ec29f60f81669f1dea8` 经 #374 成功部署,精确 checkout 与 healthy 核对;103 项直接测试、类型检查和构建通过。原始 CANCELLED 不再被统一详情的空汇总状态覆盖,非取消未知状态仍按未知处理;取消页显示“已取消”和业务订单号,保留历史货物/备注,停止展示继续履约和计费待补充提示。原样本重新加载后已实际确认,截图及同次 1920×1080/缩放1 记录为 `client-f06-cancelled-fixed.jpg/json`;发布报告 `reports/client-f06-cancel-status-deploy-20261002-r1.json`。正常复制草稿、编辑保存、必填取消原因、取消成功及终态详情的页面路径已有证据,浏览器过期页面与响应丢失重试仍未覆盖。 + +取消阶段网络缓冲已独立恢复,`client-f06-cancel-network-r1.json` 无截断、无后续分页:一次取消 POST(expectedVersion=1、原幂等键摘要留存),其余为确认前详情、列表/仓库刷新和重开详情的 GET,共八个业务请求均 HTTP 200,无重复取消写入。此项证明请求组成,不视为已完成请求成本优化;编辑阶段缓冲未恢复,不把此记录外推为整段创建/编辑/取消完整请求量。 + +F06 第二批已发布:Order #180 为 `c55ecabbfbec9eb769403adab0c2063109cfb9e3`,Platform 编辑/取消及 Merchant/Platform 提交统一要求版本与幂等键,构建 364/364、精确 checkout 与 healthy 均通过,证据 `reports/order-versioned-submit-deploy-20261002-r1.json`。Client #375 为 `5f963f326ef3179fbbe2b7373f31e78162e1b7c0`,包含 `e564353` 的提交命令冻结、草稿直达状态修复及会话修复;精确 checkout 与 healthy 通过,证据 `reports/client-versioned-submit-deploy-20261002-r1.json`。Admin 取消 API 消费者 `bca08f8749c4cf307068f8faad67deb2b9bea6e5` 已推送、6 项直接测试通过,但未部署;Admin 仍为 #487。 + +双标签权限修复已包含于 Client #375:同身份 Token 轮换自动恢复权限,换身份立即清除旧权限;旧账号迟到 401、刷新等待与返回后的重发均核对原请求身份,不借新账号会话重放。35 项真实 store/Axios 行为测试、类型检查和构建通过。浏览器原标签已被清理,新版重新建立两页:草稿直达详情显示草稿且可编辑;第二页保存 `UI-F06-375-new-page` 后,旧编辑页两次保存均留在编辑态。只读 HTTP `reports/client-375-stale-page-facts-20261002-r1.json` 确认仍为 DRAFT/version=2、新备注保留且仅有两条历史 UPDATE(本轮只新增一次),独立回查会话已退出。新版页面截图及同次 1920×1080/缩放1 记录为 `client-375-draft-saved.jpg/json`。未可靠捕获旧页冲突提示/拒绝响应,请求观察返回空记录;不据此关闭冲突提示、请求量或正常 Token 轮换的浏览器验收。 + +第二批真实 HTTP:`reports/client-versioned-submit-regression-20261002-r1/client-test-env-20261002153217-4b088d6f.json` 为 301/301、0 失败/跳过,包含新的提交原键重放与拒绝后事实核对。Platform 专项 `reports/platform-order-commands-http-20261002-r1.json` 为 181/181、106 请求、2 模块、0 跳过,管理员会话退出;在本轮客户新建两张独立草稿,分别验证平台提交和取消的首次旧/缺版本、缺键拒绝、成功唯一动作历史、原键重放、异载荷及新键重复拒绝后完整订单事实不变。新增脚本与合同提交 `d1a13cdc`(行尾规范化 `c0c6e218`),无需重新部署服务;本次不涉及不可逆履约取消,也不替代 F01–F40 全链及四端页面验收。 + +2026-10-03 浏览器补证:本轮 visualizations 下 `client-375-stale-save-network.json` 已捕获旧编辑页实际 PUT,expectedVersion=1,HTTP 200 / A0409“订单版本已变化,请刷新后重试”;记录完整且无截断,共八个请求。操作恰遇自然过期:前置 GET 401 后仅一次 refresh,再重放前置 GET,读取权限/企业资料/个人资料各一次,读订单一次、业务 PUT 一次,无重复业务写入。`client-375-cross-tab-rotation.json` 确认原编辑页保存按钮保留,另一未导航标签页订单菜单和编辑入口仍在、新备注不变,正常自然轮换及跨标签权限保留已有真实浏览器证据。截图 `client-375-stale-save-response.jpg` 保留未覆盖的旧表单,但未捕获短暂消息提示,不把该截图作为提示已显示的视觉证据;此前空网络观察不再作为本次请求判断依据。 + +Client #376 已发布 `81a2e6473da2633150ef5823564b455ab8f5e4a7`,精确 checkout 与 healthy 核对,报告 `reports/client-warehouse-address-deploy-20261003-r1.json`。修复详情加载仓库主档后将省市再次拼到订单完整地址前的问题;Order 的 `receivingWarehouseAddress` 本身包含国家、省市、街道及邮编,Client 原样展示,不改持久化字段、请求或主档。102 项相关测试、类型检查和构建通过,总控复跑直接行为 22/22。原测试草稿刷新后地址正常,打开编辑加载主档、只改备注为 `UI-F06-376-address-check` 并保存后仍不重复,编辑框关闭。`client-376-warehouse-address.jpg/json` 记录实际页面及同次 1920×1080/缩放1;这是定向展示修复,不因此重复整轮 HTTP 或声明全页面验收完成。 + +船节点摘要缺陷已复现并提交 `4cd51a49557ba77b5cd4f1fb98b04360693b4eb7`:旧 Firstleg 对稳定 providerEventId 的整份响应哈希变化报冲突,供应商追加节点或改 ETA 可阻断后续事实。五个 Integration 适配器保留全响应审计哈希;唯一生产修改在 Firstleg,分别比较固定字段序列的节点/异常事实摘要,排除本次查询时间与整份响应哈希,保留首次审计列。真正同 ID 改时间/地点/状态仍冲突,DATETIME(3) 按存储精度四舍五入后比较(含跨秒进位),不使用容忍窗口。五家脱敏 fixture 与 Firstleg Spring/MyBatis/H2、调度器定向 72/72,0 跳过;已先复现旧实现冲突及亚毫秒进位缺陷再修复。Firstleg #473 已成功发布精确提交并核对 healthy,服务测试 1550 项、0 失败/错误、9 跳过,证据 `reports/firstleg-carrier-fact-deploy-20261003-r1.json`。发布后原查询详情、历史、六家适配策略及独立会话退出五次真实 HTTP 均成功,报告 `reports/firstleg-carrier-fact-smoke-20261003-r1.json`;该只读检查不验证供应商追加事实或异常解除,C66 外部异常生命周期仍未关闭。 + +自动船期运行前置已查明:`reports/carrier-runtime-flags-20261003-r1.json` 经实际 TEST 容器只读核对,Firstleg `CARRIER_SCHEDULE_SCHEDULER_ENABLED=false`,两服务 healthy,多家供应商适配已启用。模块与当前 Nacos 模板均使用该开关、默认关闭;环境变量事实不单独证明其他配置源无覆盖。实际数据库只读报告 `reports/carrier-runtime-backlog-20261003-r1.json` 为 READY 602(MATSON 601、SML 1),其中 574 已到期,所有 636 条任务均无 lastAttempt,MATSON READY 中 600 条为 TSTU 测试柜号,另 34 条 STOPPED。不能把这些 READY 任务未运行归因于修复后的摘要逻辑,也不能无范围开启默认每触发最多 2000 任务的调度来制造第三方验证。尚未更改调度开关、删除/重置任务或调用这些历史测试号码;真实外部生命周期需先落实受控查询范围与供应商输入样本。 + +客户签收下载页面补验:Client #376 原退税根入仓码 `NYEXX2610020156` 对应派送 `DL-WH-20261002-671298`,页面已签收、签收时间与唯一 receipt.txt 文件及下载按钮可见。实际点击并等待下载事件再次发生工具超时,没有取得可核对的本地文件。配对证据 `client-376-receipt-download-attempt.jpg/json` 记录 1920×1080/缩放1 和 `savedFileVerified=false`;文件接口既有字节一致与隔离证据不代替此次浏览器保存,C63 页面下载完成仍未关闭。 + +下载取证已做隔离对照:业务按钮点击完成但 10 秒等待下载事件超时;本地独立页面分别使用立即释放与延迟 1.5 秒释放的 Blob 下载,两种点击都完成、都没有可观察下载事件。证据 `iab-download-control-20261003.json`,本地对照服务 session 8478 已停止、临时页面关闭。这只能证明相同问题不局限于业务页面,不能断言业务下载失败或本机保存成功;未据猜测修改业务代码,已请求用户人工确认同一派送文件能否保存并打开,其他工作继续。 + +PDA 入口补核对:`reports/pda-edge-inventory-20261003-r1.json` 确认两套既有 H5 镜像仍运行,均只有内部 80 端口、无宿主机发布端口。两应用部署契约明确静态容器只提供根目录资源,独立域名入口另将 `/gateway-api/` 代理到统一 `/api/`;当前静态 nginx 不含 API 代理是既定分工,不作为已复现缺陷修改。现有可见 Docker 容器中未发现发布 80/443 的域名入口,不能据此断言外部反代不存在;公网 URL/反代路径仍未确认,先前本机代理的 390×848 作业证据保留其原范围。 + +F01/F05 门禁补验:脚本提交 `9803dcfd` 复用本轮新注册客户和原有资质拒绝步骤,补完整订单、精确履约任务及入库分页前后核对;通过正式 Finance 接口仅对本轮零余额、无冻结/授信/流水客户扣减 0.01 元,核对实际负余额后分别从 Merchant/Platform 提交草稿,均为 A0403“账户实际余额为负,请充值后再下单”,拒绝后订单、履约、账户与流水不变。finally 依据唯一原扣款及精确版本恢复 0.01 元,原余额/授信恢复,保留恰两条审计流水。真实 `reports/client-order-gates-regression-20261003-r1/client-test-env-20261002162746-180aceef.json` 为 333/333、0 失败/跳过,`REJECTIONS_VERIFIED` 与 `RESTORED_WITH_AUDIT` 已核对;直接合同 26/26、网关 5/5。未停用公共渠道;渠道下线仍须构造本轮客户专属双版本价格簿及发布映射,不能用随机无效渠道冒充;上游不可用故障尚未注入,不据此关闭全部下单门禁。 + +渠道下线随后补验通过:脚本 `0319bb51` 复用已发布有效 XLSX 源和仓库映射,仅给本轮新客户发布专属 A、创建原渠道草稿,再发布排除目标工作表的专属 B。实际解析渠道集合、客户端渠道移除且不回退公共版本、原冻结版本的 Merchant/Platform 提交均返回 A0409“所选渠道已下线,请重新选择”、完整订单/履约零漂移及全部公共版本未变均已核对。报告 `reports/client-channel-gates-regression-20261003-r1/client-test-env-20261002164602-46a3595a.json` 为 360/360、0 失败/跳过,负余额准备也已恢复;直接合同 36/36、网关 5/5。报告 `versions[].status` 原记录各次发布当时状态,不能当作最终状态;独立只读 `reports/client-channel-gates-final-versions-20261003-r1.json` 核对 A=SUPERSEDED、B=ACTIVE,独立会话退出。后续报告格式已由 `1db6e744` 分开保存发布时与最终状态,36 项合同通过,原真实报告保持不改写。新增专属价格簿及测试草稿保留,不触碰公共版本或旧客户;Finance/IAM 不可用故障仍未验证。 + +下文保留各批次原始失败与后续修复证据,历史批次中的“待验证/未发布”不代表最新发布状态;不得把局部成功或累计断言数换算为全流程完成率。 + +海外退货库存阻断已修复并发布 `4655090f76320269b04abf292fa91e67ba0a38db`:同事务扣减 SKU 总量、可用量和箱数,并写入 `ll_return_inventory_outbound_movement`;保留箱内明细作为历史快照。仅创建此一张新表,未执行全库初始化或车辆功能 SQL。直接受影响 Java 测试 68/68、初始化合同 10/10、网关合同 5/5 通过;Jenkins #193 的 Lastleg 测试 982 项、0 失败/错误、2 跳过,精确提交及 healthy 已核对,报告 `reports/return-outbound-accounting-deploy-20261002-r1.json`。 + +新样本 `RETU-WH-20261002-759489` / `PDA202610022105959210446536706` 通过真实 TEST API 建立一箱五件库存,由 390×848 H5 页面扫码并完成。扫码后总量/可用量/箱数均为 0,唯一 `OUTBOUND -5` 对应此出库单,箱内五件明细仍保留;同键同载荷重放不再扣减,同键换箱码及新键重复拣货均拒绝且事实不变。完成后任务为 COMPLETED、出库单为 OUTBOUNDED,库存与流水未再次变化。HTTP 证据为 `reports/return-outbound-stock-postpick-http-20261002-r1.json`、`reports/return-outbound-stock-completed-http-20261002-r1.json`;页面证据为本轮 visualizations 下 `overseas-return-stock-browser-proof.json`、`overseas-return-stock-completed-390.jpg`,扫码及完成各一 POST、一详情 GET,均 200、记录无截断。页面经本机同版 H5 连接 TEST Gateway,仍不替代公网反代或真机。旧样本库存失败报告 `reports/return-outbound-stock-accounting-audit-20261002-r1.json` 原样保留。 + +本轮退货页面验收结束后,已按精确身份核对并停用两个临时海外 PDA 操作员,回查均为 DISABLED,管理会话已退出;报告 `reports/return-outbound-ui-operator-cleanup-20261002-r1.json`。保留所有业务样本及原失败证据。 + +退货出库正式回归已补入并提交 `fa51d9235cb1e805e3ed5471ed4d38bcd97b6cf7`(仅脚本、直接测试及模块说明,无新增服务部署)。`phase4-overseas-return-followups` 的普通退货与换标后出库共用库存核对;去掉取首行或空 positions 的绕过,按真实响应接受省略的空位置字段并规范化三个库存数量字段。直接 Node 合同 37/37、脚本文档合同 4/4、网关合同 5/5 通过。新客户真实串行回归 `reports/return-outbound-accounting-regression-20261002-r1.json` 为 743/743、468 次请求、3 个模块、0 失败及跳过,普通出库 `RETU-WH-20261002-837442`、换标后出库 `RETU-WH-20261002-637697` 均核对唯一负流水、历史明细保留、同键重放/错误载荷/新键重复请求后事实不变、完成与完成重放不二次扣减。两名专项临时 PDA 已 finally 停用,管理员会话已退出。该次显式使用 `return-main-chain-only=true`,第二客户、跨仓及并发扩展排除范围保存在报告中,不据此宣称这些场景通过,也不代替全流程或公网 PDA 验收。 + +## 卸柜反向事件故障验收(2026-10-02) + +新增显式 `--verify-unload-event-recovery true`,从正式海外 PDA 收货链选定本轮首柜的 `OverseasContainerUnloaded`,只修改 Lastleg 同镜像运行时目标与故障退避;不执行业务 SQL,不借旧事件制造重放。按柜次选择的代理保留独立脱敏记录;执行器核对原事件身份/完整信封/摘要、12 次失败与 DEAD、唯一人工 retry 审计、第 13 次 DUPLICATE/PUBLISHED、Firstleg 唯一 PROCESSED Inbox、柜卸货/照片/预计还空时间及版本不变。恢复后核对库存、位置、托盘组成、收货完整键、操作与流水不变,并核对原镜像 ID、有效配置/挂载/网络身份指纹、healthy、代理停止。整合本地测试 80/80;源码快照为 `reports/reverse-unload-recovery-source-20261002-r2.json`,这批只改验收工具,未发布新业务镜像。 + +第一轮 `reports/reverse-unload-recovery-20261002-r1.json` 为 6426 项中 6421 通过、5 失败。实际事件恢复已执行,但工具误将 Docker 从已有网络 MAC 派生的顶层字段计作配置变化,并用截断到毫秒的时间与 MySQL DATETIME(3) 四舍五入结果比较。已分别按每张真实网卡 MAC 仍严格相等、数据库精度精确取整修正,未知 MAC/真正字段变化或时间偏移仍失败。原服务已恢复、代理已关闭、库存不变;原事件补充取证及旧证据重新校验分别保存于 `reports/reverse-unload-recovery-original-finish-20261002-r1.json`、`reports/reverse-unload-original-proof-validation-20261002-r1.json`,后者明确不是新的 HTTP 运行,原失败报告不改写。 + +第二轮自动链 `reports/reverse-unload-recovery-20261002-r2.json` 为 7511 项中 7506 通过、5 失败、4551 次请求,整轮仍未通过;5 条失败均从上述国内封签上传无响应及其前置缺失产生。独立目标柜 `TSTU7869340` / 事件 `315d19e9-453f-47fb-886a-f47ef8af9fe3` 的反向故障已全自动完成并恢复:上游实际 APPLIED 一次、随后 DUPLICATE,前 12 次丢 ACK,第 13 次原事件重试成功,消费记录唯一,库存与柜事实不变,原镜像/有效配置指纹匹配、服务健康、代理已停止。提取证据 `reports/reverse-unload-recovery-proof-20261002-r2.json` 只证明该故障范围,不覆盖封签失败、完整生产矩阵、签收事件、设备或第三方船司。 + +国内封签上传专项补充:原失败为 HTTP 0 / `TypeError: fetch failed`、无 requestId/traceId,不能推定为业务拒绝;正式 API 回查原任务 `2105979722985902081` 仅四张照片,SEAL 未落库(`reports/seal-transport-inspect-20261002-r1.json`)。脚本修复已提交 `c9a1e93299067393a4c45899bb4e846f5f14f6ab`,仅在尚无 HTTP 响应时以冻结的 URL、PDA 身份、原 key、文件名/字节、版本和封签号最多重试三次,记录脱敏错误码;已有 HTTP/业务拒绝不重试。直接模型与相关合同 22/22、网关/文档门禁 9/9 通过。`reports/seal-transport-replay-20261002-r1.json` 在原请求上真实提交后由客户端受控丢弃首个成功响应,再以原 key 自动重试:两次请求返回同一 evidenceId/fileId,最终只有一张 SEAL、原四图不变、会话退出。该注入是客户端受控响应丢失,不声称复现原始底层网络原因;r2 原五条失败与未就绪生产矩阵仍原样保留。生产服务未因此重新部署。 + +国内装柜证据事务修复已由 `d0df738bbac6e18edcab455de47f39e24ef4d5f8` 经 Firstleg #472 发布:上传入口纳入本地数据库事务,插入重复键不得吞异常提交已作废的旧行,所有证据写入使用已有任务行锁,与任务完成互斥;查询保持普通读取。真实 Spring 事务代理、H2/MyBatis 红灯先复现插入失败后的旧行错误作废、重复键吞异常,以及普通读越过并发完成门禁;修复后 17/17 通过。生产代码、原服务测试及新增事务测试共三个文件提交,无 Mapper、SQL 或 File 协议变化。Jenkins Firstleg 服务测试 1545 项、零失败/错误、9 跳过,精确 checkout 与健康镜像已核对,报告 `reports/firstleg-evidence-transaction-deploy-20261002-r1.json`。 + +发布后 `reports/loading-evidence-transaction-http-20261002-r1.json` 的 14 项真实检查通过:原可补证任务完成照片替换,旧证据保留为 VOID 历史、同类型唯一新 ACTIVE、其他四类不变;原键重放无重复记录/文件,原键异载荷冲突后不变;另一已完成任务被拒绝补证且证据不变,所有测试会话已退出。强制插入失败和并发完成的回滚/行锁证明来自本地真实 H2 事务,不伪称已在 TEST MySQL 注入同类故障;File 的远程上传不参与本地数据库回滚,本批未新增补偿或存量清理。此修复独立于前述上传网络错误,不能据定向通过改写 r2 整轮失败。 + +修复后的新数据收货依赖链已于 `reports/overseas-receiving-current-20261002-r1.json` 完成:7065/7065 项断言、4284 次请求、零失败、零跳过模块;六个柜的原始库存/位置/托盘组成/不可变流水证据均为 VERIFIED,96 次证据上传均首次成功,本轮未触发传输重试。两名临时海外 PDA 操作员 finally 停用,管理员会话退出。本轮使用 Firstleg #472 / `d0df738b`,不注入已独立通过的事件故障,单列保留设备一项、第三方船司四项覆盖缺口。原 r2 的五条失败仍原样保留,但其所影响的收货生产前置已由此新数据回归补齐;不将收货链通过外推为未发布 fleet 或 F38–F40 新链通过。 + +事件恢复与只读取证正式脚本已集成提交并推送 `4b531c7e226b38aaf4df930411595a934c8ccd5b`,直接合同 96/96 通过,包含正向/反向固定事件选择、失败恢复、原事件证明、收货快照及精确范围检查。新增 `fba-core-regression-evidence.test.mjs` 独立维护取证器测试,未提交尚依赖 fleet 的 F40 新编排及手工状态矩阵变更;工作区保留其原有改动。本次脚本提交不表示重新部署业务服务。 + +## 自动化补充的验证边界(2026-10-02) + +此前将 `fba-stage-completion-audit-current-20260930-r7.json` 解释为“77/77 全部验收完成”的结论撤回:报告存在完成字段矛盾,C52 使用了单元测试,C66 错用了报关异常证据,C63 未闭合当次页面保存与内容校验。该历史文件保留,不据其关闭整体验收。 + +| 范围 | 已取得的证据 | 尚不能外推的范围 | +|---|---|---| +| 证据校验 | `scripts/acceptance-evidence-audit.mjs` 核对证据级别、业务域、版本、摘要、运行身份与检查项;旧 r7 的矛盾被实际检出 | 清单及断言语义仍需评审,不以元数据校验代替业务操作 | +| C52 多目的地排车 | `reports/c52-multi-destination-http-20261002-r1.json`:本轮 ABE4/ABE8 排车增减、去重、重放、拒绝后原明细不变及测试托盘锁释放通过;依赖链 6312/6312 | 非完整尾程签收、页面或设备验收 | +| C66 船节点异常 | 四类异常及解除的 H2 真实持久化、幂等、冲突、事务回滚 6/6;`reports/carrier-exception-http-20261002-r1.json` 新样本基线链 1202/1202 | HTTP 只验证查询基线;供应商输入经 Integration/调度器写入异常的环境生命周期仍缺证据,不用报关异常替代 | +| C63 客户下载 | 客户端实际下载处理函数、业务 API 与 HTTP Blob 链的离线测试验证字节、SHA-256、文件名和失败不保存;提供当次浏览器保存校验 helper | Mock 传输不证明服务端隔离或实际浏览器保存,不能用旧同名同大小文件代替 | +| F40 串行入口 | 正式 `scripts/fba-core-regression-test-env.mjs` 提供三种签收顺序、库存/完成事件只读取证、失败即停、独占报告;修复连续客户缓存及候选异步收敛后,`reports/fba-core-f40-20261002-r3/summary.json` 三模式分别 1014/1011/642 项全部通过,保存 30 份独立取证记录 | 仅覆盖声明的 F40 场景,不替代页面、设备或反向事件故障矩阵;r1/r2 失败报告保留,不改写 | + +本批次改动为验收脚本和测试,不据此宣称重新部署了服务。上述 HTTP 报告仍保留设备及外部船司覆盖缺口;完整页面作业、真机和其余可靠性矩阵继续按本契约原验收边界判断。脚本用法及配置统一见后端 `scripts/README.md`,历史报告均在后端 `reports/`。 + +## 下一批自动化回归整理(2026-10-02) + +本节区分已有测试与待补场景,不将计划视为已执行,也不按累计断言数计算 F01–F40 完成率。优先补业务结果与跨端衔接,避免重复增加只检查源码文本或模拟自身实现的测试。 + +| 优先级 | 场景与现有基础 | 下一步自动化及通过条件 | +|---|---|---| +| P0 | 海外退货出库:扫码及记账修复已发布;持久化专项 12/12,新一箱五件页面/HTTP 库存核对通过,见上文最新验收 | 正式回归补入库存总量/可用量/箱数、唯一 OUTBOUND 流水、历史箱明细和重放前后事实核对;直接使用 PDA 返回的可扫码明细。多箱、跨客户/仓库/来源及失败回滚的本地证据与真实 HTTP 范围分别记录,不以任务完成状态替代库存核对。 | +| P1 | 报关资料分页:已有第 201 票、分页失败、总数变化及最多 4 个并发详情请求的动态测试 | 真实只读报告 `reports/client-customs-real-pagination-20261002-r1.json` 已取全 5533 条、28 页,5 票候选均在第一页。仍需页面复验;订单和详情请求分别计数,筛选不重复拉取,失败明确展示。不能以该样本证明第二页退税票实际页面已验收。 | +| P1 | 两文件报关链与完成后下载:已有退税根/子订单 HTTP 链及六份实际下载校验 | 将现有专项纳入固定回归组合:上传资料→回执→确认/打回→发送执行→完成文件→订单最终完成后仍可下载;完成订单不进入待上传列表。内容校验用本轮上传字节摘要,跨客户访问须拒绝,不检查文件业务类型。 | +| P1 | 国内 PDA:已有重复码去重、剩余箱数、证据门禁的测试与两箱页面证据 | 补齐同一业务动作的组合回归:第一箱后刷新仍剩 1、重复扫码不增加库存流水、第二箱后剩 0、缺取证/封签不能完成、齐全后完成并退出待办;响应丢失重试保持原幂等键,不能仅验证按钮禁用。 | +| P1 | 反向完成事件:正常根/子签收顺序与余量取消、装柜/卸柜/签收原事件ACK丢失→DEAD→原事件恢复已有各自真实证据 | 未出账应收费用作废ACK故障已另有独立证据;继续核对尚无真实证据的摘要冲突及事务中途回滚;已有原事件恢复不外推全部故障矩阵。外部故障注入仅在独占TEST时执行并恢复配置。 | +| P2 | 船节点异常:已有四类异常及解除的持久化测试,环境报告目前只证明查询基线 | 经 Integration/调度器真实入口驱动异常产生、重复输入、解除和状态回显。外部正式输入不可用时保留缺口,不以报关异常或直接改业务表替代。 | + +执行分层:改动时跑直接受影响的本地行为/持久化测试;发布 TEST 后跑相关真实 HTTP 专项;页面按明确业务路径复验。当前不新增定时任务,也不默认每次改动都重跑全量造数。视觉布局按既定人工验收规则;H5 输入不能证明 PDA 真机扫码广播、相机与设备弱网。 + +## Admin 全量 HTTP 复核(2026-10-02,尚未全绿) + +`baiyue-firstleg/reports/admin-full-current-20261002-r4.json` 实际执行 163 次模块运行、131 个独立模块、9673 个独立请求,15500 项断言中 15499 通过、1 失败、0 跳过模块。唯一失败为车辆 CSV 仍返回旧表头和旧内容,未包含容量字段;车辆/车次功能仍在另一个对话开发,当前 TEST Lastleg 镜像与车辆表均尚未包含这些变更,不据此发布尚未完成的功能。只读版本与 Schema 证据见 `reports/admin-deployed-services-20261002-r4-final.json`、`reports/admin-fleet-schema-readonly-20261002-r4.json`,诊断汇总见 `reports/admin-full-diagnosis-20261002-r4.json`。本轮及此前失败报告保留,待该功能完成部署后重新全量验收。 + +随后补查车辆容量的完整持久化回显:脚本在创建、详情、编辑和列表分别核对托位/载重/容积,编辑改用不同容量,CSV 核对编辑后的值。`reports/admin-vehicle-capacity-http-20261002-r5.json` 为 75 项中 70 通过、5 失败;四个新增断言均发现旧服务返回成功但缺少容量字段,CSV 仍是旧格式,指向同一未发布原因。对应源码的车辆/车次/排车 Java 测试 51 项通过,最新离线根脚本 267 项、Admin 合同 781 项通过(`reports/admin-current-{root,module}-contracts-20261002-r6.log`);这不代替服务部署后新的完整 HTTP 全量。新版车辆编辑还依赖车次资源占用表,发布前须完成相应 Schema 准备。 + +- Lastleg 候选排车查询与正式锁定的换标占用门禁不一致已修复;`8b9b135a` 经 Jenkins `backend-java #660` 发布。Firstleg 公共船期 `customerId=0` 被查询 DTO 错误拒绝已修复;`0b34f99b` 经 `backend-java #661` 发布。两者实际镜像及健康状态已核对,本轮相关 HTTP 回归通过。 +- 验收脚本修复了隔离客户 COMPLETED 真实履约造数、长运行标记截断导致重复提单号、PDA 完整会话交接、完整直接投递目标路径核验等问题。r4 内密码重置多会话撤销、PDA 仓绑定变更与取消 PDA 身份后的访问拒绝通过;受控目标装柜事件经过 ACK 丢失、12 次失败 DEAD、原事件人工 retry、DUPLICATE/PUBLISHED,消费一次,原配置已恢复。 +- 独立 `reports/fba-core-admin-f40-20261002-r4/summary.json` 的 ROOT_FIRST、CHILD_FIRST、ROOT_SIGNED_REMAINDER_CANCELLED 分别 1012、1007、648 项通过,保存 31 份只读取证记录。离线根脚本 267 项、Admin 合同 779 项通过,零失败、零跳过;对应日志为 `reports/admin-current-{root,module}-contracts-20261002-r5.log`。 + +全量报告另记录 11 项非阻断覆盖缺口:1 项明确无版本字段的合同、1 项设备、4 项第三方船司、5 项不能经当前公开 API 稳定造数的入仓状态。HTTP 断言通过不关闭页面、设备或其余故障矩阵;本轮也未重置数据库或为这些状态直接改业务记录。 + +## 四端页面与请求量验收(2026-10-02,进行中) + +本轮用户明确授权 TEST 部署、数据库、真实 HTTP 与内置浏览器验收;Admin/Client 固定 1920×1080,两套 PDA H5 固定 390×848。以下仅是已完成操作的事实,不关闭全部节点验收。 + +- Admin 实际退出确认、回到登录页并重新登录通过。登录加看板首屏共 5 个业务请求(登录、权限、订单、客户、履约指标各一次),HTTP 均为 200;已保存 1920×1080 截图与脱敏网络记录。 +- Client `162e9a233671362c02e405588c0b5b88d7cc587a` 经 Jenkins #365 发布且核对实际 checkout;修复派送方式筛选/中文展示及列表响应乱序覆盖。真实派送列表首次加载、快递筛选、重置各 1 个业务请求,返回正确数据/空态。发布切换曾短暂 502,随后外部首页、healthz 与页面均恢复。实际客户端视口重新读回确认为 1920×1080,不把新标签页的初始默认尺寸截图计入正式尺寸验收。 +- Client 签收下载已观察到本次点击后新增的 83 字节文件,创建/修改时间均晚于点击,SHA-256 与已知上传测试源内容一致;浏览器工具的 download 事件仍未返回路径,故使用点击前后目录差分及源字节摘要取证,不复用旧下载文件。该证据只覆盖本企业这一受控样本,不代替其他客户隔离或其他文件类型。 +- 国内 PDA `8d2d80ec11bf3d34a56d117fc1aad469a2b1c9e3`:未完成提交防重、隐藏/卸载后旧任务请求失效;全部 Node 测试 161/161,HBuilderX H5 导出成功。海外 PDA `c77fdb775c3a4094a1aca68bb66ac0bbd89b6c46`:签收照片按归属与文件身份复用、隐藏后的扫码队列停止;全部 Node 测试 157/157、H5 构建成功。 +- 两 PDA 原镜像在容器中根路径 `/` 为 404,虽 Docker 显示 healthy,不能认定页面健康。新静态包发布后分别为 `pda-domestic-h5-test:h5-20261002-f11731e5b5d8`、`pda-overseas-h5-test:h5-20261002-fbe902195c4a`;两者 healthy 且容器内 `/`、`/healthz` 验证通过。发布记录在后端 `reports/pda-h5-release-20261002-r1/dispatch.json`,公网反代、390×848 页面及具体作业请求量仍待复验。 + +- Client 派送费用中文展示 `c115f1c5044396b55f7e3d23a99ca95a122ed7da` 经 #366 发布成功,实际 checkout、容器 healthy 均核对;真实派送详情已显示“派送费”,截图 `client-delivery-fee-1920.jpg`。 +- Client 报关入口生命周期 `605388e6668026ddc44afe7df6db7b6e5dad492e` 经 #367 发布成功并核对 checkout/healthy。独立资料页与订单快捷入口统一保留 LOADED、DELIVERED、COMPLETED 的退税订单,仍依赖服务端返回本票退税归属;买单及装柜前订单排除。独立页补充订单查询失败和单票资料失败提示,不再将失败静默当空列表。新增实际 Vue setup 行为测试 5 项,相关测试共 66/66,类型检查与构建通过。报关完成样本的真实页面打开、下载及单票请求量已补验,见下述证据;订单最终 COMPLETED 后的访问仍待完整退税签收链验证。发布报告为 `reports/client-customs-lifecycle-deploy-20261002-r1.json`。 +- 海外 PDA 出库修复 `cd9bc815a5620a2104306a966bc8c99e11388a5d`:实际页面处理函数测试先复现已完成任务仍发送整托拣货、废弃查询并发、废弃重复提交、重试误恢复旧普通出库任务及切单后旧请求污染错误态,随后修复。新增 7 项行为测试(含正常待拣/拣货中提交与失败保留重试码),全部 Node 测试 164/164,H5 构建通过。已发布 `pda-overseas-h5-test:h5-20261002-e956b5f5faba`,核对容器 healthy、根路径实际返回内容 SHA-256 与本轮构建首页一致、healthz 成功;发布报告 `reports/pda-overseas-outbound-release-20261002-r1/dispatch.json`。这是函数行为与容器发布证据,海外 PDA 公网入口和 390×848 实际作业仍待验证。 +- 本轮重新创建同柜两客户退税样本,`reports/customs-ui-current-20261002-r1.json` 实际 HTTP 835/835、536 次独立请求、0 跳过模块通过。使用本轮主客户正常登录页面,资料列表显示入仓码 `NYEXX2610020109`、柜号 `TSTU6169402` 为报关完成;打开弹窗可见回执确认历史、五类已处理海关结果及完成文件按钮,保存 1920×1080 截图 `client-customs-completed-1920.jpg`。实际点击完税文件下载后新增文件的创建/修改时间晚于点击,3 字节与本轮原始上传内容一致,SHA-256 为 `7ab4f62d323b0ca788f8742708674044b518eb6ca1a508ba4ef0e38adb8579e7`,证据 `client-customs-final-download-current.json`。样本文件是下载链路测试字节,不是有效 PDF 内容验证;订单仍处于装柜后阶段,不能代替订单最终 COMPLETED 后的文件访问。网络观察最初读取超时,之后已取得下述单票刷新与查询的完整记录。 + +- 报关页面请求量后续补验已取得完整记录:当前一票退税样本点击刷新,订单列表、仓库列表、该票报关详情各 GET 一次,3 个请求均 HTTP 200,事件无截断、无后续分页;输入不存在的入仓码并查询后新增网络事件 0,页面显示明确无匹配空态,重置后恢复原完成资料行。证据 `client-customs-network-current.json`、`client-customs-list-restored-1920.jpg`。首次整页重载记录存在截断,不用于完整请求总数断言;本结论只覆盖单票样本,逐票读取资料的多票请求增长尚未做负载验收。 +- 报关弹窗请求隔离修复 `1e707f613ce60461353bfed9870ac7a114dffb03` 经 Client #368 发布,精确提交、SUCCESS 和容器 healthy 已核对。实际 Vue setup 测试先复现切单漏加载、关闭后迟到详情继续写入和旧海关结果覆盖新订单;修复后新增 5 项行为测试及相关测试 71/71,类型检查与构建通过。关闭、切换订单、组件卸载均使旧请求失效,只有当前请求可以更新详情、结果、事件和加载状态。证据 `reports/client-customs-dialog-tests-20261002-r1.log`、`reports/client-customs-dialog-build-20261002-r1.log`、`reports/client-customs-dialog-deploy-20261002-r1.json`;真实浏览器慢响应切单仍待复验,不把离线竞态测试当成页面网络故障演练。 + +- 退税两分片根先签完整链已补验:`reports/f40-tax-20261002-r2/report.json` 1097/1097、620 次独立请求、0 跳过;根 `FL2105876338460655618` 与子单 `FL2105876338460655618-1`、平台/客户投影均 COMPLETED,两柜经真实退税资料、回执确认、正式申报、人工放行和完税文件后,才完成海外收货、出库签收。之后客户六次文件 HTTP 下载的长度和摘要与上传一致。r1 报告扫描失败保留,r2 为新样本完整重跑;四项外部第三方覆盖缺口仍保留,不外推其他签收顺序或故障场景。 +- 同一退税 r2 客户正常登录后的真实页面已显示根、子两单“已完成”;报关资料列表保留两票,依次打开分别显示原柜及对应入仓码。通过实际按钮下载两票各自原件、回执、完税文件共六份,文件创建/修改时间均晚于各次点击,全部长度/SHA-256 与本轮上传事实一致。证据 `client-f40-tax-completed-downloads.json`、`client-f40-tax-orders-completed.jpg`、`client-f40-tax-completed-root-dialog.jpg`、`client-f40-tax-completed-child-dialog.jpg`。这关闭该两票样本的最终完成后页面文件访问缺口,不以此宣布全部 F01–F40 页面通过。 +- 报关列表多页修复 `1bd1664e9c14cce12911c645b982884ccfb27b80` 经 Client #369 发布,精确提交、SUCCESS 和健康状态已核对。页面专属读取器遍历统一订单全部页,资料请求并发最多 4,分页失败/重复/总数变化明确报错;不再为资料列表请求仓库。动态测试包含第 201 票、205 票候选峰值并发及失败重试,直接检查 14/14、类型检查和构建通过。发布记录 `reports/client-customs-pagination-deploy-20261002-r1.json`;多页真实页面样本仍待验收,请求总量仍为订单页数加退税候选票数。 + +本轮页面与请求证据存放在本机 `.codex/visualizations/2026/10/02/01a0d0da-130f-7d43-97b5-9c76abc1b5f1/`。多页真实数据、详情长字段展示及海外 PDA 出库完成后扫码等问题继续逐项核对,不把源码风险推定为已复现页面故障。上传资料待办误计已完成订单已由 `2f1babae45c5aa3ca57fa6fb48e1d1215c76e4a9` 修复并经 Client #370 发布(精确提交、SUCCESS、healthy 已核对)。计数和筛选只保留当前客户 WAITING_UPLOAD 且整柜 WAITING_CUSTOMER_DOCUMENTS 的订单;相关 70 项测试、类型检查与构建通过。原两票完成样本真实首页不再显示上传数量,点击上传资料后结果 0,独立资料列表仍保留两票;截图 `client-customs-upload-queue-fixed.jpg`。待办空态文案已由 `c3a213d03952fc90515a1d62c84a5ae750d70807` 按上传资料、确认计费重、草稿分别修正,类型检查/构建通过并经 Client #371 发布(精确提交、SUCCESS、healthy 已核对),新版 1920×1080 页面已复验为“暂无需要上传报关资料的订单”,截图 `client-customs-empty-copy-fixed.jpg`。 + +海外 PDA 公网地址尚缺时,本轮以本机 Vite preview 承载同一份已部署 H5 产物,仅连接真实 TEST Gateway;构建首页 SHA-256 与已发布镜像记录一致,未替换 API 或模拟业务数据。实际操作通过作业员登录、洛杉矶仓显示、出库列表、扫描本轮排车号 `DS-WH-20261002-497217` 分流至排车详情;计划/已拣/剩余为 1/1/0,已发车提示正确,发车按钮 DOM `disabled=true`。实际窗口 innerWidth/innerHeight 为 390×848、DPR=1;截图 `overseas-pda-local-completed-dispatch.jpg`,报告 `reports/overseas-pda-local-ui-20261002-r1.json`。这是本机同版前端加 TEST API 的页面证据,公网反代、新作业完整执行和请求量仍未验证,不关闭海外 PDA 公网验收。 + +国内 PDA 同版 H5 本机验收补充:以已部署构建 `8d2d80ec11bf3d34a56d117fc1aad469a2b1c9e3` 的静态产物连接 TEST Gateway,首页 SHA-256 `33408f9928d5aee23f916cbd98afa50ffd3a0ec452b17f94712bfba78826dc41` 与发布记录一致。正常账号登录后显示义乌仓,实际 viewport 390×848、DPR=1;进入出库拣货列表显示 23 个待处理任务,唯一 GET `/gateway-api/platform/v1/first-leg/pda-loading/tasks/pending` 返回 HTTP 200,事件无截断。证据 `domestic-pda-local-task-list.jpg`、`domestic-pda-local-tasks-network.json`。未领取或操作旧任务,不据此认定新任务扫码、装柜取证或公网反代已验收。 + +海外退货出库实际页面新增阻断:本轮独立样本 `RETU-WH-20261002-483777` / `PDA202610022105885618425872385`,计划 1、已拣 0、待拣 1,平台有来源箱码,但 PDA 详情未映射可匹配的托盘/箱码及 positions。真实 H5 390×848 打开后明确显示“当前明细缺少可扫码库存业务码,已禁止拣货”,完成按钮禁用;未执行出库写操作,原库存/唯一 RECEIPT 流水前证据保留于 `reports/overseas-outbound-ui-fixture-20261002-r1.json`,截图 `overseas-pda-return-outbound-missing-scan.jpg`。旧 HTTP 测试直接传明细 ID 和箱码不能证明 PDA 可操作,此项由 Lastleg 专项修复,仍未关闭。 真实 H2/MyBatis/事务测试 `ReturnOutboundPdaPersistenceTest` 已在 r3 执行 5 项、4 失败、0 错误、0 跳过,复现单箱扫码行缺失、多箱明细未分开、错误扫码/重放载荷及来源归属校验缺口;r1/r2 是其他在途测试缺 Mockito.mock 导入导致的编译失败,不能当业务红灯。日志 `reports/return-outbound-pda-red-20261002-r3.log`。由于车辆管理任务并发修改同一 DeliveryTransferService,实现写入暂缓等待协调,未部署这批未完成改动。 + +后台已完结柜真实页面补验:在货柜列表按 D1299 查询,未完结为空、已完结精确返回 TSTU9529734;详情显示报关完成、申报批次关闭、人工放行已处理、已自动离仓和 PDA 完成/5份证据。发现当前入仓摘要推进到 DELIVERED 后,出仓门禁却再次显示“入库单装柜完成要求 LOADED”的阻断,与已确认离仓同屏;截图 `admin-completed-container-gate-regression.jpg`。同时真实订舱号存在但实际渠道显示“待关联订舱”,两项已分别交头程及前端专项核对,尚未修复关闭。国内新样本 `TSTU4177667 / NYEXX2610020194` 已准备,2箱均未拣,正式确认预装已分配给本轮PDA账号;后端fixture 183/183不代表页面扫码通过。 + +国内 PDA 本轮两箱页面链已实际执行:原柜 TSTU4177667 两个稳定箱码先后扫码,第一码重复扫描不增加已拣数,三次扫码只有两次 pick POST、均 HTTP 200,事件无截断;随后页面上传五类合成测试图片并保存测试封签,缺证据时完成按钮禁用、齐全后允许完成。真实任务 2105890598828380161 回查 taskStatus/workflowStatus 均 COMPLETED、pickedPackageCount=2,刷新后从待处理列表移除。证据 `domestic-pda-two-box-scan-network.json`、`reports/domestic-pda-browser-completion-current-20261002-r1.json`。图片不是现场照片,扫码来自H5键盘输入,不代表设备广播/相机/公网入口验收。首箱时footer误显示0箱待拣及重复“已”文案已定位并有修复,163项Node及H5构建通过,已提交 `7aebbd2a70563f0f9da7330fae2b27f724bf7709` 并发布 `pda-domestic-h5-test:h5-20261002-8bca174d2693`,容器healthy与本轮首页SHA-256一致已核对;发布记录 `reports/pda-domestic-remaining-release-20261002-r1/dispatch.json`,新样本 TSTU2199461 的 H5 页面复验已通过:实际视口390×848,首码后1/2且底部剩1,重开页面重复码后仍剩1且无业务请求(仅提示音资源GET),第二码后2/2且剩0;提示不再重复“已”。证据 `domestic-pda-remaining-browser-proof.json`、`domestic-pda-remaining-one-fixed-390.jpg`、`domestic-pda-remaining-zero-fixed-390.jpg`。初次桌面尺寸截图不作为PDA尺寸证据;r2样本保留在已拣两箱、尚未装柜取证阶段,r1完整装柜链证据独立保留。 + +出仓历史门禁已由 Firstleg `2d73ce9f3776a35d7099e1ca2bef8c626d3467bf` 经 #470 部署:29项定向测试及路由合同5项通过,Jenkins服务测试1529项、0失败/错误、9跳过,精确checkout与镜像健康核对。原D1299真实gate API保留actual=DELIVERED并承认已确认离仓历史,7/7通过;页面复验为“门禁通过、已确认离仓、阻断0”,证据 `reports/outbound-historical-gate-http-20261002-r1.json`、`reports/outbound-historical-gate-deploy-20261002-r1.json`、`admin-completed-container-gate-fixed.jpg`。Admin渠道空值文案 `678bccd4d11521c73fe71cb847a4c3ae05597ea5` 经 #487 发布并核对健康;61项定向测试、类型检查与构建通过,原柜详情实际渠道已显示—且提单不变,不声称填补实际渠道数据。列表他人在途布局改动未纳入本次提交。 + +报关多页真实页面复验已补齐:配置测试客户的 5533 条订单对应 28 页,1920×1080、DPR=1 的浏览器进入报关资料页后展示 5 票;记录 28 次订单分页 GET、5 次资料 GET,全部 HTTP 200、无仓库请求、事件未截断,业务网络区间 4885ms。按订单号查询后显示 1 票,重置后恢复 5 票,两次操作各新增 0 请求。证据 `client-customs-real-pagination-browser.json`、`client-customs-real-pagination-1920.jpg`,位于本轮 visualizations 目录。5 票候选均在第一页,不能据此关闭第二页退税票真实页面场景;全量遍历订单的请求成本仍随总订单数增长,已列为定向查询优化项,不将功能正确等同于查询性能理想。 + +自动化固定入口补充:`scripts/fba-core-regression-test-env.mjs` 新增显式 `--tax-mode BUY_DECLARATION|TAX_REFUND`,默认买单,税制注入原有三种签收顺序,计划、清单、汇总及单模式报告保留税制范围。总控复跑 runner 与文档合同 19/19 通过,退税离线计划通过。随后真实运行 `reports/fba-core-f40-tax-20261002-r3/summary.json` 在 ROOT_FIRST 停止:834 项中 832 通过、2 失败,462 个独立请求、4 份只读取证;后两种模式未启动。直接失败为新接入 `fleet-trip-fulfillment.mjs` 的车辆创建 POST `/api/platform/v1/last-leg/master-data/vehicles` 返回 HTTP 200、业务码 A0422、`status: must not be blank`(requestId `4773ebf0-83e2-4312-92be-4024b3befc15`)。当前共享 F40 模块已使用车辆任务的新车次编排,与尚未发布该功能的 TEST 契约不一致;不补旧字段或回退旧发车流程来跑绿。原失败样本和报告保留,待车辆契约与部署协调后再运行,不能沿用旧单票退税报告关闭新三模式回归。 + +上述车辆阻断进一步核对:当前源码 `VehicleModels.Create` 也要求非空 `status`,而新 `fleet-trip-fulfillment.mjs` 请求未提供该字段。因此缺口包括脚本与当前 DTO 的契约不一致,不能仅归因于旧镜像,也不能假定部署就会修复。须由车辆任务先确认并收敛目标契约。r3 中根/子两票已报关完成、第一柜海外收货重放取证通过,但签收数组为空,第二柜收货、发车、根单完成及完成后下载均未执行。 + +资料页故障恢复补验:仅对本轮浏览器标签页模拟断网后点击刷新,页面显示连接错误和“重新加载”,没有成功空列表;撤销断网模拟后点击重新加载,恢复 5 票且错误消失。截图 `client-customs-offline-error-1920.jpg`、`client-customs-offline-recovered-1920.jpg` 位于本轮 visualizations 目录。未修改服务或系统网络配置;不据此覆盖写入请求响应丢失、第二页单独失败或真机弱网场景。 + +退税定向查询优化(未关闭):后端 `f532e5ee7e556835cb9f91244a05d438e8229012` 已经 Firstleg #471、Order #177 部署,固定提交与容器健康核对通过;本地 89 项定向 Java 测试、补充外客户退税样本的 Order 持久化测试及路由合同 5 项通过。Client `c06c105` 已提交推送但尚未发布,前端定向测试 15 项、类型检查和构建通过。部署后真实只读对照 `reports/customs-tax-filter-http-20261002-r2.json` 发现:原列表展示为退税的 5 个余量子单未进入税制筛选结果;Order SQL 过滤本表税制,列表存在入仓事实时展示 Firstleg 税制,而当前 `OrderFulfillmentSplitService.cloneRemainder` 未复制根单税制。客户端发布已停止,后端专项继续核对并修复生产者及补测试;不执行存量回填、不以放宽集合断言验收。r1 探针失败为请求遗漏 `/api` 前缀,不是业务过滤结果,保留原报告。 + +余量子单税制生产者修复:`195446e532580afc79cfc01ae20f05e19a81fe12` 在 `OrderFulfillmentSplitService.cloneRemainder` 复制根单税制;未修改统一列表已有入仓税制展示、未回填存量。直接测试 71 项通过,包含两税制的实际 split 命令生成子单、真实 Mapper 保存及父子分页集合;Firstleg 原 SQL 已复制父入仓税制,无需再次改动。Order #178 发布成功,精确提交与容器健康已核对,证据 `reports/customs-child-tax-inheritance-local-20261002-r1.log`、`reports/customs-child-tax-order-deploy-20261002-r1.json`。新增 F40 前置断言会核对原始子单/父子入仓税制及客户三组筛选集合,不能将旧样本修正或上游通过视作签收完成;新真实样本验证尚在进行。 + +新样本税制复验已通过:`reports/fba-core-f40-tax-20261002-r4/root_first.json` 中根单 `FL2105917412201791489`、余量子单 `FL2105917412201791489-1` 的原始子订单及父子入仓税制均为 TAX_REFUND;客户普通查询和退税筛选均精确返回两票,反向买单筛选为 0。原 5 票不一致样本的 r2 对照报告继续保留失败。r4 整链为 843 项中 841 通过、2 失败,仍在车辆创建缺少 status 处停止;不能由本次税制验证推定发车、签收或整链已完成,后两模式未启动。 + +Client 退税筛选已发布并补验:`c06c10583683b58310f805abf1432b3b055e7a34` 经 #372 发布,精确 checkout 与容器 healthy 核对。原多页测试客户在 1920×1080、DPR=1 页面仍显示相同 5 票报关资料;独立点击刷新记录未截断,14 次带 `taxMode=TAX_REFUND` 的订单分页 GET + 5 次资料 GET,全部 HTTP 200,业务网络区间 2824ms。与同客户此前 28+5 次、4885ms 样本相比,本次业务请求减少 14 次;不将单次耗时对照视为通用性能基准。证据 `reports/customs-tax-filter-client-deploy-20261002-r1.json`、本轮 visualizations 的 `client-customs-tax-filter-browser.json` 和 `client-customs-tax-filter-1920.jpg`。首次整页重载事件有截断,未用于精确计数;旧不一致子单的 r2 集合对照失败仍保留,未回填数据,新父子生成的正确性由 r4 税制前置证据证明。F40 车辆阻断及海外退货出库缺口仍未关闭。 + +筛选接口定向真实验证补充:`reports/customs-tax-filter-validation-http-20261002-r1.json` 的 10 组检查通过。配置客户退税总数 2618、买单 2808(各核第一页 200 条税制及客户归属);带 LOADED 或 loaded=true 的履约查询各返回 5 票退税,COMPLETED 为 0;伪传另一客户 ID 返回空集合,不泄露其订单。空串、小写、尾空格和 OTHER 均返回 A0422。该报告不证明旧存量集合完整一致,也不替代第二页或新父子生成证据;会话已正常退出。 + +海外退货扫码独立修复已发布,但完整库存验收仍失败:车辆任务授权释放退货方法后,总控确认当前实现已覆盖旧补丁目标,旧补丁作废。仅提交退货方法、相应 OpenAPI 和 7 项持久化测试,提交 `e15bec30527711efdc38fe8127d80a51b2af77bd` 经 Lastleg #192 发布,固定源码、容器健康核对,完整服务测试 977 项中 975 通过、2 环境项跳过。本地定向 55/55。未混入 fleet、重量或文档包移动变更,也未执行 Schema 写入。证据 `reports/return-outbound-independent-deploy-20261002-r1.json`、`reports/return-outbound-pda-current-green-20261002-r1.log`。 + +海外 PDA `f5f64e22e95b37a7594918f6fcfd9ae7a6e9459b` 仅修正退货拣货的空仓位参数,165 项测试和 H5 构建通过,发布镜像 `pda-overseas-h5-test:h5-20261002-f2b13788e312` healthy、根页摘要与构建一致。构建时经车辆任务授权临时保管其 3 文件改动,构建后完整 Git 内容已恢复,stash 保留;dispatch.vue 仅发生换行规范化,未丢失源码,详见 `reports/pda-overseas-return-release-20261002-r1/source-isolation.json`。初次 pnpm 命令被依赖构建脚本审批拦截,改用已安装的 Node 测试器与 uni 编译器完成,没有放宽审批。 + +原样本 `RETU-WH-20261002-483777` / `PDA202610022105885618425872385` 已经同版 H5、390×848、真实 TEST Gateway 操作:返回真实箱码,1 箱拣货后余量 0,完成后页面只读;pick 和 complete 各 1 次 POST + 1 次详情 GET,全部 HTTP 200、事件未截断;重复箱码与完成后再扫码均 0 业务请求。页面证据为本轮 visualizations 的 `overseas-return-outbound-browser-proof.json`、`overseas-return-outbound-completed-390.jpg`。状态回查确认箱与出库单均 OUTBOUNDED,但退货库存 total/available/carton 数仍为 1,流水仍只有 RECEIPT +1;`reports/return-outbound-stock-accounting-audit-20261002-r1.json` 明确失败,`return-outbound-original-completion-http-20261002-r1.json` 的 passed 仅指其两项状态断言,不得解读为库存一致性通过。该库存记账缺口继续由海外专项修复,旧样本保留,不补写流水或回填库存来制造通过。H5 输入仍不代表公网入口或 Android 扫码广播验收。 + ## 结论与范围 +### 2026-10-03 F04 导入模板完整目录(真实 HTTP 已通过) + +新增 `scripts/client-import-template-test-env.mjs` 与只读 Python 检查器,提交 `18935f13`;从 TEST 当前客户正式接口下载模板,仅在内存读取,不保存原始工作簿或地址。实际 `reports/client-template-20261003-r2/report.json` 记录 9 次 HTTP 均为 200、独立会话已退出:仓库目录两页共 318 条;六类动态选项与独立目录逐项一致(国内仓 2、FBA 目的仓 314、海外仓 2、渠道 15、取货地址 1、私人目的地址 1),缺项/额外项/重复项均为 0;31 列、19 个验证规则、隐藏选项及命名范围检查通过,六类动态下拉覆盖第 3–52 行。模板 SHA256 为 `b7b70ae2143be7a50c83925a88cc058d507517d15d8bf9348c8cb294af065996`。这关闭当前客户模板目录分页与地址内容比对,不关闭第二客户负向权限、实际导入提交或 Excel 桌面操作。 + +检查器的最小 OOXML 正负向测试 4 项通过,启动配置与分页检查 14 项通过、文档合同 4 项通过。第一次启动在环境前置校验停止、0 HTTP:外部 `CHONGCHONG_MERCHANT_API_BASE_URL` 实际定义为 Gateway origin,启动器曾错误要求包含 `/api`;已按现行配置固定追加 `/api` 并补测试,没有猜测或读取其他环境。没有新增业务服务修改或部署。 + +15:55–15:56 补充两个既有测试客户的实际对照,各 10 次 HTTP 均成功并退出独立会话。`reports/client-template-20261003-primary-r3/report.json` 与 `reports/client-template-20261003-control-r1/report.json` 通过权威客户 ID 摘要确认身份不同;主客户私人地址 1 项,对照客户 0 项且无此下拉,取货地址各自匹配且摘要不同。汇总 `reports/client-template-customer-isolation-20261003-r1.json` 的 8 项对照均通过,未保存原始地址。该证据关闭两个客户模板读取隔离,不能代替提交外客户地址的负向测试。新增客户配置路径约束及对照拒绝测试与文档合同合计 7/7 通过,日志 `reports/client-template-customer-isolation-local-20261003-r1.log`。 + +16:02 补验外客户地址提交边界:`reports/client-address-isolation-20261003-r1/report.json` 共 17 次 HTTP、0 未知结果,两个独立会话均退出。来源客户两类地址有效且不在目标客户目录;每个载荷仅引用一种外客户地址,以真实仓库/渠道为其余主数据,分别调用单单创建和单行 JSON 批量创建。四项均精准命中“客户地址不存在或已停用”:单单业务码 A0404、批量外层成功但 0 成功/1 失败且行 errorCode=A0404,均无返回订单 ID。脚本对一般必填错误、其他不存在错误、意外创建或未知结果均不判通过,不重试、不删除;本地载荷/精准分类与文档合同 7/7,通过入口 `scripts/client-address-isolation-test-env.mjs` 重复执行时须新批次。该项关闭 JSON 单单/批量地址归属拒绝,不替代 XLSX 选项解析拒绝、数据库零漂移或浏览器交互。 + +17:07 补齐真实 XLSX 地址归属拒绝:`reports/client-xlsx-address-20261003-r1/report.json` 共 10 次 HTTP,两个独立客户身份不同且会话均退出。保留来源客户真实模板的隐藏地址选项、名称范围及关系,只填一行后以对照客户导入;取货地址与私人目的仓地址两次 PARTIAL 均返回 0 成功/1 失败、行 A0422 及对应字段“不存在、已停用或不属于当前客户”,无返回订单标识。`scripts/client-xlsx-address-test-env.mjs` 和内部 `client-xlsx-address-probe.py` 可重复执行,新批次独占报告;出现一般格式/必填错误、意外创建或未知结果即停止,不重试或删除。本地 Node/文档 5 项、Python 3 项、Gateway 5 项通过。导入源文件及错误报告按产品行为保留,不保存原始工作簿/地址明文到本机证据;该项关闭外客户模板选项的真实 XLSX 解析拒绝,不证明 SQL 零漂移、Excel 桌面或浏览器交互。 + +17:12 增补 XLSX 拒绝后的真实 MySQL 核验,`reports/client-xlsx-address-20261003-db-r1/report.json` 为 success/databaseVerified=true、两独立会话均退出。使用显式 TEST 数据库配置和只读一致性事务,导入前及每种地址拒绝后分别核对来源/对照两客户七表:订单 5554、货物 6214、参与方 33、内部备注 431、状态历史 12649、幂等记录 10880、领域 Outbox 6314,共 42075 条,包含逻辑删除行和全部当前列。两次比较数量及按主键排序的完整字段摘要均不变;元数据/记录不足或变化均会使脚本失败。文件、审计和认证正常留存不在七表不变断言内,不声称全环境零写入,也不外推至其他 JSON 或提交场景。脚本新增 `--database-profile=<同目录test-database.env>`,仅执行只读查询;Node/文档/Gateway 合计 11 项、Python 5 项通过。 + +### 2026-10-03 F06 页面提交失败重试(发出前拦截,已通过) + +在已部署 Client 的内置浏览器中,从原订单复制创建独立测试样本,备注 `UI-SUBMIT-RETRY-20261003-R1`,仅停在待审核。新单 `FL2106297168097247234` / `NYEXX2610030057`,未推进仓库审核、装柜或库存。标签页限定阻断 `/orders/first-leg/*/submit` 后,两次提交均在浏览器被 inspector 阻断;预先等待可见提示实际捕获“无法连接服务器,请确认后端服务已启动”,表单保留且可再次提交。移除阻断后,第三次提交正常返回订单列表、显示待审核。 + +网络证据未截断:全程恰好一次草稿创建,三次提交的订单 ID、幂等键 SHA256 和载荷 SHA256 完全一致。正式只读详情显示 version=1、状态 SUBMITTED、唯一 CREATE 与唯一 SUBMITTED 历史;初版回查脚本错误期待动作名 SUBMIT,原报告 `reports/client-submit-retry-readonly-20261003-r1.json` 保留 false;依据 `OrderApplicationService.transit` 的 `target.name()` 正式规则按精确 SUBMITTED 重新核对同份实际响应,综合报告 `reports/client-submit-retry-verified-20261003-r1.json` 的 11 项全部通过,不放宽接受其他动作名。 + +截图 `submit-retry-completed-1920.png` 与 `submit-retry-viewport.json` 配对证明 1920×1080、DPR=1、scale=1;网络分段、错误可见性与 cleanup JSON 同在本轮 `visualizations/2026/10/03/01a0d0da-130f-7d43-97b5-9c76abc1b5f1/`。临时 URL 阻断和视口覆盖已清除,取证用独立 HTTP 会话已退出,浏览器标签页保留给后续验收。本次是提交发出前失败,不关闭服务端已提交后的响应丢失场景,也不证明待部署的新订单分页版本已验收。 + +响应挂起尝试 R2:新单 `FL2106301479086784514` / `NYEXX2610030058` 在页面重试前,经独立 HTTP 已确认 SUBMITTED/version=1,记录唯一 CREATE 和 SUBMITTED。浏览器取证连接重置导致首次暂停响应事件丢失,预设超时提示的等待也未成功,故不判完整故障演练通过。清除拦截规则后原页面重试,仅记录同一订单 submit POST,未再发创建请求;页面恢复待审核,重试前后版本及两条历史完全一致。两份 HTTP 证据为 `reports/client-submit-response-loss-before-retry-20261003-r1.json`、`client-submit-response-loss-after-retry-20261003-r1.json`,独立会话均退出;页面网络、1920×1080截图及 cleanup 记录前缀 `submit-response-loss-`。本轮仅关闭已提交订单的页面恢复与不重复提交观察,原始响应丢失的完整证据仍待补齐;样本保留,不重造覆盖失败证据。 + +响应丢失尝试 R3(部分通过,恢复未验):样本 `FL2106306184525447170` / `NYEXX2610030059` 捕获同单提交 HTTP 200 的 `Fetch.requestPaused`,随后明确失败该响应,页面实际出现“无法连接服务器,请确认后端服务已启动”且保留表单。原始及重放提交的幂等键与载荷摘要一致,证据 `submit-response-loss-r3-{initial,replay-blocked,explicit-pause,visible-error}.json`。恢复阶段取证超时,续接时原标签页已不存在,不能将恢复操作或完整场景记作通过,也不把新打开页面当成原表单重试。17:03 正式只读回查仍为 SUBMITTED/version=1,订单及唯一 CREATE、SUBMITTED 历史与重试前完全一致;报告 `reports/client-submit-response-loss-terminal-check-20261003-r3.json` 明确 `browserRecoveryVerified=false`,独立会话已退出。样本保留,未继续审核或库存作业;标签页关闭后该页临时拦截已无作用。R2、R3 的部分证据分别保留,不能拼接宣称同一轮端到端通过。 + +### 2026-10-03 F22 列表刷新失败与恢复通过 + +Client #382正式报关列表在1920×1080、scale=1,以当前客户原5票为基线。仅浏览器下一次 `/merchant/v1/orders?page=1&size=200&taxMode=TAX_REFUND&loaded=true` 的真实HTTP200/code200结果交付被失败;页面显示明确连接错误及“重新加载”,原订单行清空,没有错误展示成功空态。点击原页面“重新加载”后完整恢复同5票,顺序、柜号、覆盖数和状态完全一致,错误提示消失。 + +网络区间未截断、没有遗漏页:失败刷新1次订单GET;恢复1次订单GET及5次报关资料GET,合计7次GET,服务端均200。该场景是浏览器结果交付失败,未停机或修改服务器/业务数据;不据此关闭真实第二页或第二页网络故障。当前客户只有5条符合报关条件的订单。 + +本轮visualizations目录 `f22-list-refresh-{error,recovery,network,cleanup,verification}.json`、`f22-list-refresh-error-page.txt`、`f22-list-refresh-{error,recovered}-1920.png` 保存证据,7项检查全部通过。探针恢复原事件属性,临时视口清除且页面关闭,`businessWrites=false`。既有离线21票分页行为测试保留,仍不当作真实第二页证据。 + +### 2026-10-03 F32 PDA并发前提复核 + +经测试Jenkins代理只读Docker观察,Lastleg当前运行且healthy,实际标签 `fleet-4ff55ba3-20261003-r1`、镜像ID `sha256:3f6658367acce7dcac82c242b9c154a3110df3cb794894e25174d3edb5928e73`。与 #201发布记录的固定源码 `4ff55ba3e08c7fe0c6e04832fa95ebb680c76b8c`、专项标签及成功状态相符;普通短SHA标签断言首轮失败保留,不能据命名不同判断服务版本错误。定向Git比较确认 LastlegOrderCommandService、DispatchPickOrderAttributionService、DispatchPdaWorkflowService 三个实际文件在该提交至本轮HEAD间无已提交改动。 + +独立正式GET回查原F32来源 `FL-WH-20261002-827853`:版本20、INBOUND_COMPLETED、UNSCHEDULED,原余额4箱、available=4/hold=0/picked=0。正式 DispatchPdaWorkflowService.pick 在来源订单锁定前先执行车辆存在与车次拣货审批门禁;因此该未排车来源不构成合法PDA并发样本。报告 `baiyue-firstleg/reports/f32-pda-race-preflight-20261003-r1/{runtime,source-verification,current-source}.json`,`raceExecuted=false`;正式取证会话正常退出。未发暂扣或拣货命令,未修改库存/车辆/部署。待准备隔离且已审核的未拣任务后继续MySQL两种竞争顺序;本前检不关闭F32并发项。 + +### 2026-10-03 F06 成功响应丢失后的原表单恢复通过 + +Client #382正式页面复用当前客户的合法FBA下单内容,唯一新样本 `FL2106362179033300994 / NYEXX2610030112`。浏览器探针在第一次submit真实HTTP200、业务code=200后暂缓XHR成功回调;独立平台只读接口确认同单已经SUBMITTED/version=1,随后失败该响应交付。页面实际错误“无法连接服务器,请确认后端服务已启动”由DOM MutationObserver捕获,原表单与按钮保留;取证工具连接超时后重连同一标签页,未刷新、未另建表单,原探针状态和错误记录均仍在。 + +在原表单点击“提交订单”恢复至订单列表,同一入仓码显示待审核,实际成功消息“订单已提交,等待平台审核”。持续页面XHR探针证明全程恰1次创建、2次同订单submit,两次submit幂等键及载荷SHA-256完全相同,没有PUT、取消或第二次创建。恢复前后独立平台接口完整订单、货物、当事方、备注与statusHistory摘要相同,仍version=1、唯一CREATE与SUBMITTED两条历史。最终12项检查全部通过,报告 `baiyue-firstleg/reports/client-submit-response-loss-20261003-r4/verification.json` 保存证据哈希及 `goalComplete=false`。 + +页面证据在本轮visualizations目录的 `submit-response-loss-r4/`:`initial.json`、`visible-error-recovered.json`、`after-retry-probe.json`、`recovered-page.txt`、`recovered-1920.png`、`viewport.json`、`cleanup.json`。实际1920×1080、scale=1;重连后的网络缓冲区只作恢复POST200/详情GET200旁证,不作为重连前全程请求计数。探针已恢复原生XHR方法和事件属性、无挂起响应,临时视口撤除且页面关闭;两次成功的独立平台取证会话均正常退出。样本保留待审核,未推进仓库履约。 + +本次为浏览器成功结果交付失败演练,未注入Order服务停机或真实网络设备故障。首次探针语法错误发生在样本提交前,未生效;本地动态函数编译被工具限制后,改用受支持的CDP安装正确表达式。初次客户独立登录A0401及平台回查漏tenantId失败记录保留,最终使用合法平台身份和明确客户范围回查,不将失败记录改写为通过。此前R2/R3仍保留部分通过结论,不能将其拼入本次独立R4证明。 + +### 2026-10-03 F23 独立只读账号权限复验 + +通过正式IAM接口创建本轮隔离角色/账号,仅授权 `platform:firstleg:container:list`、`platform:firstleg:port-schedule:list`,实际认证权限集合与上述两项完全一致。受控柜 `D0955 / TSTU0152125` 与船期详情读取成功;同身份携带合法版本和幂等键发起新增/修改,两次均精确拒绝A0403且不返回数据。完整船期及全部历史前后SHA-256相同。证据为 `baiyue-firstleg/reports/f23-readonly-20261003-r1/{fixture,permission-rejections,cleanup}.json`;新角色 `2106355930543263746` 和成员 `2106355931189186564` 最终均DISABLED,正式验收阶段独立HTTP会话已正常退出,未执行SQL或修改现有船期。 + +真实页面未通过:工具自动填入账号/密码后,两输入均为10字符的 ``,与本轮本地环境文件不匹配,页面返回A0401。未尝试绕过该限制,临时页已关闭;本轮visualizations下 `f23-readonly-ui-blocker.json` 明确 `uiVerified=false`。不得以API拒绝代替页面禁用/隐藏保存的证据;只读账号页面及首次登记仍开放。 + +只读预检r1-r3失败证据分别保留在 `reports/f23-readonly-preflight-20261003-r1/r2/r3/`:首次取错权限字段、第二次遗漏查询必填scope,以及退出请求缺少refreshToken/认证头,未做业务写入;这些预检的退出失败不能记为会话清理成功。依据正式Controller及现有通过脚本修正后,r4使用 `permissionCode`、`scope=ACTIVE`及带认证的refreshToken退出,读取与退出均通过;最终权限验收与停用清理采用该正确方式。 + +### 2026-10-03 F22 正式部署后迟到响应复验 + +Client #382(`a0736239e4ee4cd58b620dab912ffc0641360d9f`)正式页面在1920×1080、scale=1复用已完成两票 `NYEXX2609300079` 与 `NYEXX2609300076`,完成迟到资料失败、迟到海关结果成功、迟到海关结果失败三场景。只在浏览器暂缓真实XHR结果回调,再切换到第二票;第二票详情及结果显示完成后才交付/失败第一票回调。三次第二票弹框前后完整文字相同,未出现第一票入仓码或旧错误。三个网络区间均未截断、无遗漏页,分别为3/5/4次只读GET;第二场景包含一次401及同原请求正常刷新重放后的200,仍保持订单隔离。 + +延迟第一票详情时,海关结果区实际 `.el-skeleton` 存在、`.el-empty` 不存在,源详情响应为200,证明修复后的加载骨架已经在正式页面生效。证据位于本轮 `C:/Users/BY-OY/.codex/visualizations/2026/10/03/01a0d0da-130f-7d43-97b5-9c76abc1b5f1/`:`f22-deployed-detail-pending.json`、`f22-deployed-detail-pending-1920.png`、`f22-deployed-late-detail-failure.json`、`f22-deployed-late-clearance-{success,failure}.json`、`f22-deployed-second-order-isolated-1920.png`、`f22-deployed-verification-summary.json`。 + +浏览器探针已恢复原事件属性、没有挂起响应,临时视口已清除且取证标签页关闭,见 `f22-deployed-cleanup.json`。未修改业务文件或状态,未重新部署。首次探针因事件属性位于继承原型而未安装,确认后沿继承链获取并恢复原描述符;失败尝试未用于通过结论。本次是浏览器交付顺序/失败演练,不推定服务端真实停机故障或全部F22人工验收通过;真实报关列表第二页及分页故障恢复仍待补。 + +### 2026-10-03 客户订单列表分页修复(已部署,真实HTTP与末页页面通过) + +本批最终状态:Firstleg #477、Order #181 均使用 `499354ffd2f58f63926e4db7811081a8ce7b923d`,完整构建测试及部署成功,实际业务容器镜像标签 `499354ffd2f5` 与 healthy 已核对。Client #381 先发布 `40f6753`;页面验收发现额外翻页问题后,最终由 #382 发布 `a0736239e4ee4cd58b620dab912ffc0641360d9f`,实际标签 `a0736239e4ee` 与 healthy 一致。证据位于 `baiyue-firstleg/reports/workbench-release-20261003-r1/` 的 `firstleg-r2.json`、`order.json`、`client-page-retention.json` 及对应 runtime/console。首轮 #476 测试失败和 Client 首次缺构建参数的HTTP 400证据保留;后者已确认未入队,再按已有任务参数正常发布。未执行SQL,未发布Gateway或PDA。 + +真实HTTP:`reports/client-workbench-20261003-live-r1/report.json` 为70次HTTP、23项检查通过,完整遍历及独立订单集合对比确认5542条(5536正式单、6草稿),费用待办164;第21页、每页50条、筛选计数、全量渠道及客户参数隔离通过。同发布目录 `customer-isolation.json` 为11次HTTP、7项检查通过:另一客户仅4条,伪造真实外客户参数不改变自己的结果,两类外客户订单详情均精确拒绝A0404且不返回数据。上述验收只读业务数据,各自独立认证会话已退出。 + +页面补修:共享 DataTable 在请求开始时收到暂时清零的 total,错误把当前页归一到1。Client `a073623` 仅在加载完成且无错误时执行页数归一;真实Vue组件测试覆盖加载清零、错误保留页码、重试恢复和成功后页数缩减。测试先复现失败再修复,定向14项、Client全量498项及类型检查/构建通过,日志 `reports/client-pagination-loading-{red,green,full,typecheck,build}-20261003-r1.log`。 + +正式页面在1920×1080、scale=1下点击末页,实际停留第555/555页并显示最后两票 `NYEXX2609090001`、`PCHK2609090008`,没有回到第一页。截图及页面证据位于本轮 `visualizations/2026/10/03/01a0d0da-130f-7d43-97b5-9c76abc1b5f1/` 的 `workbench-last-page-1920.png`、`workbench-last-page-ui.json`。`workbench-last-page-network.json` 记录同一末页请求先401、随后200且页码不变;缓冲区标记 truncated=true,故只用于已记录请求/响应佐证,不用于全程请求次数断言。临时视口已恢复、验收标签页已关闭,见 `workbench-last-page-cleanup.json`。此项不替代所有筛选/费用操作后刷新、F22报关列表第二页或全流程人工验收。 + +以下为本批历史准备和失败记录;“未部署/离线”均指各记录当时状态,当前以本节最终版本及验收范围为准。 + +18:40 恢复发布后首轮 Firstleg #476 被测试门禁拦截,尚未部署:1557项测试、1失败、9跳过,失败来自 `Phase3FinalUnifiedSqlContractTest` 仍期待旧223张表,而当前统一SQL、实际CREATE TABLE数量及README均为226。提交 `499354ff` 将该测试同步为226,并新增实际建表语句数比对;未改业务SQL或执行数据库写入。4项定向Java及19项初始化/Gateway合同通过,日志 `reports/firstleg-sql-count-contract-20261003-r1.log`;原#476失败控制台保存在 `reports/workbench-release-20261003-r1/firstleg-console.log`。Firstleg #477改用该精确新提交重新执行完整测试与部署,发布进度见同目录 `firstleg-r2.json`;后续Order/Client须在前置健康验证后继续,不能以派发成功当作发布完成。 + +17:03 再次只读确认 `java-test-agent` 仍离线、非临时下线、控制端不支持启动,未派发部署,证据 `reports/workbench-publication-preflight-20261003-r5.json`。这是已确认的环境阻断,不是正在执行的发布任务;仍需恢复代理连接后执行匹配版本发布及验收。 + +真实只读检查确认当前客户有 5533 条有效正式单,而原首页仅合并前 200 条正式单与 6 条草稿,导致后续订单及待办数量不可见;证据为 `baiyue-firstleg/reports/client-order-pagination-readonly-20261003-r1.json`。 + +原始修复提交为 Backend `780d37e1`、Client `40f6753`(现已包含在本节最终部署版本中)。客户首页接入 Order `/api/merchant/v1/orders/workbench`:服务端筛选、计数和稳定分页,Firstleg 内部接口只读提供客户履约/费用/报关待办范围;草稿与正式单统一分页,渠道选项不再限于当前页,旧查询回退已移除。页面翻页、筛选与异步响应隔离均有行为测试;无需 SQL、Gateway 配置或 PDA 修改。 + +17:19 发布准备收口:Client `40f6753ccaa6a609f84b2642f09e15764be46d82` 已推送 `release/test`;新增 XLSX/数据库验收脚本提交 `14696fb1`、`78a4d4a0` 已推送后端 `test`,未包含其他任务未提交改动。推送前只读确认 Client 测试 Job 的 triggers 为空,无 push/SCM 自动触发;推送后 Client 仍为 #380 SUCCESS、inQueue=false,`java-test-agent` 仍离线,未派发部署。证据 `reports/client-workbench-push-preflight-20261003-r1.json`、`workbench-pushed-state-20261003-r1.json`。节点恢复后仍按 Firstleg → Order → Client 匹配发布,再运行现有完整分页验收入口;代码推送不等于服务已生效。 + +本轮 F06 页面恢复补验在导航阶段再次超时,随后原标签页可读但读取约55秒,不适合作为短暂错误提示的可靠取证;没有点击保存/提交,未新增订单,已关闭该临时标签页。R1成功、R2/R3部分证据范围保持原结论。待浏览器取证恢复后只补原缺口,不重复创建连续样本或重跑已完成的Excel矩阵。 + +本地证据:Client 全量 495/495、类型检查与构建通过;Order/Firstleg 定向 108/108,加一项实际 Spring MVC 日期绑定及伪造客户参数隔离测试通过(该测试文件复跑 3/3);Mapper 扫描通过,Gateway 路由 5/5,索引合同 1094 项通过。日志为 `reports/client-workbench-full-20261003-r2.log`、`client-workbench-build-20261003-r1.log`、`merchant-workbench-java-20261003-r4.log`、`merchant-workbench-binding-20261003-r1.log`、`merchant-workbench-gateway-20261003-r1.log`、`merchant-workbench-index-20261003-r1.log`。首次报关范围 SQL 测试失败及旧接口测试失败报告保留,修复后结果不覆盖失败证据。 + +14:55(北京时间)发布前只读检查仍为 Jenkins `java-test-agent` 离线,未派发部署,见 `reports/workbench-publication-preflight-20261003-r1.json`。恢复后按 Firstleg → Order → Client 发布,再验证真实 MySQL、超过第 200 条的页面、筛选计数、客户隔离和报关/费用操作后刷新;本地通过不能关闭这些 TEST 验收项,也不能据此声明全流程完工。 + +15:41 再次检查节点仍离线,未发起部署,证据 `reports/workbench-publication-preflight-20261003-r2.json`。新增只读 TEST 验收入口 `scripts/client-workbench-test-env.mjs`,提交 `bf8a985f`;完整遍历工作台与独立正式订单集合,核对第 21 页、渠道、待办数量和客户参数隔离。默认计划零网络,执行仅登录/退出可用 POST;避开会补建预入库记录的旧草稿 GET。故障响应与文档检查 18/18 通过,证据 `reports/client-workbench-http-runner-20261003-r2.log`;尚未对已部署新版本执行,报关业务资格、第二客户负向权限及浏览器验证不在这份离线结果中关闭。 + +15:57 只读诊断确认 `java-test-agent` 为连接断开,`temporarilyOffline=false`、`launchSupported=false`、执行器当前任务数 0;不是仍在排队执行的部署,也不能由控制端直接启动。证据 `reports/test-agent-offline-diagnosis-20261003-r1.json`。已向用户请求恢复代理或提供测试主机连接方式,未重启控制器、未派发构建;其他无需部署的验收继续。 + 按“头程和海外仓不再分区域部署、所有服务同机运行、取消独立事件接收服务与海外网关”设计。这里将“事件接收”对应为当前 `event-bridge-service`,不推定要删除业务通知、异步任务或消息队列。 建议目标:一个 Gateway、一套 Auth/IAM 登录与权限体系、一个测试 Nacos 命名空间和一套测试内部容器网络。保留 Firstleg、Lastleg、Warehouse、Warehouse Overseas 等业务服务,各自拥有数据表与业务规则。同机可以共用 MySQL 实例,继续按服务分 Schema;不要求合并为一个数据库或一个 Java 进程。 @@ -34,7 +999,7 @@ | 批次 | 工作 | 完成依据 | |---|---|---| | 0:文档与基线 | 确认仅 test 的目标、唯一接口路径、统一认证、直接投递职责;列出当前配置与服务清单 | 新目标、当前实现、待办三者明确区分 | -| 0A:资金消费前置修复 | 区分临时执行失败与最终业务拒绝;补齐并发 Inbox 抢占后的摘要校验和一致结果处理 | MySQL 结果提交失败回滚、原事件自动重试、首次执行并发同 hash/异 hash 已实测;资金执行中途故障仍待验证,不能将已验证场景扩大为完整故障矩阵 | +| 0A:资金消费前置修复 | 区分临时执行失败与最终业务拒绝;补齐并发 Inbox 抢占后的摘要校验和一致结果处理 | 原历史报告仍未定位;结果提交失败/原事件恢复由本轮wallet-result-commit-20261005-r1/root-independent-review.json、首次同异hash并发由wallet-first-execution-concurrency-root-20261005-r1/root-independent-review.json及root-final-runtime-cleanup.json分别补证关闭;旧原报告追溯仍见reports/wallet-0a-original-evidence-trace-20261005-r1.json;2026-10-05又以真实账户更新/hold插入后的限定SQL异常验证中途回滚及原事件唯一冻结恢复,见本页最新R08钱包行与reports/wallet-mid-transaction-20261005-r1/independent-final-review.json,不扩大为完整故障矩阵 | | 1:入口与认证 | Gateway 接入全部业务;Auth/common-security/海外服务统一认证;各端共用入口;解决仓库路由冲突 | 本地编译、认证测试、路由合同及受影响前端测试通过 | | 2:业务通信 | 替换装柜、船节点、卸柜、暂扣、派送、费用和资金链;补齐直接投递重试及失败处置 | 各链路有直接消费者,成功确认、重复投递和故障恢复测试通过 | | 3:部署收敛 | 单套 test Compose/Nacos/Jenkins;清理两个废弃服务和专用配置、SQL 初始化引用、安全投影依赖 | 构建与配置合同通过;形成唯一测试发布清单及启动依赖 | @@ -98,3 +1063,28 @@ 不新增中间件,不合并业务服务、Schema、两类 PDA 或领域状态机;旧 development/production 退出当前发布入口,不顺手删除无关历史文件。模块旧指引中双区域部署、双 Token 或必须经海外 Gateway 的强制描述属于迁移前实现,后续实现以本契约和统一认证契约为准,并随对应批次更新模块说明。 验收记录保存各仓库提交、镜像/配置版本、业务编号、覆盖场景与失败项。本地检查、H2 事务测试与真实 MySQL/HTTP/页面/PDA 验收分别记录,不能互相代替。 + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/海外仓业务/README.md b/海外仓业务/README.md index 999b4b9..2e51544 100644 --- a/海外仓业务/README.md +++ b/海外仓业务/README.md @@ -4,7 +4,7 @@ - 当前开发环境按端到端全流程交付,不再用开发批次切断上下游。订单与客户、入库测量与计费、国内货柜履约、海外仓业务和财务共同组成一条连续业务链。 - 海外仓业务从国内装柜完成及确认出仓后的船节点开始,覆盖海运在途、海外接柜、卸货入仓、库存与托盘、换标、转运、废弃、退货、排车、PDA 拣货与出库、发车、转派送、派送完成、异常退回、客户回访和一件代发。 -- 海外采购、本土卡车、本土散板、海外仓报价、汇率和车辆主数据属于同一海外业务域,并统一经 `gateway-overseas/` 访问。 +- 海外采购、本土卡车、本土散板、海外仓报价、汇率和车辆主数据属于同一海外业务域,并统一经当前 `gateway/` 访问。 - 功能是否可用以正式路由、Controller/OpenAPI、权限、数据库结构和验收证据为准;历史规划只用于追溯,不再用于排除已经纳入全流程的能力。 ## 人工验收入口 @@ -15,10 +15,10 @@ | 业务域 | 能力范围 | 原型入口 | |---|---|---| -| 海外仓 | 尾程订单、入库单、换标单、托盘管理、库存管理;箱号管理与产品库当前暂不进入海外仓业务正式入口;Admin 入口 `../../apps/admin-web/src/modules/overseas-warehouse/` | 原型 `../悦/货代SAAS平台后台/prototype-src/modules/03-overseas-warehouse.html`;Backend `../../baiyue-firstleg/lastleg-service/`、`../../baiyue-firstleg/warehouse-overseas-service/`,经 `gateway-overseas/` | +| 海外仓 | 尾程订单、入库单、换标单、托盘管理、库存管理;箱号管理与产品库当前暂不进入海外仓业务正式入口;Admin 入口 `../../apps/admin-web/src/modules/overseas-warehouse/` | 原型 `../悦/货代SAAS平台后台/prototype-src/modules/03-overseas-warehouse.html`;Backend `../../baiyue-firstleg/lastleg-service/`、`../../baiyue-firstleg/warehouse-overseas-service/`,经统一 `gateway/` | | 海外仓排车与智能预排 | 平台查看排车列表/详情,按入仓计划或已收托盘创建预排,并完成编辑、取消、拣货、出库、发车和转派送 | Admin `../../apps/admin-web/src/modules/overseas-warehouse/pages/DispatchesView.vue`、`api/dispatches.ts`;Backend `../../baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/dispatch/` | -| 海外仓客户自助服务 | 客户工作台正式开放贴标申请、仓储转运、货物废弃和退货换标;所有查询和写入只使用登录态客户范围 | Client `../../apps/client-web/src/modules/overseas-warehouse/routes.ts`、`views/WarehouseServiceView.vue`、`api/warehouseServices.ts`;Backend `../../baiyue-firstleg/lastleg-service/` 的 `relabel/`、`transfer/`、`discard/`,经 `gateway-overseas/` | -| 海外仓 PDA 柜号签收与退货入库 | 独立应用 `../../apps/pda-overseas-uniapp/`;拆柜收货完成柜号认领、三类照片、按目的类型实收与全柜完成;退货入库支持扫描退货单号或 SKU 候选并按本包实收生成退货箱和计费批次,签收后可按同客户退货单合箱 | 拆柜前端 `src/api/inbound.js`、`receiving-adapter.js`、`pages/operation/operation.vue`;退货前端 `src/api/return-receipt.js`、`src/api/return-packing.js`、`pages/return-receipt/return-receipt.vue`、`pages/return-packing/return-packing.vue`;Backend 分别为 `inboundplan/pda/` 与 `returnreceipt/controller/PdaReturnReceiptController.java`、`PdaReturnInventoryController.java`,经 `gateway-overseas/` | +| 海外仓客户自助服务 | 客户工作台正式开放贴标申请、仓储转运、货物废弃和退货换标;所有查询和写入只使用登录态客户范围 | Client `../../apps/client-web/src/modules/overseas-warehouse/routes.ts`、`views/WarehouseServiceView.vue`、`api/warehouseServices.ts`;Backend `../../baiyue-firstleg/lastleg-service/` 的 `relabel/`、`transfer/`、`discard/`,经统一 `gateway/` | +| 海外仓 PDA 柜号签收与退货入库 | 独立应用 `../../apps/pda-overseas-uniapp/`;拆柜收货完成柜号认领、三类照片、按目的类型实收与全柜完成;退货入库支持扫描退货单号或 SKU 候选并按本包实收生成退货箱和计费批次,签收后可按同客户退货单合箱 | 拆柜前端 `src/api/inbound.js`、`receiving-adapter.js`、`pages/operation/operation.vue`;退货前端 `src/api/return-receipt.js`、`src/api/return-packing.js`、`pages/return-receipt/return-receipt.vue`、`pages/return-packing/return-packing.vue`;Backend 分别为 `inboundplan/pda/` 与 `returnreceipt/controller/PdaReturnReceiptController.java`、`PdaReturnInventoryController.java`,经统一 `gateway/` | | 海外仓 PDA 库内、托盘、换标与查询 | Lastleg 提供盘点、同仓整托移库、托盘组拆换绑、换标和库存/库位/托盘查询能力;当前终端入口按工作台能力开关启用,未进入 PDA 的操作由 Admin/Client 正式页面承载 | Backend `../../baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/pda/stocktake/`、`pda/move/`、`pda/warehouse/`、`palletops/`、`relabel/pda/`;契约 `src/main/resources/openapi/overseas-pda-operations-v1.yaml` | | 海外仓出库与派送 | 排车编辑/取消、PDA 排车拣货、出库任务、发车门禁、转派送、客户派送单和派送完成 | Admin `../../apps/admin-web/src/modules/overseas-warehouse/`;Overseas PDA `../../apps/pda-overseas-uniapp/src/pages/dispatch/`、`src/pages/outbound/`;Backend `../../baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/dispatch/`、`delivery/` | | 异常退回与客户回访 | 异常建档、派送退回入仓、派送状态、签收/回访附件和客户回访 | Admin `ExceptionOrdersView.vue`、`CustomerVisitsView.vue`;Backend `exceptionorder/`、`customervisit/` | @@ -26,6 +26,8 @@ | 海外业务 | 本土散板、采购订单、本土卡车;Admin 入口 `../../apps/admin-web/src/modules/overseas-business/` | 原型 `../悦/货代SAAS平台后台/prototype-src/modules/07-overseas-business.html`;Backend `../../baiyue-firstleg/lastleg-service/` 的 `procurement/`、`trucking/` 及后续本土散板子域 | | 仓库主数据与海外资源 | 仓库 ID、类型、状态、地址、能力统一由国内仓库主数据维护;海外服务只维护库位、托盘和资源锁 | Admin `../../apps/admin-web/src/modules/warehouses/`;国内权威 `../../baiyue-firstleg/warehouse/`;海外资源 `../../baiyue-firstleg/warehouse-overseas-service/` | | 通用资料 | 海外仓报价、汇率管理、车辆列表;Admin 入口 `../../apps/admin-web/src/modules/overseas-master-data/` | `../悦/货代SAAS平台后台/prototype-src/modules/10-general.html` | +| 车辆管理、司机资质与保养加油 | 业务范围见[车辆管理原型梳理与任务规划](车辆管理原型梳理与任务规划.md);后端 `../../baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/fleet/`,OpenAPI `fleet-drivers-v1.yaml`、`fleet-trips-v1.yaml`、`fleet-vehicle-records-v1.yaml`;证照和运维照片复用 File | Admin 接入目录 `../../apps/admin-web/src/modules/overseas-master-data/`;原型来源和页面 ID 按规划第 1、2 节定位 | +| 内部拼车需求池 | [内部拼车需求池首版开发契约](内部拼车需求池首版开发契约.md):车次余位发布、销售意向、确认占位、本土订单关联及统一我仓上车 | 复用上述车辆管理及本土业务入口;不开放客户端运力市场 | | 国内出仓后船节点 | 对已确认离开国内仓库的订舱/柜次定时查询船节点,保存最新节点、异常和查询历史,贯通目的港提柜至还柜事实 | 标准语义见[船节点标准化契约](船节点标准化契约.md);Admin `../../apps/admin-web/src/modules/port-schedules/`、`ocean-bookings/` 及货柜详情;Backend `../../baiyue-firstleg/firstleg/src/main/java/com/baiyue/firstleg/portschedule/`、`../../baiyue-firstleg/integration-service/` | ## 原型页面定向索引 @@ -79,7 +81,7 @@ - 托盘管理提供当前托盘单张标签 PDF:Admin `PalletsView.vue` → `warehouse-overseas-service` 的 `GET /api/platform/v1/warehouse-admin/{warehouseId}/pallets/{id}/label`。有 FBA 仓码的托盘与国内统一使用 Print `FBA_PALLET_A4_LANDSCAPE_V1`(297×210 mm):顶部 SCK8 等仓码,中间 Code 128、底部完整托盘号,141 等内部编号保留在托盘号中;其他托盘使用 `INBOUND_MARK_V1`(100×100 mm)。只按真实托盘编码打印,不重新生成编号;模板约束、服务接入与权限见海外资源服务 `AGENTS.md`。 - 海外仓合作仓是现有头程仓库主数据的类型扩展,需同步核对 Admin `warehouses`、Warehouse Service 的 DTO/Controller/OpenAPI/SQL 及实际消费者;不得因此把海外库存业务写入国内 Warehouse Service。 -- 海外库存、库内作业和海外本土业务已有明确服务入口:`gateway-overseas/` 是海外 API 网关,`lastleg-service/` 拥有尾程订单、入仓计划、换标、库存业务、采购和本土卡车;国内 `warehouse-service` 是仓库主数据唯一权威,`warehouse-overseas-service/` 只拥有库位、托盘及资源锁并引用国内 `warehouseId`。不得把海外库存业务塞入国内 `firstleg/` 或 `warehouse/`。 +- 海外库存、库内作业和海外本土业务已有明确服务入口:`gateway/` 是统一 API 网关,`lastleg-service/` 拥有尾程订单、入仓计划、换标、库存业务、采购和本土卡车;国内 `warehouse-service` 是仓库主数据唯一权威,`warehouse-overseas-service/` 只拥有库位、托盘及资源锁并引用国内 `warehouseId`。不得把海外库存业务塞入国内 `firstleg/` 或 `warehouse/`。 - 国内装柜完成事件只在海外生成 `PENDING_ASSIGNMENT` 尾程订单、冻结快照和 `FIRST_LEG` 在途库存,不自动生成入仓计划。平台通过 `GET /api/platform/v1/last-leg/orders/container-summaries` 按稳定 `sourceContainerBookingId` 服务端聚合全柜订单、入仓码、计划数、未操作数和 `allPlansReady`,分页返回全部稳定来源柜,已生成计划的柜仍保留供接柜仓查询与修改;`pendingPlanCount` 区分待建计划,`resourcePendingPlanCount` 区分托盘资源待生成,后者仅用于自动生成异常后的重试;详情 `/{sourceContainerBookingId}` 返回柜内全部订单与计划且不受订单分页截断。`plannedArrivalAt` 只来自装柜完成事件 `estimatedWarehouseArrivalAt` 冻结到 Lastleg `ll_order.estimated_warehouse_at` 的计划到仓事实,不得使用创建时间、预计到港或当前时间替代,并按该时间升序、空值最后排序。确认后调用 `POST /api/platform/v1/last-leg/inbound-plans/convert-container`;服务端一次锁定整柜、每票独立生成一个计划,整批原子且幂等。转换成功才将尾程订单推进为 `INBOUND_PLANNED`,并把库存余额的来源入仓码展示快照替换为各自 `planNo`。 - 尾程订单的 `inboundCode` 只保存并展示真实来源入仓码;换标申请、本土散板等没有入仓关系的海外本土业务保持为空,由页面显示 `—`,不得用换标单号、本土散板单号或内部 ID 冒充入仓码。 - 平台可按单票尾程订单入库计划(托数、托盘类型、分配/可合托/加急和备注);入库仓、入仓码和预计到仓时间均展示冻结事实,不允许人工改写。预计到仓日期由服务端锁定来源柜全部订单的 `estimated_warehouse_at`,缺失或同柜不一致时阻断,人工与自动计划统一写入该柜日期。写入时校验订单版本、客户归属、仓库主档和幂等键;一票柜保存后立即自动生成并绑定托盘码、海外仓托盘和资源锁,多票柜在最后一票计划齐全时自动为全柜完成同一动作。`resourcePendingPlanCount` 只用于自动生成失败后的显式重试,不是正常人工步骤。分配、可合托、加急必须随入库单列表和海外 PDA 入仓码作业返回并展示,其中“可合托”只向现场提供选择:合托时扫描同目的仓已使用的托盘码,独立收货时扫描新托盘码,不作为实收或完成门禁。新增暂扣只允许货物完成入库后执行;暂扣只作用于该票并仅阻断排车和出库,不阻断入库计划或入库作业,同柜其他订单不受影响。 @@ -90,8 +92,8 @@ - 手动还柜以真实海外卸柜完成且尚未还柜为准,仍校验独立还柜权限;无需事先存在车队、预约或提柜时间。首次命令使用版本 0 创建拖车记录,车队字段可为空,不补造提柜事实。还柜时间不得早于卸柜完成时间或已有提柜时间,成功后同步标准还柜节点并解除报空预警。 - 船节点是头程海运在途事实与海外接柜之间的衔接能力,业务聚合继续由 Firstleg 按 `containerBookingId` 柜级持有,不绑定客户;跨区域事件使用 `tenantId=0` 平台技术范围,到港/可提柜结果通过明确契约提供给海外区域,不复制第二套轮询任务。 - Admin、Client 仍使用统一账号体系,并按根 `AGENTS.md` 的双区域 API、海外 Token 和跨区域事件约定接入;业务页面不自行实现第二套登录。 -- 海外仓 PDA 使用独立 `apps/pda-overseas-uniapp/` 工程和发布身份,但账号仍由国内 Auth 唯一签发;真实作业请求必须经海外 Gateway 的显式 PDA 路由。工作台只展示已注册并启用的现场作业,其他业务通过 Admin/Client 完成,不以某个终端是否承载全部操作判断端到端流程是否完成。 -- 海外 PDA 的实际收货仓是国内 `warehouse-service` 中 `tenant_id=0`、类型为 `OVERSEAS`、状态 `ACTIVE` 且启用 `RECEIVING` 能力的平台共享物理仓,并由 `WAREHOUSE_PICKER` 的 Token Claim 固定;海外数据库只保存相同 `warehouseId` 引用。PDA 不接收仓库 ID,也不能切换柜号。海外 Gateway 对每个 `/api/pda/**` 请求在本地验签后向 Auth 实时核对账号 `token_version` 与当前仓绑定,换仓或清空绑定后旧 Token 立即失效,Auth 不可用时拒绝请求。待收柜在首次准备时原子认领到该仓,入仓计划、尾程订单和收货会话冻结实际仓 ID/名称;国内装柜事件的仓库仅作为来源仓快照,目的仓/FBA 仓也不得冒充实际收货仓。 +- 海外仓 PDA 使用独立 `apps/pda-overseas-uniapp/` 工程和发布身份,但账号仍由国内 Auth 唯一签发;真实作业请求必须经统一 Gateway 的显式 PDA 路由。工作台只展示已注册并启用的现场作业,其他业务通过 Admin/Client 完成,不以某个终端是否承载全部操作判断端到端流程是否完成。 +- 海外 PDA 的实际收货仓是国内 `warehouse-service` 中 `tenant_id=0`、类型为 `OVERSEAS`、状态 `ACTIVE` 且启用 `RECEIVING` 能力的平台共享物理仓,并由 `WAREHOUSE_PICKER` 的 Token Claim 固定;海外数据库只保存相同 `warehouseId` 引用。PDA 不接收仓库 ID,也不能切换柜号。统一 Gateway 对每个 `/api/pda/**` 请求在本地验签后向 Auth 实时核对账号 `token_version` 与当前仓绑定,换仓或清空绑定后旧 Token 立即失效,Auth 不可用时拒绝请求。待收柜在首次准备时原子认领到该仓,入仓计划、尾程订单和收货会话冻结实际仓 ID/名称;国内装柜事件的仓库仅作为来源仓快照,目的仓/FBA 仓也不得冒充实际收货仓。 - 海外 PDA 接柜候选、认领会话、国内五类装柜照片对照、海外三类签收照片与整柜完成均按 `sourceContainerBookingId + containerNo` 聚合,不保存客户并允许同柜多个客户。国内照片在签收阶段展开、收货阶段折叠,只读加载失败不阻断拆柜。签收后为柜内每个计划按其自身客户生成任务;入仓码解析、SKU 实收、托盘占用和库存入账继续按该票真实客户隔离,整柜完成需全部计划核平且只发布一次柜级完成事件。 - 新增实际代码模块、API、权限、OpenAPI 或数据库入口后,同步更新根 `AGENTS.md`、对应应用/服务 `AGENTS.md` 和本文件;不把排期、完成比例或临时任务状态写入快速索引。 diff --git a/海外仓业务/内部拼车需求池首版开发契约.md b/海外仓业务/内部拼车需求池首版开发契约.md new file mode 100644 index 0000000..a738891 --- /dev/null +++ b/海外仓业务/内部拼车需求池首版开发契约.md @@ -0,0 +1,181 @@ +# 内部拼车需求池首版开发契约 + +日期:2026-10-07。当前版本:V5,五轮开发前审核修订完成,进入开发。本文为本功能唯一范围与实现契约;审核记录随文维护。部署和实际验收结论仅写入两份环境主契约,不能用本文的方案代替已实现证明。 + +## 1. 目标与首版范围 + +用户场景:调度约定30托位车辆去目的仓A,自有货占18托位,将剩余12托位发布给内部销售;销售联系外部客户、登记意向,调度确认承运和占位,客户订单随后走真实到仓、装车、配送和签收。 + +本功能的“需求池”是**已发布车次的剩余运力目录**,不是客户待配货需求库。一条发布对应一个车次;销售从具体车次登记意向,不新建无车次撮合平台。 + +首版边界: + +- 仅内部Admin展示运力池,Client不开放余位市场。客户只查看自己的本土订单和获准的承运安排。 +- 所有外接货统一在我仓上车。客户自行送仓,或我方在线下安排提货回仓,均从实际到仓后开始系统收货。可记录两种交货说明,不能宣称已有独立提货任务闭环。 +- 沿途提货直送、行驶途中新增承运、独立提货车调度及交接、自动撮合、销售临时限时锁位、整单拆分到多个干线车次均不在首版。 +- 询价不占位,调度确认承运才占位。订单预算不等于成交运费,承运确认不等于收款。 +- 本轮用户已授权TEST部署、测试数据库、真实HTTP和内置浏览器验收,Admin/Client固定1920×1080、100%缩放。操作目标为TEST,不沿用上轮灰度配置;密钥仅从私有配置读取。 + +## 2. 单一事实来源与复用 + +| 内容 | 权威来源与本轮处理 | +| --- | --- | +| 车次、线路、时间、车辆容量 | 现有FleetTrip及当前车辆主档;不建立第二套车次 | +| 自有货计划占位 | 当前有效capacity-plan及货物hash,保留三维容量 | +| 外接占位 | 复用外接预订CONFIRMED/RECEIVED;BOUND后由实际货物计入,不双扣 | +| 发布信息 | 新增每车次唯一的发布记录:业务编号、状态、交货截止、公开给销售的联系人/备注、版本和审计 | +| 客户意向 | 复用外接预订DRAFT,增加发布关联、服务端销售负责人、交货说明及本土业务类型 | +| 本土订单 | 本土散板/本土卡车保存客户委托;预订关联真实业务单号,不再重复产生无关商业订单 | +| 实收与发运 | 现有外接来货→WarehouseTransfer→库存→客户排车→共享车次→派送链 | +| 费用 | 沿现有实际派送费用来源发布,需求/询价阶段不新增应收。成交价、预算与实收款独立展示 | + +开发前源码缺口记录:当时没有发布列表,预订没有销售负责人/发布来源,本土订单没有真实外接履约关联;本土散板create会另建逻辑尾程单,不能直接再调用外接来货形成两个来源;本土卡车原库存动作尚不等于外接真实库存链。此段说明本次设计起因,当前实现及验收结果以测试环境主契约为准。 + +## 3. 发布与余位 + +发布由有调度管理权限的用户在车次详情执行。前提:车次PLANNED,已分配可用车辆和司机,有真实起运仓及规范卸货站,发车/交货截止有效,容量计划有效。发布不替代调度审核、司机资质门禁或发车前理货审核。 + +本轮不新增“车牌司机尚未落实的虚拟运力”模型,沿用已分配资源的现有车次。计划容量或任何必须数据未就绪时给出具体阻断原因,不能以车型名字推算30托。 + +发布状态为DRAFT、OPEN、PAUSED、CLOSED。满位、超过交货截止、已发车/取消、容量待核对为服务端计算的接单资格,不另维护可手改的余位数字。暂停/关闭不取消已确认预订或删除客户订单;恢复发布必须重新校验。首版车次发车后不再新增承运。 + +状态转换为DRAFT→OPEN,OPEN→PAUSED/CLOSED,PAUSED→OPEN/CLOSED;CLOSED为终态,同车次不能另建发布规避关闭。OPEN但事实失效时允许调度显式“重新核对并恢复”更新事实指纹,仍须完整资格校验。 + +时间以服务端Clock的Instant为准,开放新询价/编辑须OPEN且`now < cutoff <= plannedDepartureAt`、车次仍PLANNED;询价不承诺运力,可在满位或待核对时保留草稿并明确提示,确认承运则必须所有资格有效。关闭、截止或发车后,销售仍可经“我的意向”只读跟踪本人已登记/成交业务;暂停不接受新询价或编辑,仅允许既有规则下的查看/取消。 + +容量按起运仓至选定卸货站的每段最小可用量校验,托位、重量和体积同时满足。列表展示分目的站的可接量,不能用全车某一个余位数字代表所有运输区间。30−18−已确认8=4仅为同一区间同规格例子。 + +读取可接资格、发布、确认承运均复验车辆当前启用状态和实际容量与计划是否一致;当前车辆停用或容量变更使旧计划不可承诺。改派/改线/新增自有货/绑定或解绑货物导致计划失效时,显示“待调度核对”、余位为未知并拒绝新确认,不回退到旧计划或显示0。确认承运仍由服务端在车次锁内重新计算。 + +发布保存本次核对的路线/发车时间、车辆容量和有效容量计划的事实指纹。仅询价、确认预订导致的版本变化不使发布失效;实际货物/容量计划或上述承诺事实变化则待核对,重新确认计划后由调度显式恢复接单,不静默恢复。GET只计算资格,不修改发布状态。表格采用“已关联货物计划占用 + 未关联外接预留(CONFIRMED/RECEIVED) + 可接余位”;BOUND外接已在计划内,若另示外接总量,只作信息列,绝不再次相加。 + +所有发布和预订写命令先锁车次,再按需锁实时车辆,随后锁发布记录、预订及商业关联;暂停/关闭与承运确认也共用该车次锁。实际实现须与现有车次/资源锁顺序一致。权限、登录身份与来源归属校验不能省略;已成功命令的同键同载荷重放在重新评估截止/OPEN等业务资格之前返回原结果,异载荷仍冲突。 + +## 4. 销售与调度权限 + +- 新增独立发布池列表权限,包含发布详情和不含敏感信息的只读辅助投影;不要求销售拥有trip:list。 +- 销售可查看OPEN发布的线路、时间、容量、调度联系信息;登记并查看/修改/取消本人DRAFT意向。销售负责人取登录userId,不接受浏览器冒充,不按姓名判定归属。 +- 调度管理权限可查看各销售意向、发布/暂停/关闭、确认承运和处理取消;不能通过一般销售写权限确认占位。 +- 当前IAM无稳定销售客群ACL,只有salesOwnerName文本。本轮不新增CRM归属体系。授予本功能意向登记权限即允许在用途限定的客户候选中选择公司ACTIVE客户,仅返回ID、客户编号、名称,不返回电话/证照/财务资料;必须在文档与接口中明确该公司共享选单目录口径。 +- 他人意向的直接编号访问、修改及取消须在服务端拒绝;发布总余位可以包含全部预订,但不向销售返回他人客户名称、货物、价格、司机私人信息或采购成本。 +- Client根据自身客户身份查询本土订单,不提供发布池接口或其他客户预订详情。 + +建议权限族:`platform:fleet:capacity-offer:list/manage`与`platform:fleet:capacity-offer:inquiry-create/inquiry-edit/inquiry-cancel`。manage授权调度读取全部意向并确认承运,普通list只读取本人意向;列表和详情只读语义一致。最终路径与权限同步Controller、OpenAPI、IAM种子、导航和测试。 + +读取发布/本人意向允许list或manage;销售写操作同时要求list和对应inquiry写权限,manage可管理全部。所有查询/写入都由服务端取销售身份;池来源预订经既有trip booking接口操作时也必须执行一致的来源、权限、发布、订单桥和取消门禁,不能借旧接口绕过。 + +## 5. 意向、成交与本土订单 + +销售从发布详情登记意向:客户、本土散板或本土卡车类型、当前路线卸货站、货名、预计箱数/托位/重量/体积、交货方式、预计到仓、联系人、报价方式/币种/金额、备注。未完成询价允许缺预计载荷或价格;确认承运前必须完整且与本轮计划匹配。空值不等于0,报价库引用与手填成交价按既有权限规则处理。 + +首版每条外接意向整单绑定一个干线车次,不提供销售拆分数量。仅可选择本车现有卸货站,新增目的地须调度先改车次路线并重核计划;不能以自由文本地址伪造目的仓匹配。 + +确认承运采用一次服务端命令:验证发布/车次/预订版本、登录权限、客户资格、路线、时间、实际有效余位及成交价→创建本土商业订单及唯一桥关联→确认预订占位→返回新版本及业务单号。不可由浏览器串行三次写入拼接“成功”;使用稳定幂等键,同键同载荷返回原结果,同键异载荷拒绝。未知结果保留原键与内容,不能生成新单重试。 + +确认成交只新建一张池来源商业主单,不接受任意已有独立订单号。LOCAL_LOOSEBOARD通过专用内部方法创建主单与历史,不执行原独立下单生成占位ll_order的分支;US_TRUCK同样只建商业主单,不生成模拟实托记录。独立下单保持其合法业务入口,池内订单走真实运输桥,不以“兼容”保留两套同单行为。 + +唯一桥表`ll_fleet_pool_order_link`以booking_id唯一,保存客户、business_type、商业单ID/业务号和桥状态;来货生成后再绑定唯一incoming_no和lastleg_order_id。预订DTO商业号来自桥投影,不在两处维护可写副本。登记来货由现有FleetIncomingAdapter创建唯一WarehouseTransfer及真实尾程来源,并在同事务反绑商业单;客户、目的地或来源不符则回滚,不产生第二张尾程单。 + +实托数与托位分开:询价提供可空的预计实托数;US_TRUCK确认前必须有正数预计实托数,不能拿palletSpaces当palletCount。预计箱数同样允许未知,确认前须补完整真实预报;不以0或1伪造未知。实收时以去重后的真实仓库托盘数记录实际实托,按核准每托占位合计记录托位。商业单预算仍是独立可空预算,不自动写入成交金额。 + +池询价未采集柜型或是否委托打盘服务,商业桥须将这两项保留为未知:卡车/散板的`containerType`及散板的`palletRequired`为null,不套用40HQ或YES。实托数、占用托位及实际托盘存在均不能证明客户委托打盘;Admin/Client列表和详情将未知显示为“—”。响应允许空值或省略空字段,详情经summary承载;普通独立Create/Update请求的必填、枚举及默认规则保持原合同。 + +池来源商业单状态映射:成交为WAITING_INBOUND;真实收货开始为RECEIVING;实收并核量确认后为WAITING_CONSOLIDATION(散板新增对应状态);完整关联客户排车后为PENDING_DISPATCH;整车实际出库/发车为IN_TRANSIT;全部实际货物签收为COMPLETED;安全取消为CANCELLED。不得把绑定车次标为已发车。状态与历史由实际来源事务推进并带来源业务号/时间;退回、部分签收保持未完成,并展示实际派送摘要。重复保存回执不得重复追加完成历史。 + +真实出库/签收需要本地桥回传:现国内完成Outbox只覆盖FIRSTLEG来源,不能依赖它完成本土单。按桥中唯一来源和同客户派送/实际货量核对后回写主单;不得创建第二笔运费。池来源散板编辑/手工状态、卡车编辑/审核/手工收托/超托审核/分配/发车/完成/取消等入口必须识别来源后拒绝旁路,并返回当前应操作入口;不能只在页面隐藏按钮。 + +运费仍由真实转派送的`FLEET:{bookingNo}:{dispatchNo}:FREIGHT`唯一来源发布;商业主单、发布池、来货和签收回传均不重复发布该费用。全外接货不能另填一份派送应收。成交价、实际约定运费、Finance应收/实收各自表达,零价沿现有正式规则处理,不能绕过费用门禁。 + +成交/取消锁顺序沿第3节:车次→资源→发布→预订→商业关联/商业单。实际收货/签收在既有作业锁之后仅锁商业关联/商业单,不反向锁车次/发布/预订。商业单旧手工入口在本单锁内识别池来源直接拒绝,不反向协调车次。已有池来源来货也不得独立从旧来货取消入口取消而留下有效承诺;本轮登记来货后的取消/跨车改配明确阻断。 + +Admin和Client自己的本土订单列表/详情返回同一批查询产生的`fleetArrangement`摘要:来源类型、真实商业单号、预订号、计划发车、起运仓和目的地、交货说明、实际履约阶段/时间、约定运费(非实收)及只读原因,并提供已签/未签/退回数量和异常摘要;独立订单该字段为null。不返回发布池内部ID、余位、他人货物、司机私人信息或采购成本。原列表/详情不得逐行额外调用池接口。首版不额外建设任意存量订单批量导入/撮合。 + +## 6. 真实到仓、变更与取消 + +已确认后复用登记来货、PDA实际收货、运营核量确认、生成客户排车并关联本车、调度审核、PDA拣货、实测装载、理货审核、整车发车、目的仓签收、结案及资源释放。需求池提供关联业务跳转和实时摘要,不再建立一套“手填已发车”状态。 + +实收托位/重量/体积改变,须重新核量、检查本车剩余容量和确认费用;超量不可自动覆盖承诺。整单价和按托价保持既有口径,不静默把预算写为应收。BOUND预订由真实货物占位替代预订,不能叠加扣减;对应容量计划失效时停止继续接单,待重核。 + +DRAFT由本人或调度取消;池来源CONFIRMED仅在尚未登记来货时由调度一体取消商业关联、预订及占位。已有incoming、实收或BOUND拒绝池内快捷取消,进入既有实际作业处理;现有booking.cancel允许RECEIVED的行为不能旁路该池来源门禁。不可通过关闭发布或取消意向删除库存、清除已拣货或把已发车货物变回草稿。首版不提供实收后跨车次改配,遇到该请求明确拒绝并保留原单据,不自动重造。 + +## 7. 页面、请求预算与错误处理 + +Admin「车辆管理」增加「拼车需求池」,含“可接运力”“我的意向”两个独立页签,仅加载激活页签;调度可选全部意向范围,服务端拒绝销售越权该范围。主列表一行一发布车次:操作、发布号/车次号、起运仓、目的站/路线、发车/交货截止、已关联货物计划占用、未关联外接预留、各目的地可接托位/重量/体积、接单状态和调度联系信息;多目的站在同一行分行展示,详情展开分段表。查询起运仓/目的地使用文本条件,日期和状态使用本地选项,不为筛选增加目录请求。“我的意向”跨发布状态可读历史,不依赖OPEN列表。可接运力默认使用 `scope=AVAILABLE`,在数据库分页前按 `OPEN + PLANNED + now < cutoff <= plannedDepartureAt` 筛选,管理员也遵循同一默认范围;满位或容量待核对但允许草稿登记的发布仍保留。管理员显式选择“全部发布(含历史)”时使用 `scope=ALL`,普通销售不得请求该范围。车次发布设置查找已有发布显式使用ALL,避免遗漏草稿或过期发布。详情页有登记权限时保留“登记意向”按钮,业务资格不足则置灰并展示服务端原因;无登记权限不显示按钮。 + +发布详情为独立页,首个响应带运输摘要、分段余位及获准意向首20条、total/page/size;意向翻页单独1次请求。池接口只返回专用offer/inquiry DTO,不复用含司机或客户联系信息的TripDetail/FleetCustomerOption。offer独立返回canCreateInquiry、canConfirm和blockReason,满位或待核对不错误禁用允许的草稿登记;未取得有效容量时显示“待调度核对”,已知满位才显示0。 + +操作承载矩阵:发布详情独立页;登记/编辑/查看意向为1080px居中;车次详情内“发布设置”采用居中表单;确认承运与取消采用现有确认框,明确对象和影响。当前新增操作没有外部原型,按用户授权、本文矩阵及已确认车次高密度样式实现,不能拿方便的抽屉替换。未保存提醒覆盖取消、X、Esc及路由离开;结果未知时保留原请求键和载荷。 + +Admin本土订单池来源行增加“承运安排”只读入口(1080px居中),原编辑深链也只能展示只读原因和安排;正常独立订单保持原操作。关联车次/来货/排车跳转逐项检查目标权限,无权限只显示业务号。Client沿原详情展示同一客户摘要,不新增公开池。两端同步散板新状态标签和筛选,不能显示裸内部状态码。 + +未知预计箱数与预计实托数的可空类型须同步既有bookingTypes、tripBookings normalizer、TripBookingPanel及对应测试,旧面板不得把pool询价解析失败或自动补成1。池来源确认/修改操作同样使用服务端允许动作;管理面板不得将未完成商业关联的旧确认视为成功。 + +样式复用Admin高密度、integrated DataTable、操作列左置、统一查询/分页/按钮/错误态;不接入演示假数据。Client只在自己的订单响应中增加承运安排摘要,沿既有列表详情展示,无新公开拼车菜单。 + +| 操作 | 业务请求预算(登录/公共外壳另计) | +| --- | --- | +| 任一页签进入/切换/查询/重置/翻页 | 每动作1次活动页签分页;不预加载另页签,不逐行查询车次或容量 | +| 打开发布详情 | 1次详情,含分段余位和获准意向首20条及total/page/size;后续翻页各1次 | +| 打开登记表单 | 复用详情事实;客户候选首次聚焦/搜索才请求,输入防抖,取消迟到响应 | +| 报价候选 | 仅用户显式查询/翻页各1次,走池作用域专用候选接口;无报价权限0次,手填价不附加报价权限 | +| 确认/修改/取消意向 | 1次写命令返回新摘要;必要时最多1次当前详情刷新,不全表逐项刷新 | +| Admin/Client本土订单列表/详情 | 仍各1次,不逐单补查运力或预订;Admin行内打开已有承运摘要额外0次 | + +加载时保留上下文;区分无发布、筛选无结果、本人无意向、候选为空及接口失败;网络错误显示诊断和重试,不伪装空数据;版本冲突要求重新核对;写入处理中禁重复提交。切页/关闭/切发布时忽略旧响应。筛选重置和页码watch只能有一个实际加载入口,避免重复请求。真实请求计数包含非第一页重置、快速切页和写成功后的刷新,不能只测首屏。 + +普通运力列表由数据库执行起运仓、目的地、日期、状态和文本筛选及分页,仅核对当前页的实时容量。显式启用`canConfirm`接单资格筛选时,先统计基础筛选后的候选;超过100趟即返回缩小起运仓、目的地或日期范围的提示,不展开逐车容量查询。100趟以内计算实时资格并返回精确总数,不能按当前页过滤后伪造总数或在后台扫描全部车次。 + +## 8. 实现归属与部署 + +Backend仍归Lastleg,Gateway复用现有fleet/last-leg通配路由;按API变更执行gateway-route-contract。新增持久化Mapper须显式@Mapper并跑注册合同。数据库基线、权限种子和测试环境差异SQL统一维护,不清库、不重复执行已成功未知结果SQL。 + +部署单元预计Lastleg、Admin及受DTO展示影响的Client;IAM若仅新增库内权限种子则核对实时权限刷新,不无故部署全服务;必要时按实际依赖补充清单。TEST单机Maven只使用现有锁及单执行器,禁止并发构建挤压服务。部署与数据库写入由当前对话串行操作,内部协作仅分文件实现与只读/离线核对。 + +## 9. 必验场景 + +### 冻结的接口和实现分工 + +服务前缀为`/api/platform/v1/last-leg/fleet/capacity-offers`;Admin浏览器HTTP基址已经含`/api`,消费路径省略该前缀,避免重复。新增接口沿既有Lastleg Gateway路由,不暴露内部接口。 + +| 方法与相对路径 | 语义 | +| --- | --- | +| GET / | 当前用户获准的发布分页,含逐目的站余位和资格;text起运/目的地、日期、状态、可接筛选 | +| POST /,PUT /{offerNo} | 调度创建发布草稿及编辑公开信息,校验车次/发布版本 | +| GET /{offerNo} | 发布详情及获准意向首20条;非OPEN仅调度或本人已有意向者可读受限投影 | +| POST /{offerNo}/publish、pause、resume、close | 显式发布状态命令,版本和持久幂等 | +| GET /inquiries,GET /inquiries/{bookingNo} | 本人意向及单条详情;调度可选择全部范围,销售不能用参数越权 | +| POST /{offerNo}/inquiries,PUT /inquiries/{bookingNo} | 登记/编辑草稿,登录人冻结销售负责人 | +| POST /inquiries/{bookingNo}/confirm、cancel | 调度成交与适用范围的取消,唯一桥及容量事务 | +| GET /customer-options | 用途限定ACTIVE客户ID/编号/名称目录,不返回联系人或电话 | +| GET /{offerNo}/quote-candidates | 公开给该场景的销售报价候选,需额外quote:list,按本车及客户/卸货站/币种/计价方式过滤 | + +offer写入携带tripNo、tripRecordVersion、存在时offerRecordVersion、cutoffAt、公开联系信息、remark和idempotencyKey;意向含offer/trip/booking版本、customerId、businessType(LOCAL_LOOSEBOARD/US_TRUCK)、deliveryMode(SELF_DELIVERY/MANUAL_PICKUP_TO_WAREHOUSE)、estimatedArrivalAt、独立expectedPalletCount、cargo、quoteRef、idempotencyKey。Cargo.packageCount可空,确认前完整校验;可空不以虚假默认数替代。对象主身份使用发布号、预订号等业务编号;ID仅用于明确接口关联。 + +Admin路由:`/overseas-master-data/capacity-offers`及`/overseas-master-data/capacity-offers/:offerNo`。菜单与路由允许list或manage;销售写另需对应inquiry权限。客户端不增加运力路由。 + +持久化:每trip唯一`ll_fleet_capacity_offer`、持久命令记录(作用域/动作/键/请求hash/原结果)、预订新增发布/销售负责人/业务类型/交货方式/预计到仓/独立实托数字段、唯一`ll_fleet_pool_order_link`。桥表booking_id、booking_no、(business_type,business_order_id)唯一,incoming_no/lastleg_order_id为nullable unique;来源未发生保持null。不得只保存“最后一次键”而丢失旧成功请求的重放事实。Mapper/基线/统一空库SQL/本轮精确结构补齐/权限种子分别核对,无清库、存量修复或双写兼容。 + +实现分工:运力池工作包独占fleet发布及预订服务和其测试;订单桥工作包独占fleet/business、商业订单/来货/实际作业回写及其测试;前端工作包独占业务页面/API/types/tests和矩阵。当前对话集成共享路由/导航/权限、SQL、OpenAPI与部署。跨包调用FleetPoolOrderBridge在已有事务中执行,不另开事务、不双写费用;源码签名先在实现者间固定,禁止两个工作包同时改同一服务文件。 + +### 验收用例 + +1. 自有18/总30,同路段外接8确认后余4;另一客户再确认5失败,原已确认事实不变;重量或体积先满同样拒绝。 +2. 两名调度同时确认来自不同销售的最后余位意向,最多允许容量内的承诺;销售自身调用确认必须拒绝;原键重放不增加订单、预订或费用。 +3. 两个不同登录账号但同姓名仍相互隔离;销售猜测他人意向编号、调用调度确认或车次敏感接口被拒绝;Client不能查看运力池。 +4. 暂停、关闭、截止、发车/取消、改派/路线/自有货变化、车辆停用/缩容均不能沿旧余位继续接单。 +5. 意向到本土订单/来货/排车/派送保持同客户和唯一来源;实收超量阻断、预订转实载不双扣、允许的取消释放且不删除事实。 +6. 本土散板和本土卡车分别从池内成交走到签收,本土订单真实终态回传;不制造第二张虚假尾程来源,不重复收费。 +7. Admin按调度和销售最小权限、Client按本票客户,在1920×1080检查列表、详情、表单、加载/空/错态、动作门禁和网络请求次数;保留截图与脱敏网络计数证据。 +8. 保留当前车次自有货链的核心回归:审核、拣货、改派后复审、整车发车、签收及资源分别释放;新需求池不得旁路这些规则。 + +## 10. 五轮审核记录 + +每轮必须有实际发现、修订和复核依据,前一轮改完再检查下一轮;五个“通过”标题不能代替审核。五轮结束后冻结开发版,发现实现与合同冲突仍须修正并补测。 + +| 轮次 | 检查重点 | 当前记录 | +| --- | --- | --- | +| 1 | 用户范围、池的对象、延期功能与现有实现差距 | 已识别“车次余位池”被误解为“待配货客户需求池”的偏差,纠正为每车次发布、销售从具体车次登记;三种完整愿景与统一我仓首版分开;不引入沿途提货门禁改造 | +| 2 | 容量/并发/权限/状态与车辆实时事实 | 审核V1后修订V2:补齐统一锁序、暂停与确认竞争、服务端截止及成功重放顺序、关闭后本人历史可读、池来源未登记来货才可取消、BOUND不重复扣位、旧接口旁路及事实指纹失效后显式恢复;依据FleetBookingService、FleetTripService.persist、capacityPlan及Reservations | +| 3 | 本土订单唯一来源、实际履约、状态和费用 | 审核V2后修订V3:确认仅创建池来源商业单,散板不再建独立占位来源;新增唯一桥、来货反绑、实托/托位分离、真实状态回写、旧手工入口和来货取消防旁路、唯一运费来源及回传不反向锁车次;依据LocalLooseboardService、UsTruckOrderService、FleetIncomingAdapter、DeliveryTransfer及国内完成事件范围 | +| 4 | Admin/Client交互、最小权限、请求预算与验收 | 审核V3后修订V4:补独立我的意向历史入口、Admin本土单只读承载、offer/inquiry/fleetArrangement专用投影、可空箱数直接消费者、两端状态标签/筛选、逐动作请求预算/分页上限、未知与满位区分、完整弹框关闭保护;按现Trips/Booking/TransportOrders及Client消费者核对 | +| 5 | 全文一致性、接口/SQL/权限/测试/部署可执行性 | 总核对V4并冻结V5:去除“任意既有单关联”残留,明确关闭终态与显式恢复;补接口/字段/路由及数据库唯一约束、持久重放、实现归属;Admin/Client请求预算统一,测试覆盖两类商业单、权限及取消旁路;本轮只授权TEST,部署与浏览器证据不由文档通过替代 | diff --git a/海外仓业务/船节点标准化契约.md b/海外仓业务/船节点标准化契约.md index e8f9e93..012096e 100644 --- a/海外仓业务/船节点标准化契约.md +++ b/海外仓业务/船节点标准化契约.md @@ -91,6 +91,16 @@ - `sourceReference`:不含密钥和敏感参数的可审计来源引用。 - `rawPayloadHash`:原始响应的 SHA-256;业务表不保存完整网页或敏感原文。 +### 5.1 响应审计与事件幂等摘要 + +`rawPayloadHash` 仍是本次供应商整份原始响应的审计摘要,不作为同一 `providerEventId` 的不可变事件摘要。追加其他节点、调整其他节点的预计时间、改变网页排版或再次查询,均可能改变整份响应摘要;不得因此阻断未变化的旧事件及后续新事件。 + +Firstleg 对已持久化事实和本次标准化事实采用相同字段顺序计算 SHA-256 事件事实摘要并比较:节点包含柜次、供应商/事件标识、原始节点码、标准节点、预计/实际时间、地点编码/名称和来源引用;异常包含查询任务、供应商/事件标识、原始状态、异常编码、是否生效、地点编码/名称和来源引用。查询观测时间 `observedAt`、本地写入时间与整份响应 `rawPayloadHash` 不参与该稳定事件摘要。字段空值保持空值,不用查询时间或其他字段补齐。 + +同 ID 同事实重复查询不新增节点、异常、历史或业务事件,保留首次写入的观测时间和原始响应审计哈希;同 ID 变更上述任何事实字段必须冲突,即使供应商沿用了相同原始响应哈希也不能绕过。现有适配器的事件 ID 生成规则保持不变;预计时间变化按原规则形成独立预计事实,不推进实际节点。不得通过每轮换 ID、吞掉事实冲突或新增未知供应商状态/解除映射完成重放。 + +预计/实际时间参与摘要前统一按现有 `DATETIME(3)` 毫秒精度四舍五入(含跨秒进位),对输入与持久化事实使用同一规则;不采用时间差容忍窗口,仍拒绝不同毫秒事实。 + 供应商返回空字段时保持空值,不使用 `0`、当前时间、预计时间或其他字段伪造实际事实。 ## 6. 已确认供应商映射 diff --git a/海外仓业务/车辆管理原型梳理与任务规划.md b/海外仓业务/车辆管理原型梳理与任务规划.md new file mode 100644 index 0000000..731be3e --- /dev/null +++ b/海外仓业务/车辆管理原型梳理与任务规划.md @@ -0,0 +1,732 @@ +# 车辆管理原型梳理与任务规划 + +> 文档状态:原型盘点、首版执行确认与开发增量记录;更新时间:2026-10-07。 +> 规划对象:Admin「车辆管理」及其与排车、海外派送、车队报价的衔接能力。 +> 本文用于确定范围、现状和任务依赖,不代表代码已经完成、已经部署或已经通过真实环境验收。 +> 开发已按后续授权推进;当前源码增量与未完成项见第 10 节。文档 Review、局部测试、真实部署和页面验收分别记录,不相互替代。 +> Review 状态:2026-10-02 已完成本次连续 5 轮核对、修订与复查,记录见第 9 节。原型事实、源码现状和候选设计已分别标明;业务决策仍见第 4 节,不等于功能开发或环境验收完成。 +> 后续业务确认:2026-10-02 用户明确“外接”为自有货物未装满时承接顺路外部货物,审核先展示详情并提供通过/打回;司机证照 30 天内到期但仍有效时允许派车并提醒,预计任务结束前过期则禁止。已确认部分与出车/金额建议见第 4.1 节,追加边界 Review 见第 4.4 节;不把建议标为用户已确认。 + +## 本轮首版执行确认(2026-10-02) + +用户明确“按你的建议执行,我们先做一个版本出来,再优化和修改;验证可以宽一些”。本次确认替代下文先前标记为待答的首版选择:外接货先送我方起运仓,运营接洽并在后台登记;调度通过后拣货、理货通过后发车;车次采用独立列表和详情、计划居中弹框、其余操作在详情分区;维修/故障/救援增加“更新处理”。原运费按每票实际覆盖范围引用,另行确认的新增项目才计费;源码说明见第10.9节,当前部署、真实验收与未关闭项目统一见[测试环境单机部署与配置契约](../测试环境单机部署与配置契约.md)及[统一认证与服务通信契约](../统一认证与服务通信契约.md)。 + +首版驾驶证为必需资质,体检/培训/保险日期先作档案记录。输入校验保留必需业务数据、权限、客户归属、防重复、实际容量及已确认的证照到期规则;普通说明、地址等选填字段宽松处理,常规动作使用标准审计说明,不要求用户重复填写。原型未覆盖的上述操作已有本轮授权,不再重复等待确认。 + +第 4.7 节保留此前受阻时的核对经过;其“待答”状态已由本次确认解除,原目标恢复实施。实现、部署和真实验收仍分别核对,用户批准方案不代表功能已经完成。 + +2026-10-03 财务追加确认:用户在“车辆管理|成本与财务闭环”独立任务明确“请按你的建议来处理先”,确认维修/救援按公司车辆成本登记,不自动形成客户应收;保留CNY/USD原币,按业务月份汇率折算CNY入账。首版允许未付款费用作废重建,已付款费用禁止直接改写或作废,退款冲销后续单独确认。此项解除第4节第6项中维修/救援财务归属的待答状态;保养/加油等其他来源不据此自动扩大。费用登记、入账和付款须分别体现真实状态,不能以运维处理完成替代付款。当前实现仍由专项接入,部署及验收以两份正式主契约为准。 + +## 2026-10-07 增量:内部拼车需求池与三种交货方式 + +本功能进入文档审核与开发准备后,首版范围、接口决策、五轮审核和验证门禁统一维护在[内部拼车需求池首版开发契约](内部拼车需求池首版开发契约.md)。以下增量保留需求演变与完整业务方向,不覆盖新契约的统一我仓上车边界。 + +本节记录本轮需求和接入建议,不代表新功能已经实现或部署。用户先明确三种交货方式,随后提出前期先做“我仓上车”、暂不做顺路直送,以减少工作量;最新首版建议见下段,三种方式保留为完整业务方向。现有车次主链验收不能作为需求池及沿途提货已经跑通的证据。 + +### 最新首版收敛建议:统一我仓上车 + +用户提出首期只做我仓上车、顺路直送暂不做。推荐首版交付内部需求池、销售意向与报价、调度确认占位、本土订单关联,以及复用现有真实到仓收货至装车签收的闭环。所有本期实际发运货物须先进入我仓,不增加沿途提货站、非仓库货物来源或行驶途中接货确认,也不修改现有“始发前外接货已实收并关联发运”的门禁。 + +客户自行送仓与我方提货回仓均可最终进入该流程。为控制首版工作量,建议我方提货回仓暂由运营在线下安排,系统仅记录交货方式、预计到仓及备注,从实际到仓后开始收货;这不代表系统已有提货任务派车、提货交接或提货成本闭环。若要求提货过程也全部在线处理,再纳入下方B阶段。 + +下方A/B/C顺序为完整方案储备,当前推荐先实施A;B独立提货回仓作业、C沿途直送留待后续范围确认。阶段A仍须验证真实外接货与自有货同车、客户隔离、占位转实载不重复扣减、取消释放及不重复收费;不能以发布余位列表代替完整送仓拼车链。当前仅调整方案,未据此开始代码或环境变更。 + +### 用户已确认 + +- 调度已约车并安排自有货后,需将去向、时间和可接余位集中展示给销售。例如去目的地 A 的车有30托位,自有货占18托位,还能寻找12托位的外接货。 +- 首期需求池只面向内部员工,销售查看后自行联系外部客户;不在此范围内建设客户公开运力市场。 +- 完整业务需要逐票选择三种交货方式:客户送到我方起运仓;我方上门提货后回我仓;我方沿途提货后直接送对应目的仓。随后用户提出首版先统一我仓上车,沿途直送暂缓;不再将三种系统执行闭环同时作为推荐首版范围。 +- 本土业务现有下单入口承接成交业务,需求池位于下单前,先让销售知道哪趟车、去哪里、何时出发、能接多少货。 + +### 建议的业务承载与流程(待按实际交互细化) + +建议新增内部「拼车需求池」,由车次提供路线、发车时间和容量事实。调度核对计划后发布可接货需求,销售按起运区域、目的地、时间和交货方式筛选,并登记客户意向;调度确认承运后占位,再关联正式客户订单和该车次,按交货方式履约。询价不占位,已确认预订扣减可接容量,沿用现有外接预订规则;是否提供有时限的临时留位另行定义,不默认新增。 + +| 交货方式 | 建议履约路径 | 必须保留的实际事实 | +| --- | --- | --- | +| 客户送仓 | 客户送到我仓 → 实际收货、测量及入库 → 绑定干线车次 → 拣货、装车 → 目的仓签收 | 到仓实收、库内库存和出库事实 | +| 我方提货回仓 | 安排提货任务 → 客户地点交接 → 运回我仓 → 实际收货、测量及入库 → 干线装车 → 目的仓签收 | 提货交接与到仓收货分别记录;提货车辆和干线车辆可不同,费用不可重复收取 | +| 沿途提货直送 | 安排本车提货站 → 到站交接、核量及装车确认 → 按路线送目的仓 → 签收 | 客户地点实收和车上货物事实;不虚构我仓入库、库位、仓库托盘或仓库出库单 | + +需求池建议展示:车次号、起运仓/区域、已有途经及卸货站、计划发车与最晚交货时间、整车容量、自有货预计占位、外接已确认占位、可接托位、剩余重量/体积、允许交货方式、调度联系人、接货状态。客户意向需记录销售负责人、客户、提货地址(需要提货时)、目的地、预计托位/重量/体积、交货时间和报价。客户业务单据、预订与车次建立明确关联,销售无需重新录入另一套容量。 + +### 容量与变更建议 + +- 30−18=12仅适用于同一运输区间且重量、体积也允许的情况。客户占8托位并确认后,同一区间余4托位;不同销售同时确认时必须由服务端避免超卖。 +- 沿途提货按“提货站至卸货站”逐段预留容量。计划阶段即占用对应未来区间,不能等实提才扣可售余位;实际车上数量则在提货交接后增加、卸货签收后减少。 +- 示例:我仓带18托去 A,途经 B 提12托一起送 A;我仓→B 实载18托,B→A实载30托。若这12托已确认,B→A余位已为0,不能再对该区间承诺12托。 +- 回仓提货独立核对提货任务运力;回仓后的干线预订也需占位,同一批货不能在同一车次被预订和实际装载重复扣减。 +- 自有货、车辆容量或路线变化后重新核对有效余位;容量计划失效时展示“待调度核对”并停止新承运确认,不能把未知显示成有空位。超出原已发布路线的提卸点需调度调整路线并复核承诺。 +- 需求发布、暂停接单、满位、取消及发车后接单规则属于需求池状态,不混同车次运输状态。首期是否允许车辆出发后再接新的沿途订单,尚未确认;已在出发前确认的沿途提货必须正常执行。 + +### 当前源码与缺口 + +| 部分 | 当前核对事实 | 本次需补齐 | +| --- | --- | --- | +| 车次与容量 | Admin `TripsView.vue`已有车次列表;详情 `capacity-plan` 返回有效计划和扣除外接后的逐段余位,列表没有面向销售的余位发布入口 | 跨车次需求池查询、发布/暂停/关闭、销售意向及责任人;服务端统一返回有效可接运力 | +| 外接预订 | `TripBookingPanel.vue`及`bookingTypes.ts`已有询价、确认承运、实收、关联发运和取消 | 从需求池带入车次与路线,扩展逐票交货方式、提货站和交接事实 | +| 容量算法 | `TripCapacityPolicy.Booking`支持提货/卸货站区间;当前`FleetBookingReservations.add`固定从站点0占位 | 将真实提货站接入预订、计划变更和发车/到站复验,不能仅在页面增加选项 | +| 来货及库存 | `FleetIncomingAdapter.create`固定`CUSTOMER_DELIVERY`并调用仓储转运来货流程,实收证据来自本仓托盘 | 保留客户送仓链;增加提货回仓任务衔接,以及不经仓的沿途提货直送履约来源 | +| 本土下单关联 | 当前正式菜单名称是「本土卡车」「本土散板」;外接预订的当前来货链是仓储转运,不证明已经关联这两类订单 | 明确每票对应的业务单据及单一收费来源;从需求池转单携带预订和车次关联,禁止重复下单、占位或收费 | + +验收应分别覆盖三种交货方式,并验证:30托位/自有18托位/外接12托位、并发确认不超卖、不同提卸区间、不足或超量实收、货物及路线变更、取消释放、回仓两段运输关联、直送不产生虚假仓库库存、签收回传与收费不重复。此前灰度FBA自有货主链通过,不替代这些新增场景。 + +### 推荐实现方案:沿现有车次接入(设计建议,非已实现) + +建议仍在 Lastleg 现有车辆与本土业务内实现,复用统一 Gateway/Auth、客户隔离、File 和 Finance。不新增独立撮合服务,不复制一套车次、库存或财务账。 + +**页面和职责。** 在「车辆管理」增加「拼车需求池」,销售可直接进入;车次详情增加“发布拼车需求”及关联入口。需求池每条需求关联唯一车次,展示可接运输区间,余位实时来自服务端有效容量与已确认预订,不让销售手填剩余托数。建议车次先待发布,调度确认路线、时间和可承诺容量后发布;自有货或预订变化自动更新余位,计划失效则暂停承诺。多站路线不能只展示一个没有运输区间的“剩余12托”。 + +销售负责登记客户意向、选择三种交货方式、报价与跟进;调度负责发布、确认路线及承运占位、安排提货和车辆;仓库负责实际过仓货的收货、拣货与出库。销售看运力及自己获授权的客户资料,不因需求池访问而获得同车其他客户货物、成本或全部司机资料。发布、询价登记、确认占位及提货确认采用独立写权限,不把销售统一授为车次管理员。 + +**单据关联。** 建议采用“车次 → 发布需求 → 客户意向/预订 → 本土业务订单 → 履约任务”的关联。复用外接预订的询价和承运确认;内部销售成交时在同一业务动作中关联或生成本土散板/本土卡车单据,不要求再去两个页面各下一单。已有本土订单也可选符合路线的车次进行匹配,一票可依法分段运输但同一段货物不可重复占位。同一客户委托可以对应提货回仓和干线配送两段任务,仍保持同一业务来源与可追踪费用。 + +本土单据记录客户委托、交货方式、货物及已确认交易条件;预订记录该订单在哪个车次、哪个提卸区间占多少位;任务记录谁在何时、何处实际接货和交货。报价预算、确认成交价与财务应收/实收分别处理;预订、提货任务和最终派送引用同一已确认费用来源,新增提货费须独立确认,不能因生成新任务再收一次原运费。当前 `LocalLooseboardRequests`/`UsTruckOrderRequests` 没有这套车次关联,须连同平台和客户消费者更新正式合同。 + +**三种方式如何进入执行。** + +1. 客户送仓:关联既有来货流程;PDA 实收、核量确认后,将已确认预订占位转换为实际发运货物占位,不能两份同时扣容量。 +2. 提货回仓:从客户订单派生提货任务,记录地址、预约窗口、联系人、承运车辆、实际提货数量和交接附件;可由另一趟车执行。回我仓须重新完成真实收货事实,再承接原干线预订。提货成功不等于仓库收货成功。 +3. 沿途直送:同车次添加有顺序的提货站和卸货站,增加不依赖仓库托盘的运输货物来源。出发前可保留尚未提取但已确认的后续站货物;当前站必须装车的货物仍需就绪。到提货站后核对实际托位、重量、体积及交接证据,通过下一段容量校验才允许继续;超量、少到、未到和改目的地由调度处理,不能自动超载或将未提货标成已承运。 + +首版建议由调度在后台维护提货任务并录入实际交接结果及附件,仓库 PDA 继续承载过仓作业;司机专用移动作业入口另定交互,不把仓库 PDA 的仓库绑定权限直接放宽为司机跨地点权限。若需司机现场自行操作,须作为同一履约任务的授权入口接入,而非另一套运输状态。 + +**必须修改的核心门禁。** `FleetTripExecutionService` 当前从仓库排车明细生成实际装载,并在 `hasConfirmed` 为真时阻止发车(外接货尚未关联实际发运货物)。新增沿途直送后,要按站点区分“此站应装货”和“后续待提货”,分别核对当前装载、未来预留、已发生运输段及未完成交接;不能直接删除既有外接未就绪门禁。全车结案须包含直送货签收结果,不能只检查原仓库派送单。已完成站点和历史实载不可通过修改计划重写。 + +**建议实施顺序与交付边界。** + +| 阶段 | 交付物 | 验收重点 | +| --- | --- | --- | +| A:销售可用的需求池 | 车次发布与集中查询、线路/时间/余位筛选、销售意向、确认占位及本土订单关联;沿用送仓履约 | 30托位自有18托位,确认外接8托位后余4;多销售并发确认拒绝超卖;旧容量失效不可继续接单;已有订单匹配不重复下单/收费 | +| B:提货回仓 | 提货任务、车辆安排、交接与回仓收货、同单两段运输关联 | 提货与入仓分开确认;提货车和干线车不同;货量差异重新核量;预订与实收不重复扣位 | +| C:沿途提货直送 | 提卸站点、非仓库运输货物、分段装载与提货确认、签收/结案及统一费用来源 | 后续提货不阻断合法始发;沿途每段不超载;未提货/部分提货/改配有处理记录;不生成虚假本仓库存;直送未结束不得整车结案 | + +A/B/C 为完整方案依赖顺序,按用户后续提出的收敛方向,当前推荐首版先交付A并用包含自有货和外接货的真实车次验收;这不证明B独立提货任务或C沿途直送已实现。各后续阶段单独确认范围、实施和验收。未实现的交货方式不得在可成交页面提供虚假的成功路径。 + +待进一步确定的业务选择仅保留会改变执行边界的项目:出发后是否允许新增外接订单、是否允许销售临时留位及有效期、提货操作是否首版由司机本人在移动端完成。以上建议未被标记为用户已确认;本节不改变已确认的内部需求池和三种交货方式。 + +## 1. 读取范围与事实优先级 + +本次原型输入是用户提供的外部文件: + +`C:\Users\BY-OY\Documents\WXWork\1688854456873012\Cache\File\2026-09\新版.html` + +文件读取时间为 2026-09-30。它不属于仓库事实源,文中的示例数据、模拟状态和按钮反馈只用于说明页面意图。新版文件把车辆管理拆成多个页面和弹窗,不能只按“车辆列表”一个页面排任务。 + +本次连续复核的原型快照 SHA-256:`D12B35F5363ED9B67A33E9D12D542DD902628BC946F75519BC7DDC049D94CD65`。行号只对应这一文件版本;后续原型变更需重新核对交互,不能仅凭同名函数认定行为相同。 + +实现范围按以下顺序核对:当前对话确认和正式契约,现有 Controller/OpenAPI/权限/SQL,当前 Admin 路由和页面,原型与参考资料。原型出现的功能需要补齐服务端契约和验收证据后才算有效实现。 + +当前架构使用统一 Gateway、统一 Auth 会话和统一测试环境。后续新增接口应沿“浏览器实际路径 → 统一 Gateway → Controller → OpenAPI → 权限”核对,不按旧资料中的独立海外 Gateway 建立第二套入口。 + +## 2. 原型实际包含的页面 + +### 2.1 页面入口总表 + +| 原型页面/入口 | 原型位置 | 页面职责与主要内容 | 当前原型行为 | 规划判断 | +| --- | --- | --- | --- | --- | +| 排车列表 `outbound-vehicle` | 菜单 `新版.html:1452`;页面 `4474-4486` | 装车前/装车中/装车后三阶段;装车前再分车辆信息、调度审核、理货员审核;按排车单号、车牌、车辆状态筛选;展示司机、电话、托车公司、预约号、派送单、托数、装车时间、FBA/车辆预约等 | 以原型数据和已有页面脚本渲染,审核、附件、轨迹等动作主要是页面演示 | 与正式排车模块连接,不能复制出第二套排车状态或车辆快照 | +| 排车详情 `outbound-vehicle-detail` | 页面 `9433-9445` | 排车单号、状态、车辆/排车信息,以及关联订单明细(订单号、重量、托数、目的 FBA 仓、体积、集装箱号) | 由原型数据渲染关联订单表和详情字段 | 复用现有 `/overseas-warehouse/dispatches/:dispatchNo` 与 `DispatchDetailView.vue`;车辆管理入口只做跳转,不新建排车详情 | +| 排车编辑/审核/订单选择弹窗 | `modal-outbound-vehicle-edit` `12338+`;`modal-outbound-vehicle-audit` `12396`;`modal-outbound-vehicle-rejected` `12397`;`modal-outbound-vehicle-order-select` `12411+` | 维护车辆、司机、预约和路线;上传附件;调度/理货员审核、驳回原因;选择待派送订单 | 表单、附件和审核结果主要写入原型内存并弹 Toast | 归入 VM-04a:复用现有详情/编辑,审核须补提交、通过、驳回、重提及权限/版本契约;普通编辑不代表已提交审核 | +| 车辆列表 `vehicle` | 菜单 `1453`;页面 `8819-8886` | 国内/海外区域页签;自有/外派归属页签;按车牌、司机、车型和状态筛选;新增、导出;两类车辆不同表格列;列表下方预留配送进度和运营记录 | 列表数据在 `ownVehiclesData`/`dispatchVehiclesData` 内存数组中;新增、编辑、删除、状态校验和提示均在浏览器内完成;配送进度卡片在页面 CSS 中隐藏,运营卡片在详情时被移动 | 车辆主数据沿用当前真实模块;新增字段和运营记录需先定服务端归属 | +| 车辆新增/编辑 `modal-vehicle-edit` | `8890-8935` | 归属、车牌、车型、油耗、当前公里码、电话、外派单位、区域、状态、停运原因、FBA 仓、发车时间、预计到达时间;自有车辆编辑时附带保养和加油字段 | 必填校验、派送中/停运中条件校验和本地数组更新;图片字段是字符串或示例文本 | 不直接照搬字段;公里/迈数、司机绑定、运单关联和附件归属需形成正式模型 | +| 车辆详情 `vehicle-detail` | 页面 `9024-9051` | 车辆概览、保养及加油、维修记录、紧急故障、应急救援、异常管理六个页签;概览含车辆信息和派送订单明细;各扩展页签可新增记录 | 详情由本地数组拼装派送订单;更换历史缺页面容器;维修/故障/救援/异常共用未按车辆隔离的数组,部分保存字段错配 | 当前真实车辆详情只承载车辆主数据,服务端明确不含派送履约/更换历史;扩展页签必须逐项立项 | +| 司机管理 `driver-management` | 菜单 `1454`;页面 `8798-8805` | 司机总数、即将到期、驾照过期 KPI;“当前可派”卡片在源码中保留但被 CSS 隐藏;资质提醒;按姓名/手机/司机编号、状态、归属、资质筛选;司机档案表;新增、查看、编辑、删除、驾驶证附件查看 | `driverManagementData` 内存数组;根据当前日期计算驾照到期;缺附件或未审核显示待补件;资格阻断只显示提示,未联动排车保存;保存和删除只更新数组并弹 Toast/confirm | 需要独立司机主数据、资质状态机、附件和派车资格接口,不能把司机字段继续塞进车辆表 | +| 司机详情 `driver-management-detail` | 页面 `8807-8813` | 基础信息、驾驶资质、证照与派车状态;查看驾驶证附件 | 由司机内存数据拼装 | 需要真实详情 API;资格结果必须由服务端返回,页面只展示 | +| 司机新增/编辑 `modal-driver-edit` | `8815-8816` | 姓名、电话、归属、仓库、车型、语言/区域;驾照类型/编号/签发/到期;体检、培训/安全、保险到期;审核状态;驾驶证和其它附件上传 | 强制上传驾驶证后才允许保存;文件使用 data URL 暂存 | 文件应接经评审的上传与附件归属能力,司机资格审核和附件归属需进入正式契约 | +| 自有业务 `vehicle-own-business` | 菜单 `1455`;页面 `8757-8762` | 日期范围、排车单号/车牌/FBA 仓、任务状态、仓库筛选;今日排车、装车完成、派送中、派送完成 KPI;任务明细含预约、车辆、司机、提货仓、目的仓、托数、油耗、价格、装车/到达时间 | `vehicleBusinessRecords` 内存数组;KPI 和总价/单价在浏览器计算;可查看详情、上传现场/油耗图片和实际迈数 | 应消费正式排车/派送事实和服务端 KPI;不能把业务履约复制为车辆主数据记录 | +| 自有业务详情 `vehicle-own-business-detail` | 页面 `8764-8774` | 任务与车辆信息、路线货物与现场凭证、操作记录三页签;显示预设路线、GPS、ETA、油耗、费用预算和证据清单 | 详情字段、时间线、路线和证据状态为脚本拼装;上传仅修改内存对象 | 需要与排车、PDA、派送和文件服务建立稳定关联;GPS/路线告警先确认是否纳入本轮 | +| 外配业务 `vehicle-outsourced-business` | 菜单 `1456`;页面 `8778-8796` | 待外配托数、今天外配托数、在途车辆 KPI;合作车队/异常任务卡片被 CSS 隐藏;按任务号/车队/车牌/FBA 仓和任务状态筛选;展示总托数、自有成本、自有托数/单价、外接托数/金额/单价、ETA、状态 | 与自有业务共用 `vehicleBusinessRecords`;部分操作调用自有业务详情和上传照片逻辑;示例成本、托数和报价在浏览器渲染 | 用户已明确外接为利用自有货运输的剩余运力承接顺路外部货物;原型名称保留作追溯,后续建议改称外接业务,详见第 4.1 节 | +| 出车记录 `vehicle-trip-record` | 菜单 `1457`;页面 `8941-8987` | 时间区间统计四张图(托数、派送仓库、价格、托均价);按车牌/提货仓/派送仓、车辆类型、日期筛选;添加、编辑、导出Excel占位按钮;删除函数未发现页面调用;装车/派送完成时间、用时、托数、价格、托均价、油耗、图片附件 | `vehicleTripRecords` 内存数组;派送用时、托均价和图表汇总由浏览器计算;图片使用 data URL;时间校验只在前端;导出仅弹 Toast | 先定义出车记录来源和唯一性,再决定独立事实表还是由派送单投影;“板/托”“公里/迈”“油耗单位”必须统一 | +| 派送车队报价 `delivery-fleet-quote` | 通用菜单 `1527`;页面 `8989-9021` | 按发货城市、目的 FBA 仓、车队、提货方式、状态筛选;新增/编辑、启停、删除、导出;CSV 模板下载、预览校验、批量导入 | `deliveryFleetQuoteData` 内存数组;校验必填、非负价格和“城市+仓点+迈数+车队”重复组合;导入只写浏览器数组 | 先按第 4.1 节区分外接销售价与车队采购价,再定客户/供应商关联;CSV 导入需服务端校验和重复处理规则 | + +### 2.2 车辆列表和详情的字段与交互 + +配套弹窗也属于本轮原型范围:车辆运营记录 `modal-vehicle-ops-record`(`8937`)、车辆详情扩展记录 `modal-vehicle-detail-add`(`8938`)、司机证照查看 `modal-driver-license-view`(`8816`)、出车记录 `modal-vehicle-trip`(`8966`)以及车队报价编辑/导入 `modal-delivery-fleet-quote`、`modal-delivery-fleet-quote-import`(`9009`、`9021`)。它们不单独扩成新的业务页面,分别随 VM-02、VM-03、VM-05、VM-06 的正式契约开放。 + +车辆列表在原型中有两套列: + +- 自有车辆:车牌、车型、油耗、当前迈数、联系人、联系电话、状态、操作。 +- 外派车辆:操作、车牌、车型、外派单位、联系电话、托数。 + +区域页签和归属页签同时存在,形成两个主切换维度;原型还把车辆配送进度、运营属性、保养加油和路线告警放在同一页面结构中。当前代码已按正式接口将区域降为查询条件,只保留自有/外派归属页签,并把操作列固定在第一列;该布局有现有原型矩阵记录的历史确认作为依据;若本轮重新确认布局则更新相应合同,代码现状本身不覆盖新需求。 + +新增/编辑弹窗的原型校验包括:车牌、车型、油耗、公里码必填;状态为“派送中”时要求 FBA 仓、发车时间和预计到达时间;状态为“停运中”时要求停运原因。上述校验目前只是原型脚本行为,最终规则要由服务端状态机确认。 + +新版车辆详情实际有“派送订单明细”;更换历史仍保留 `renderVehicleFleetHistory` 函数,但它读取的 `vehicle-detail-history-body` 仅在该函数中出现,未找到页面容器,不能算作当前可见分区。当前真实车辆主数据合同排除派送履约及车辆更换历史:Controller 注释排除前者,OpenAPI 的车辆详情 `GET /{id}` 明确排除两者。现有 Admin 详情仍保留这两块边界提示。若新增真实历史查询,需先确定订单/排车查询与更换历史的归属,不能把旧页面提示当作新版已经提供该功能。 + +运营扩展也存在未闭合交互:`vehicleDetailExtraRecords` 是按记录类型保存的全局数组,保存/渲染未带车辆标识;`openVehicleDetailAdd` 生成描述和处理人等字段,而维修/救援保存分支读取不存在的 `vda-item`、`vda-place`,会丢失录入信息。救援列表列名为“付款状态”,弹窗却选“待处理/处理中/已完成”。此外,车辆属性和路线告警面板在打开车辆详情时被隐藏,不能把源码内预留字段全部当成当前可操作需求。正式设计应分别确认记录归属、各类型字段、处理状态和付款状态。 + +### 2.3 原型中明确出现的规则冲突 + +| 主题 | 原型表现 | 需要冻结的正式口径 | +| --- | --- | --- | +| 距离单位 | 车辆列表弹窗使用 km;运营卡片、路线和车队报价使用 miles/迈数 | 车辆里程、路线距离和报价距离分别定义单位;接口禁止以字段名猜单位 | +| 托数单位 | 出车记录表头初始写“板数”,脚本又改成“托数”;外配业务使用总托数/外接托数 | 统一业务词和字段名;托盘数量与板数不能在前端静默换算 | +| 油耗单位 | 百公里油耗使用 L/100km,加油记录示例使用 gal,出车记录油耗使用 L | 定义车辆档案、加油事实、出车消耗的单位与换算责任,服务端返回展示单位 | +| 车辆合作方术语 | 原型混用“外派车辆、外配业务、合作车队、车队渠道、托/拖车公司” | 冻结用户可见词和服务端枚举/字段映射,避免把司机、承运商、车队和拖车供应商当成同一对象 | +| 车辆与排车关系 | 车辆列表有配送 FBA、发车时间和 ETA;排车列表也维护车牌、司机、预约和状态 | 车辆主档只保存可复用属性;排车/派送保存任务快照和执行事实,避免双写状态 | +| 删除 | 车辆、司机、车队报价有删除操作;出车删除只有未接入函数 | 分对象确定删除、停用、作废或更正语义;没有合同的动作不开放,不能自动用停用/作废替代 | +| GPS/路线 | 原型写“GPS 轨迹监控已启用”、路线偏离和 ETA 告警 | 先确认已有设备/轨迹来源和告警服务;没有正式来源时只能展示待接入状态 | +| 资格阻断 | 页面用日期、附件和审核标识显示资格与阻断提示,未形成排车拦截 | 临近到期规则已确认:30 天内仍有效允许并提醒,预计任务结束前过期禁派;由服务端返回资格和原因。核验时点及时间边界建议见第 4.4 节 | + +### 2.4 原型统计与报价口径 + +原型中的金额和统计还需注意以下差异(均为原型事实,不自动成为正式口径): + +- `renderVehicleBusiness` 的“今日排车数”实际取筛选后的行数,不独立限定今天;外配“今日外配任务”被脚本改名为“今天外配托数”,对应数字仍是静态值。正式 KPI 需明确日期字段、仓库时区、筛选范围、单位及聚合粒度。 +- `renderVehicleTripCharts` 的“派送仓库”总数是去重仓库数,图中各仓的值却是出车记录条数;托均价是总价格除以总托数,并非各行单价的简单平均。正式报表应明确两个指标的名称,混币种不能直接求和;原型同时以列表日期和统计日期过滤,需要确认正式查询与图表是否共用范围。 +- 车队报价 `validateDeliveryFleetQuoteDraft` 允许三种价格仅填一种,空值表示未报价,0 是允许输入的数值;CSV 确认导入会跳过无效/重复行并插入有效行。正式合同须确认沿用部分成功还是整批原子提交,不能把空值转换成免费报价,也不能默认原型为全成功导入。 + +## 3. 当前代码、接口和数据现状 + +### 3.1 已具备的车辆主数据能力 + +当前 Admin 和 Lastleg 已经有一套真实车辆主数据能力,不能按旧缺口文档中的“车辆缺失”处理: + +| 层次 | 当前入口 | 已有能力 | +| --- | --- | --- | +| Admin 导航 | `apps/admin-web/src/core/navigation/adminNavigation.ts:120-126` | 车辆管理下已有“排车列表”和“车辆列表”;车辆列表路由为 `/overseas-master-data/vehicles` | +| Admin 页面 | `apps/admin-web/src/modules/overseas-master-data/pages/VehiclesView.vue`、`VehicleDetailView.vue` | 真实分页、关键词/归属/区域/状态筛选、查看详情、新增、编辑、状态变更、CSV 导出;操作列固定在左侧 | +| Admin 路由/权限 | `apps/admin-web/src/modules/overseas-master-data/routes.ts`、`permissions.ts` | 车辆列表和详情使用 `vehicle:list`;创建、编辑、状态、导出权限独立 | +| 后端 Controller | `baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/masterdata/vehicle/adapter/in/web/PlatformVehicleController.java` | 列表、详情、创建、编辑、状态、导出;编辑和状态使用 `recordVersion` 乐观锁 | +| OpenAPI | `baiyue-firstleg/lastleg-service/src/main/resources/openapi/overseas-master-data-v1.yaml` | `/api/platform/v1/last-leg/master-data/vehicles` 的 GET/POST、`/export` GET、`/{id}` GET/PUT、`/{id}/status` PATCH | +| 数据库 | `baiyue-firstleg/lastleg-service/src/main/resources/db/lastleg.sql` | `ll_vehicle`,车牌唯一;保存区域、归属、状态、里程、油耗、司机/外派单位、电话、备注和版本 | +| IAM | `baiyue-firstleg/iam/src/main/resources/db/lastleg-permissions.sql` | `platform:overseas-master-data:vehicle:{list,create,edit,status,export}` | +| 测试源码入口 | Lastleg 车辆 Controller/Application/SQL/OpenAPI 合同测试;Admin 车辆 API、挂载、视图和写行为测试 | 已定位到测试文件;本次未运行这些功能测试,文件存在不代表当前全部通过,也不证明部署或整套车辆管理完成 | + +当前车辆主数据接口字段包括车牌、车型、百公里油耗、当前里程、司机/外派单位、电话、区域、车辆归属、状态、备注、记录版本和更新时间。本轮已增加最大标准托位、最大载重kg和可用容积m³,三项同填正数或全空待确认;车次分配不接受未知容量。服务端不提供车辆删除端点,当前 Admin 不展示删除动作。 + +需要保留的已有规则:车辆创建/编辑将车牌去除首尾空格并转大写,数据库对车牌做全表唯一约束;编辑时公里数不得小于原值;编辑和状态操作检查 `recordVersion`。当前状态为 `IN_SERVICE/在役`、`DISPATCHED/外派中`、`MAINTENANCE/维修中`、`INACTIVE/停用`、`RETURNED/已归还`,与原型“空闲/派送中/停运中”并不一一对应。`changeStatus` 只校验枚举与版本,没有按当前派车任务检查状态迁移;不能据此宣称已经实现车辆占用和释放。出处为 `VehicleApplicationService.create/update/changeStatus`、Admin `presentation.ts` 和 `ll_vehicle` 唯一索引。 + +### 3.2 原型范围与当前实现的差距 + +| 能力 | 当前状态 | 结论 | +| --- | --- | --- | +| 车辆主档列表/详情/新增/编辑/状态/导出 | 已有真实前后端合同 | 作为基线复用;先补字段和状态确认,再决定是否扩表 | +| 车辆运营属性(初始里程、停放位置、司机绑定、租赁状态) | 原型 `vehicleAttributeData` 和隐藏面板中预留 | 缺正式 DTO、表和权限;不能写入浏览器本地状态后宣称完成 | +| 保养与加油 | 已有独立车辆运维记录模型、文件归属、版本及历史,Admin 按车辆分页查询并接入新增/编辑和图片读取;实现边界见第 10.1 节 | 本地实现不代表环境已部署;不自动改车辆里程、占用或财务付款 | +| 维修、紧急故障、应急救援、异常管理 | 已接逐车新增/展示,异常支持编辑;修复原型字段错配并分离处理与付款状态,见第 10.2 节 | 维修/故障/救援后续更新入口仍待承载方式确认;财务闭环及真实环境验收未完成 | +| 司机主数据与资质 | 已新增司机后端、文件接入、Admin 列表/详情/编辑/审核/证照预览,补齐真实仓库关联与可选资质日期;车次分配、调时和整车 PDA 发车均复核资格;本地验证见第 10 节 | 实际命令的源码已接入,真实部署及 HTTP/PDA 验收尚未完成,不能以独立资格预览代替发车校验 | +| 自有/外接业务工作台(原型名外配) | 现有正式排车/派送模块存在,但没有原型同名工作台 | 已确认顺路拼载业务;建议按共享行程关联各客户单据,工作台展示自有/外接货物分项,详见第 4.1 节 | +| 车辆详情中的派送订单/更换历史 | 新版有派送订单展示,更换历史缺容器;车辆详情尚未接入两类记录,页面引导从现有排车/派送管理查看派送事实,明确更换记录未接入 | 车次已有改派历史,但不等于车辆详情已有跨车次履历;后续补真实查询,不以说明文字代替功能 | +| 出车记录与统计 | 原型本地数组和浏览器图表 | 需要确定事实来源、唯一键、费用归属、油耗证据和统计口径 | +| 派送车队报价 | 原型内存数组、CSV 解析和浏览器校验 | 先区分外接销售报价与车队采购报价,再决定模型复用和客户/供应商关联,不能将外接收入建成供应商应付 | +| 车辆管理新增菜单 | 当前源码已注册排车列表、车辆列表和司机管理,司机详情使用独立路由 | 自有业务、外接业务、出车记录等菜单继续随对应正式接口接入;源码注册不表示环境已发布 | + +### 3.3 与现有排车和车队能力的边界 + +现有海外排车正式入口是 `apps/admin-web/src/modules/overseas-warehouse/`,后端入口在 Lastleg `dispatch/`;排车状态、PDA 拣货、发车门禁、转派送和派送完成属于排车/派送链路。目的港码头车队选择属于货柜聚合的码头拖车链路,使用供应商主档和独立权限。车辆主数据只维护车辆档案和可复用属性,不能成为排车状态或码头车队事实的第二个写入口。 + +### 3.4 已验证的现有执行顺序 + +本节记录共享车次接入前的执行链,作为继承关系与缺口的对比依据;当前车次增量以第 10 节为准。不表示已经完成真实环境验收,也不把新增原型审核作为既有前置条件。 + +1. **预排车**:候选列表可跨客户查询,但单次创建排车须选同一客户、同一海外仓的托盘。不能把“跨客户可查看”理解为“一张排车单允许跨客户混装”。依据:`DispatchService.resolveCustomerScopeForPallets`、`requireSingleCustomerScope` 和 `preArrange` 的仓库校验。 +2. **维护本次排车信息**:当前请求保存车牌、司机姓名/电话、承运商名称、预约和预计时间等文本/快照;未形成车辆档案 ID、司机档案 ID 关联及资格门禁。车辆档案状态不等于本次排车状态。 +3. **发车前完成两组条件**:现场 PDA 完成拣货并核平箱数;后台在允许阶段执行“转派送”。转派送可早于拣货完成,但货物必须已收货并绑定实物托盘,且必须早于发车。两组条件不是必须按固定先后完成的串行操作。 +4. **转派送生成单据**:一张排车单对应一张出库单,派送单按目的地分组。FBA 仓是常见分组;当前 `DeliveryTransferService.deliveryGroupKey` 也处理私人地址与邮编,并以目的仓编码或 ID 分组,不能将能力范围仅写成 FBA。此时出库单为 `WAIT_OUTBOUND`,生成派送单本身不表示车辆已出发。 +5. **PDA 发车**:当前 `DispatchPdaWorkflowService.requireVehicle` 只检查车牌非空;还检查绑定仓、拣货任务完成、全部箱数核平、排车为 `READY_TO_DEPART`、出库单为 `WAIT_OUTBOUND`。通过后扣减对应已拣库存,出库单变为 `OUTBOUNDED`,排车变为 `DEPARTED`。没有现成的车辆主档可用性、司机证照或两级审核门禁,不能将“车牌非空”表述为“车辆与司机完整合规”。 +6. **目的地分别签收**:`DeliveryDocumentService.save` 在有效状态下把非空 `RECEIPT` 资料保存进正式快照,才自动完成当前派送单;单纯上传文件不触发完成。一张派送单完成不代表其他目的地同时完成,也不自动证明新增的“整次出车记录”已经结案。 + +并发与快照边界也有现状差异:车辆主档有 `recordVersion`,但 `DispatchRequests.Update` 没有客户端期望版本,`DispatchService.update` 使用行锁且仅允许 `PENDING_DEPARTURE` 编辑;行锁不等于能识别用户提交的过期表单。转派送会把当时的车牌/司机等信息保存到派送单,后续修改排车是否同步、是否重新审核必须单独规定。排车取消、移除托盘、出库取消是不同命令,不能将其理解为任意阶段一键撤销整条链路。新增审核和改派须同时定义并发版本、审核依据快照和关联单据处理规则。 + +现有执行链为:**预排车 → 维护车牌等任务信息 →〔PDA 拣货核平 + 发车前转派送〕→ PDA 发车出库 → 各目的地分别签收**。司机资质、两级审核、运维、行程汇总与自有/外配工作台如何接入,属于本次新增设计。 + +### 3.5 本次排查发现与纠正 + +以下原型行号均指第 1 节的外部 `新版.html`,通过静态脚本核对,未作浏览器视觉验收。 + +| 严重程度 | 先前表述的问题 | 本次核对结果与处理 | +| --- | --- | --- | +| 高 | 把“调度审核 → 理货员审核”直接接在现有 PDA 流程前,且任务写成只复用现有审核 API | 原型 `18589-18599` 确实演示调度通过转理货审核、理货通过进入装车中;已检查的 dispatch Controller/DTO/Service 没有对应审核命令。普通排车编辑 `18804-18829` 也没有重置审核阶段/驳回状态,只有散板上下文分支写待调度审核。原型本身的提交与驳回重提尚未闭合;需新增审核契约,并确定与 PDA 开工/发车的关系,不能直接复用不存在的 API | +| 高 | 把司机页面显示“已阻断派车”当成真实业务阻断 | `openDriverDetail`(`22702`)只生成提示文字,且将“即将到期”也显示为阻断,与“30 天提醒”文案不一致;排车保存未联查司机档案,当前服务端也未关联司机资格。资格计算、临近到期是否阻断、提交和发车时是否重新核验需要分别定义 | +| 高 | 把自有/外配页理解为排车生成后的现成视图,把外接金额直接解释为车队应付 | `vehicleBusinessRecords`(`22627+`)是独立示例数组;排车用另一组 `outboundVehicleData`,出车统计又用 `vehicleTripRecords`。现有脚本没有证明三者自动同步。外配行同时含自有托数/成本、外接托数/金额,且示例混用人民币与美元;只能说明原型要展示这些列,不能据此决定货源、承运关系、应收/应付或财务自动入账 | +| 中 | 把出车记录的删除函数算成可用按钮,并把导出写成原型未要求的可选扩展 | `8953` 有“导出Excel”按钮,但只弹 Toast;`renderVehicleTripRecords`(`22953`)行操作只渲染编辑;`deleteVehicleTripRecord`(`23057`)仅找到定义,未找到调用入口。更正为:新增/编辑可演示,导出是占位交互,删除存在未接入函数 | +| 中 | 默认无 DELETE 就提供停用/作废,且一律按车辆主数据合同处理 | 车辆主档当前无 DELETE;排车则有 DELETE 路径承载取消,HTTP 方法不能代表物理删除。新司机、运维、出车记录的停用、作废、删除或更正须各定生命周期,不能凭缺少端点自行增加替代动作 | +| 中 | 直接描述“司机/车辆资格齐全 → 发车”,并遗漏单客户同仓与私人地址派送 | 当前实际条件和单据关系以第 3.4 节为准。完整资格校验是新增工作;“转派送在发车前”这一结论经代码复核仍成立 | + +## 4. 业务决策与剩余边界 + +以下为决策清单,按受影响工作包分别冻结;已有代码规则不因列入讨论而自动失效。无关问题未定不阻止已确认部分的实现;未定业务不能由页面本地字段代填: + +1. 本轮是否一次纳入新版原型的司机管理、自有业务、外配业务、出车记录和派送车队报价,还是先完成车辆主档的第二阶段增强。 +2. 国内车辆和海外车辆是否共用同一车辆主档;区域是否只是查询维度,还是决定所属仓、时区、单位和可派送范围。 +3. 自有车辆、外派车辆和租赁车辆的归属枚举;外派车队、司机和车辆之间是否允许一对多历史绑定。 +4. 车辆状态、排车状态、司机资格状态和派送状态分别由哪个服务维护,哪些状态可以相互阻断;现有五种车辆状态与原型三种状态如何映射。两级审核状态应与拣货/装车/发车的实际执行状态分别定义,不能用审核通过伪造现场开始时间。 +5. 已确认采用 30 天临近到期提醒及第 20 项禁派规则。尚需确定必需资质清单和审核角色:驾驶证之外的体检、培训/安全、保险是否全部必填,不能由原型字段自动推为必需。 +6. 车辆运维记录是否要进入财务费用池;保养、加油、维修和救援费用的币种、汇率、税费、结算单关联和付款状态由谁确认。 +7. GPS/路线/ETA 的设备和数据来源;如果没有正式来源,原型中的轨迹、路线偏离和自动告警是否延期。 +8. 按用户要求已将“一次实际出车对应一个车次,多条货物明细,出车记录自动汇总”写入方案基线,见第 4.1 节;人工历史补录、车次中途换车和取消分支的规则在开发合同中细化。 +9. 已将外接应收/实收、本趟直接成本和自有/外接成本分摊分别展示写入方案。尚需确定成交价按托还是按整单、实际数量变化后的改价、币种/税费和结算引用;计算结果由服务端输出,人工更正保留原因。 +10. 根据已确认外接含义,外接报价是面向委托方的销售报价,应关联客户/委托方,不能强制当作供应商采购价。原型“派送车队报价”是否另用于向外部车队采购运力、是否纳入首期仍需明确;若是采购价才关联供应商。两类报价各定适用路线、计价单位、币种、有效期、版本及导入匹配规则。 +11. 司机证照、车辆运维照片、出车图片和签收凭证分别归属哪个文件业务范围、保留多久、谁有下载权限;允许的大小、MIME 类型、预览和下载规则是什么。 +12. 分别定义车辆、司机、运维和出车记录的停用、作废、删除或更正语义及权限。车辆主档当前无删除端点;不能将这一现状推为所有新对象的永久规则,也不能默认创造作废接口。 +13. 跨区域日期、时区和工作日边界如何计算;车辆、排车、派送和统计接口返回的时间采用什么时区。 +14. 平台客户数据隔离和角色范围:车辆、司机、车队、报价及附件是平台级共享,还是按客户/仓库限制可见和可操作范围。 +15. 司机和车辆是否允许多仓、多司机或多车队绑定;绑定是否保留有效期、历史和并发冲突记录。 +16. 当前车牌在车辆表内全局唯一且编辑里程不能回退;是否调整唯一作用域、如何处理换牌/里程录错需要明确决策。新增状态迁移、占用/释放、冲突与更正审计须显式设计,不能无意取消已有约束。 +17. 车队报价 CSV 模板的当前字段格式、单批上限、失败行处理、重复行策略和导入幂等键;不预设旧模板兼容层。 +18. 出车记录原型已包含导出Excel入口,但尚未生成真实文件;需确认正式导出格式、字段、权限、范围上限及统计口径。 +19. 已确认审核首期只展示详情并提供通过/打回,不预设业务检查清单;建议沿原型保留调度/理货两级并记录人员、时间、意见,打回必填原因。拣货/发车的阻断时点、改派后重审和跨单快照同步仍需在接口设计中明确;通过审核不自动代表开始装车。 +20. 已确认:临近 30 天到期但仍有效时允许派车并提醒,预计任务结束前会过期则禁派;必需资料缺失、未审核、已过期禁派。提交/审核/发车的复核时点、预计结束时间缺失处理和临时换司机规则在接口设计中落实。 +21. 已确认外接是利用承运自有货物的车辆剩余运力,顺路承接别人的货;属于货源/承运任务来源维度,不等于外包给其他车队。当前单客户排车规则是实现现状,新需求需要同车关联不同委托方的货物,推荐的行程与客户单据关系见第 4.1 节。 +22. KPI 的“今日”、统计日期、去重仓库数、出车次数、托均价分别采用什么口径;列表/图表是否共用筛选条件。车队报价空值与零价、导入部分成功与整批失败的规则须同时定清。 + +### 4.1 本轮业务确认与出车方案建议 + +**已确认**:本模块管理车辆,同时安排自己的货物运输;车辆存在顺路剩余运力时承接外部货物,称为“外接”。一趟车可同时含自有业务货物和外接货物。原型“外配业务”的名称和外包承运暗示需要据此调整,建议用户可见名称改为“外接业务”;车辆归属(自有/外派/租赁)与货源类型分别记录,不从其中一个自动推导另一个。 + +**已确认**:审核先以详情展示、审核通过、打回为范围,不做未经确认的逐项业务检查表。建议保留原型两级入口,打回时填写原因,修改后重新提交;记录审核人、时间、意见和本次审核版本。司机资格不能因人工点通过就跳过服务端已确认的禁派规则。 + +**已确认的司机资格规则**:必需资料缺失、未审核、已过期时禁止派车。对于 30 天内到期但尚有效的证照,用户已明确选择“允许并提醒,任务结束前会过期则禁止”。计划预计结束时间用于派车校验,改派或时间变更后重新计算资格;缺少预计结束时间时不能直接判定满足该规则。具体必需资质清单和时间边界在合同中明确,不自动扩大为原型全部证照。 + +本次按用户“请写入后继续 Review”的要求,将该确认整理为以下判定表。表内“允许”仅表示通过此项证照校验,仍须满足车辆、审核、装载等其他派车条件: + +| 证照与任务情况 | 判定 | 依据 | +| --- | --- | --- | +| 仍有效、超过 30 天到期,且有效期覆盖预计司机任务结束 | 通过此项证照校验,无临近到期提醒 | 按已确认的 30 天提醒窗口及任务全程有效要求推导 | +| 仍有效、30 天内到期,且有效期覆盖预计司机任务结束 | 允许,并展示到期提醒 | 用户明确确认 | +| 当前仍有效,但预计司机任务结束前会过期,无论是否已进入 30 天提醒期 | 禁止派车,需更换合格司机或更新并审核证照 | 用户明确确认;不能只检查“今天是否过期” | +| 必需资料缺失、未审核或已过期 | 禁止派车 | 前述已确认资格前提 | +| 未填写预计司机任务结束时间 | 草稿可保存,正式派车前要求补齐 | 第 4.4 节执行建议;不能默认为证照覆盖任务 | + +证照有效截止日、时区及恰好触及截止时刻的处理仍按第 4.4 节明确,不以本表推定法定有效时刻。 + +下面的“一车次、多明细、分别签收、成本汇总”方案已按用户“写入后继续 Review”的要求纳入文档设计基线;表中明确标为首期建议的范围以及第 4.2 节问题仍待确认。方案写入本身不表示功能已实现,也不将未确认的边界自动定案;后续源码进度见第 10 节。 + +| 对象 | 建议口径 | 主要原因 | +| --- | --- | --- | +| 运输行程/车次 | 一次实际出车对应一个稳定业务编号,记录车辆、司机、起终点、计划/实际发车及完成时间;车次计划创建时即可建记录,发车后继续补齐实际事实,同一趟多目的地不拆成多次出车 | 能按真实运行统计,避免一车送多个仓被重复计次数 | +| 货物明细 | 行程下关联多条自有/外接承运明细;每条有委托方、来源单据、提卸货点、托数、重量、体积和约定费用。自有业务货物也保留原客户归属 | 同车可拼载,客户订单、库存、附件和费用保持各自归属 | +| 执行单据 | 在现有客户排车/出库/派送单之上建立共享行程关联,现有单据保持客户/仓库边界;行程只统筹物理车辆、路线和发车,不复制客户库存账 | 不直接解除现有单客户校验,也不把所有货假挂在同一个客户下 | +| 外接履约来源 | 首期建议人工录入外接委托和承运明细、分配到行程;进入本仓的外接货走真实收货/库存流程,异地提货须有独立交接证据,不虚构已入仓事实 | “接单”和“已收货”是不同事件;是否首期支持沿途提货应明确范围 | +| 剩余运力 | 先检查托位、限重和容积,预留外接货后立即占用;多点提卸按每一段在车货量核算,不能只看整趟总托数 | 防止同一空位重复出售或沿途超载;可用托数不是唯一条件 | +| 行程完成 | 所有承运明细均送达签收,或异常已按明确终态处理后,结束本次行程;一个目的地签收不完成整车。车辆是否可再次调度还需检查占用、位置和故障状态 | 支持多目的地、拒收/退回;不将付款完成或必须回原仓作为派送完成条件 | +| 出车记录 | 从行程及各客户执行单据自动汇总;人工只补充实际里程、油耗、凭证及有权限的更正,保留原因和历史 | 避免再建一张自由填写、与实际运输脱节的出车统计表 | +| 收入 | 外接货的约定运费属于向委托方收取的运输收入,区分报价、确认应收和实收;自有业务订单的原有运费不能在车辆模块重复计收 | 能分析外接贡献,同时防止重复计费 | +| 成本 | 行程记录实际燃油、司机本趟费用、通行费、停车及其他直接费用;保养、保险等固定费用后续按明确规则分摊,账务仍走 Finance | 先得到可核对的单趟直接成本,避免把未分摊成本的结果叫完整利润 | + +价格展示建议替换笼统“价格”为“外接应收、外接实收、本趟直接成本、自有货分摊成本、外接货分摊成本”。同路线、同规格可先按托数分摊直接成本;距离/占位差异较大时另定按占用空间与里程的规则。分摊值用于运营分析,不等于新增客户应付,也不自动生成正式账单。 + +示例(统一币种、同路线同规格):一车容量 30 托,自有货 20 托,外接 10 托,外接确认运费 300,本趟直接成本 600。按托数分摊,自有货成本 400、外接成本 200,外接在该分摊口径下贡献 100;不包含固定费用,不能称为整趟净利润。托均收入只用外接收入除外接托数,整趟托均直接成本用本趟直接成本除全部实运托数,两个指标不得混用。 + +接入影响:当前“一张排车 → 一张出库 → 多目的地派送”仍是客户执行单据的现状;推荐增加的共享行程可能关联多组此类单据。必须另定按车统一发车的校验、失败重试和各客户状态推进协议;不能因新增行程就假定现有接口支持一次多客户出库。“空位放出去”首期建议由运营登记可接运力和外接预订,公开发布、在线接单或撮合平台需另行明确,不自动扩大本轮范围。 + +### 4.2 本轮 Review 后仍影响开发范围的问题 + +无需重新确认第 4.1 节已明确的外接含义、简化审核交互和司机临近到期规则。下面的问题按影响排序,建议均未冒充用户确认: + +| 问题 | 为什么影响实现 | 建议首期口径 | 影响任务 | +| --- | --- | --- | --- | +| 外接货交到我方起运仓,还是需要司机沿途去别处提货? | 前者可用现有仓库真实收货和 PDA 出库;后者增加路线站点、提货交接、分段容量及未入本仓的履约来源 | 首期先接送到本起运仓的货,多目的地派送;沿途提货另开范围。若沿途提货是核心业务,则在本轮纳入,不能伪造入库绕过 | VM-05、VM-04a、VM-07b | +| 外接委托方是否已是系统客户,谁付款? | 单据、库存和应收需要稳定的客户及付款归属;货物原货主、委托运输的人、付款方可能不同 | 外接单选已有客户/委托企业,联系人独立记录;新委托方先按现有客户建档。是否需要工作台账号按实际需要处理,不强制外接人在线下单 | VM-00、VM-05、VM-06 | +| 两级审核分别在什么作业时点生效? | “详情 + 通过/打回”的界面已定,但阻止拣货还是阻止发车会影响 PDA | 建议调度通过后允许开始拣货,理货通过且实际拣货核平后允许发车;审核记录与实际作业状态分开。关键货物/车辆/司机变化重审,但不回滚已经发生的拣货事实 | VM-04a、VM-07b | +| 外接运费按托数还是整单报价?货到后数量变化怎么办? | 决定报价明细、成交金额、补差价与取消收费;原型单价和总价不能互相覆盖 | 首期支持按托/整单两种计价,保存成交价快照;实收数量与预订不同先重新核量并确认金额,不静默改价或放行超载。等待费/额外提货费等单独登记原因和确认 | VM-05、VM-06 | +| 外接预订何时占位、撤单后何时释放? | 未确认询价不能永久占满车辆,已装车货物也不能通过取消按钮从库存中消失 | 询价不占位,确认承运后占位;发车前未执行的撤单释放,已拣/已装走正式撤回或退仓动作;发车后拒收/退回走异常处理。临时留位的超时和取消费另定 | VM-05、VM-04a | +| 是否首期承接超规格托盘、散货或特殊货物? | “空 10 托”只对明确规格有效;现有 Admin 车型为大车 30 托/40000 LB、小车 15 托/10000 LB,不代表任意车辆都适用 | 首期建议标准托盘普通货,至少核验托数/规格、重量和体积;实际车辆容量独立维护,超规格/散货另确认计价与占位方式。重量未确认前不能按可用托数直接承诺承运 | VM-01、VM-05、VM-06 | + +其他实现细节由合同设计给出具体方案,不把所有技术选择都退回给业务:同一客户执行单及同一批待发运货物不能重复绑定有效行程;不将这一限制扩大为原始客户订单永远不能按现有规则分批履约。行程与各客户执行单据保留稳定关联;整车发车需先校验所有本次发运明细就绪,保证重试不重复扣库存;客户只可见自己的货物、凭证和费用。车辆/司机的调度占用、变更历史与附件读取权限纳入相应后端门禁。 + +### 4.3 本轮发现的现有接口差距与修订 + +1. **转派送强制收费与“不重复收费”冲突**:`DeliveryRequests.Transfer.fees` 非空;`DeliveryTransferService.validateTransferFees` 要求存在正数 `DELIVERY_FEE`,地板/混装还要求装车费,购买预约要求预约费;`transferResolved` 会调用 `feeSources.publishApproved`。因此新行程不能无条件逐客户重放这套新增费用流程。建议新增明确的费用来源/覆盖关系,支持引用已确认费用与登记本次新增费用,Finance 为唯一账务事实;具体字段随 API 合同确定,不用零元或虚构费用绕过现有校验。 +2. **一个平台行程不能等同于一张客户排车单**:现有 `DispatchService` 保留单客户、同仓校验,新行程统筹多个客户执行单据。需要验证某客户准备失败时整车不误发、重试不重复执行、取消只影响指定承运明细,不把平台行程 ID 当成客户归属。 +3. **计划数量、实收数量与占用容量需分开**:接单时的预订不等于已到货;按实际装载检查每段托位、重量和体积。外接临时加货或少到货会改变余位和成交金额,不能让页面自行修改原出库事实。 +4. **行程完成、车辆可派、费用结清为三个状态**:货物签收完成不自动代表已收到运费,也不必等待回到原仓才完成运输;车辆释放还需考虑位置、故障和下一任务时间。一次行程中途换车应保留交接/换车历史,不将原记录直接改成另一车牌而丢失追踪。 + +追加源码核对:转派送原先在同请求键、已转换排车及唯一键竞争三条重放路径直接返回旧结果,修改金额后可能表现为成功但仍沿用旧费用。本轮已在 `ll_outbound_order.request_hash` 保存首次业务请求摘要;仅请求键不同而业务内容一致可以重放,费用、计划时间、装载等内容不同则拒绝,原单据及已发布费用保持原事实。该修复解决请求重放误报,不代表第 1 项的费用覆盖引用已经实现。现有 Lastleg 费用查询按业务单据返回已登记来源,Finance 事件接收接口也不提供“该费用覆盖本票尾程哪些服务”的证明;后续须按实际承运明细、来源版本和明确服务范围设计引用,不能拿同客户任意已收费记录或总运费金额直接判定派送/装车/预约已包含。 + +本节区分接口差距与追加修复,实际实现范围和验证结果见第 10 节;未注明已实现的方案不能视作完成。第 9 节五轮 Review 是此前版本的记录,本节是随后业务确认后的追加核对。 + +### 4.4 司机规则写入后的追加 Review + +本节记录 2026-10-02 本轮文档 Review。已确认业务规则保持第 4.1 节原意;下列边界是实现建议,不代表现有接口已经具备,也不把法定证照效力作推定。 + +**司机资格的执行建议:** + +- 草稿可先保存缺失信息;正式分配司机、提交审核、审核通过、发车时由服务端重新计算资格。缺少预计任务结束时间时提示补齐,不允许通过正式派车/发车校验。 +- 提醒按证照配置的有效时区和当地日期计算,剩余有效天数为 0~30 天时提醒。证照只有日期时,建议记录其当地有效截止日;截止日当天计划结束是否允许,取决于明确的有效截止时刻,不能由浏览器时区或固定加 24 小时推算。日期边界、夏令时和恰好到期时刻须覆盖测试。 +- “预计任务结束”应覆盖该司机本次实际承担的驾驶任务;若还需返程、转场,不能仅以最后一票货物的预计签收时间代替。行程派送完成与司机任务结束分别记录。 +- 更换司机、替换必需证照或调整预计结束时间时重新校验;证照关键内容修改后建议重新审核。普通联系人信息修正不应无条件推翻整车审核,重审字段由合同列明。 +- 已在途时发现延误将跨过证照有效期,应提醒调度并登记处置/换司机;不得自动撤销已发车事实、回滚库存或将整趟标为已完成。实际交接保留时间、地点、双方司机和凭证。 + +**本轮优先澄清的业务问题:** + +| 问题 | 当前结论与建议 | 不明确会产生的影响 | +| --- | --- | --- | +| 外接货从哪里装车? | 已确认首版送到我方起运仓;沿途提货留待后续版本优化。对应第 4.2 节首项 | 影响真实收货、交接证据、路线站点及 PDA 范围 | +| “空位放出去”是否需要客户可见的发布入口? | 已确认首版运营线下找货、后台登记余位和外接订单;客户工作台在线发布/申请留待后续版本,不以后台登记冒充线上接单 | 仅做后台登记不能被描述为已经完成线上发布或接单 | +| 两级审核卡在哪个节点? | 已确认详情、通过/打回交互及首版时点:调度通过后开始拣货,实际核平且理货通过后允许发车 | 影响审核详情中的数量来源,以及 PDA 开工/发车门禁 | +| 哪些司机证照属于必需资料? | 首版按驾驶证作为基础必需项执行,体检、培训/安全、保险先记录日期,不自动设为必填;这是本轮产品范围,不推定法定资质结论 | 影响缺件、未审核和过期的禁派范围;不能只确认到期算法而遗漏适用证照清单 | + +这四项按本轮用户“按建议执行、先做首版”的确认推进。其余仍按第 4.2 节保留明确建议:已有客户/委托方建档、按托或整单成交快照、确认承运后占位、标准托盘普通货。未经确认不写成最终业务事实;这些问题只约束相关工作包,不重复询问外接含义或 30 天到期规则。已确认部分可继续细化和开发,但不能据此判定外接、审核及司机资格的整条流程已经冻结。 + +### 4.5 本次追加 Review:装载、占用与异常分支 + +本节是对本文方案的一致性 Review,不代表新增代码或环境验收。第 4.4 节范围问题继续待答;以下给出合同设计建议,避免重复增加业务确认问题。 + +| 发现的缺口或歧义 | 建议补齐的规则 | 对应任务与验收 | +| --- | --- | --- | +| 按客户货物明细直接累加托数,可能把多客户合托计算成多个实物托盘 | 装载以实物托盘和实际占用的标准托位核算;客户货量、收费托数和物理占位分别记录。同一实物托盘的重量、体积只统计一次,客户货物归属保留;不同卸货站点的货物是否允许同托须明确现场拆托方式,首期建议拆成可独立卸货的实物托盘 | VM-05:两客户同托不重复占位、不重复计重;客户费用仍分别核算 | +| 一票未到齐或被打回时,其他货已就绪,整车如何继续 | 任一当前发运明细未就绪均阻止整车发车。若要剔除该票,先完成有权限的改计划及必要撤拣/退仓,重新核算容量、费用和审核,再统一发车;不能靠忽略失败的客户单局部推进 | VM-04a、VM-05:一票失败全车不误发;剔除已拣货物不丢失库存与作业事实 | +| “货送完”与“司机任务结束”不同,过早释放会重复派车 | 货物履约结束、车辆释放和司机释放分别判断;司机仍承担返程或转场时继续占用。允许提前建下一车次计划,但正式分配须检查资源占用;换车/换司机保留交接事实 | VM-02、VM-05:全部签收但司机尚在任务中,不能分配重叠任务;不因费用未结清而无限占用 | +| 文档“一张客户单不能分配两车”的措辞过宽 | 防重复约束落在客户执行单与实际待发运货量上;原订单如按现有业务规则拆成不同批次,不因共享车次设计一律禁止分批。新增拆单能力不在本条自动承诺 | VM-04a、VM-05:重复发同一批货被阻断,合法独立批次不误拦 | + +审核被打回后应展示原因并允许修改重提,已经完成的现场动作保留。装载或费用变化后,应分别确认新的装载依据与成交金额,不能用一次“审核通过”同时代表收货完成、货物发车和客户付款。 + +### 4.6 本次复核:承运承诺、审核范围与部分拒收 + +本次按“写入后继续 Review”的要求复核第 4.1 节:司机临近到期判定已经写入,继续按用户明确确认执行,不再次征求相同决定。以下三项是补充方案,尚未获得业务确认,不代表现有功能已实现;它们细化第 4.2、4.5 节,不替代其中仍待确认的范围。 + +| 需要补齐的边界 | 建议处理方式 | 对应任务与验收场景 | +| --- | --- | --- | +| 自有货优先是否允许挤掉已经确认的外接货 | 建议自有货在对外确认承运前优先安排;外接一经确认就占用承诺运力。之后自有货增加导致超量,应由调度协商改期、改车或撤单并留存结果,再释放或调整预留,不能自动取消外接或超载发车。外接预留与实际装载关联替换,不能在到货后把同一票重复计算两次 | VM-04b、VM-05:余位已确认给外接后新增自有货,提示容量冲突;外接从预订转实收时占位不翻倍;撤单按是否已拣/已装分别处理 | +| 审核通过究竟覆盖哪些单据和数据,修改后哪些审核失效 | 建议客户执行单保留各自调度审核,整车理货确认覆盖本次全部发运明细及装载版本;整车发车同时核对两者。增减货物、换车、换司机、改路线或延长任务后使受影响的通过记录失效,并重新检查资格、装载与容量;历史审核和已发生作业事实保留。联系人或纯备注修正不触发无关重审。审核所属对象仍需与第 4.4 节的审核时点一并确认 | VM-04a、VM-05、VM-07b:客户 A 通过不能代替客户 B 通过;旧页面提交旧版本不能批准新装载;改司机后不能沿用旧司机资格结果 | +| 多点派送中只有部分货物拒收,是否可以直接结束整车 | 建议已经签收的明细保留完成事实,拒收部分记录数量、位置、责任人和后续处置,保持未结案,直到有真实退回签收或经明确流程确认的交接终态。仅填写异常说明或关闭工单不能代替货物交接;需重派的货物另关联后续任务,不能通过改签收数量消除差异。货物结案之后仍分别判断车辆和司机是否结束任务 | VM-05:两站已签收、一站拒收时不能完成整车;部分退回的数量须与实发和已签收数量核平;异常说明保存不自动释放资源、不重复收取原运输费用 | + +需要优先获得业务答复的四项已统一列入第 4.4 节:外接货装车地点、余位是否面向客户在线发布、两级审核生效节点、必需资质清单。“30 天提醒”已经确认,不等于驾驶证以外的体检、培训和保险都成为必填门禁。未决项仅约束相关工作包,不能据此宣布全模块已经具备开发或验收条件。 + +### 4.7 首版确认前的决策依赖记录(已由本轮确认解除待答状态) + +2026-10-02 再次按当前路由、交互矩阵、车次发车服务与费用来源接口核对:核心业务及新增交互选择连续多轮仍未收到答复。已确认规则的实现和本地回归保留;不能用继续修局部缺陷或重复跑测试,代替下面的流程决策。当前未满足整模块交付条件。 + +| 待答入口 | 直接受影响的工作 | 当前证据与边界 | +| --- | --- | --- | +| 第 4.4 节:外接货装车地点、余位发布方式 | VM-04b、VM-05 的外接委托、收货/沿途提货、客户申请和占位流程 | 共同起运仓的客户执行单车次已有后端,但不是完整外接接单能力;不能据此排除沿途提货或 Client 发布需求 | +| 第 4.4 节:两级审核生效时点、必需资质清单 | VM-02、VM-04a 的正式派车、拣货、发车门禁 | 当前资格校验不代表审核节点已实现,也不能默认驾驶证以外所有证照都不需要校验 | +| Admin `PROTOTYPE_MATRIX.md`:车次页面承载方式 | VM-07b 的计划、分配、关联排车、装载、结案和资源释放入口 | 当前 `routes.ts` 无车次操作路由;新 PDA 发车已要求车次关联,缺少平台入口时不能按可操作闭环发布整个车辆包 | +| 同一矩阵:维修/故障/救援更新处理入口 | VM-03 的持续处理流程 | 原型只定义新增;服务端可更正记录,但页面仍未开放未经选择的新增行操作 | +| 第 4.3 节:原运费的服务覆盖与来源引用 | VM-04a、VM-05、VM-06 的不重复计费和费用展示 | 建议每票明确已含哪些服务并关联原费用来源;只对另行确认的新增项目计收。本节记录初始差距;现已接入按实际货物确认原费用覆盖,源码与验证见第10.9节 | + +上述答复到齐或逐项明确后,按对应工作包继续实现;未答部分保持待确认,不代填为“通过”或通过旧行为回退发布。部署授权仍有效,不需要再次申请同范围授权;源码、配套 Schema/权限、操作入口和真实 HTTP 必须一起核对,环境状态继续只以两份正式部署/通信契约为准。 + +## 5. 任务拆分与依赖顺序 + +VM-00 的交付不是只列问题:对第 4 节每项记录“已确认现行规则 / 本轮采用方案 / 后置 / 待业务确认”、适用工作包及确认依据。司机资格和审核决策约束 VM-02/VM-04a;已确认的自有/外接含义与已写入的行程/金额设计基线约束 VM-04b/VM-05;第 4.2 节未决范围分别跟进;运维字段和附件约束 VM-03;报价匹配和导入约束 VM-06。未获得用户决策的项保留待确认,不由本轮 Review 代为批准。 + +以下是候选工作包,不是已批准排期。P0 表示本方案的前置工作,P1 表示后续候选实现,Gate 表示交付门禁;具体纳入范围在 VM-00 冻结。各包只同步实际受影响的前端、后端、OpenAPI、权限、SQL、测试与文档,避免重复安排页面工作。 + +| 编号 | 优先级 | 工作包与主要交付物 | 建议实现归属 | 依赖 | +| --- | --- | --- | --- | --- | +| VM-00 | P0 | 冻结范围、术语、单位、状态机、车辆/司机/排车边界、删除策略、文件和权限模型、各事实的服务归属与模块命名;形成确认版字段表和页面清单 | 产品/业务 + 后端/前端共同评审 | 无 | +| VM-01 | P0 | 车辆主档对齐:确认现有 `ll_vehicle` 字段;按 VM-00 结果决定是否补齐初始里程、停放位置、司机/车队关系、租赁状态、停运原因等主档字段;FBA、发车时间、ETA 和任务快照不得预设写入车辆表;按影响更新 DTO、OpenAPI、SQL、Mapper 和权限,向 VM-07a 交付字段合同;保留 `recordVersion` | Lastleg masterdata + Admin overseas-master-data | VM-00 | +| VM-02 | P0 | 司机主数据:司机档案、归属/仓库、驾照和资质日期、审核状态、附件、`canDispatch`/阻断原因;列表、详情、新增/编辑、到期提醒和独立权限;接入现有文件上传与附件归属契约,不把 data URL 当持久化方案 | Lastleg 新司机域 + 现有文件能力/IAM + Admin | VM-00;与 VM-01 并行 | +| VM-03 | P1 | 车辆运营记录:保养、加油、维修、紧急故障、救援费用、异常;记录版本、操作人、附件、里程阈值、核验/处理状态和费用边界;按车辆标识隔离记录,逐类型定义字段及处理/付款状态,向 VM-07a 交付 API | Lastleg 车辆模块(服务归属由 VM-00 确认) + Admin | VM-00、VM-01、附件/文件归属契约;可先做契约阶段 | +| VM-04a | P0 | 排车执行扩展:两级审核、驳回重提、车/司机关联与资格校验;定义 PDA 门禁、期望版本、审核后改派、转派送快照及取消联动;处理正数派送费必填与费用引用/不重复入账的差距(第 4.3 节);复用已有命令并补齐缺失契约 | Lastleg dispatch/delivery;Admin/PDA 为直接消费者 | VM-00 相关决策;车/司机联动依赖 VM-01、VM-02 | +| VM-04b | P1 | 自有/外接工作台:按已确认顺路拼载含义展示货物明细、余位和预订;推荐按共享行程统计次数,自有货成本与外接应收分别展示。按第 4.1 节行程基线补齐数据关系与查询,GPS/自动财务入账按范围决定 | Lastleg dispatch/delivery;Finance 为账务权威 | VM-00 相关决策;依赖 VM-05 的行程合同;若消费审核/资格字段,再依赖 VM-04a | +| VM-05 | P0 | 行程与出车记录(已写入方案基线):以一次实际出车为粒度关联多个客户执行单据,区分自有/外接货源;设计分段运力预留、统一发车与重试、各站点签收和异常终态;出车记录自动汇总并提供授权补充/更正与导出,不以统计页替代行程执行模型 | Lastleg 内的行程模块与既有 dispatch/delivery 协作;不预设新微服务 | VM-00 明确第 4.2 节提货/预订/计价范围;车辆关联依赖 VM-01,资格与审核依赖 VM-02/VM-04a 对应合同 | +| VM-06 | P1 | 报价:先区分外接销售报价与原型车队采购报价,按确认范围实现;外接关联委托方,采购关联供应商;明确路线、计价单位、币种、生效版本、启停、重复约束及 CSV 导入导出。外接承运明细保留成交价快照,报价后续修改不覆盖已确认成交金额 | Lastleg 业务报价 + 客户/供应商目录,Finance 为账务权威 | VM-00 确认报价用途;不以采购报价完成作为人工外接接单前置条件 | +| VM-07a | P1 | 现有车辆主档页面收口:按正式字段/状态更新 `VehiclesView.vue`、`VehicleDetailView.vue`、表单和 `routes.ts` 描述;清理“派送订单/更换记录已具备”的陈旧文案;运维/异常页签仅在 VM-03 契约就绪后开放;把排车列表继续指向现有正式排车路由 | Admin overseas-master-data | VM-00、VM-01;开放运维页签时再依赖 VM-03 | +| VM-07b | P1 | 新页面正式接入:更新 `adminNavigation.ts`、模块 routes、权限守卫、排车审核/司机/业务/出车/报价页面与弹窗,补齐加载/空态/错误态/无权限态;不复制排车页面 | Admin 前端 | VM-00 相关决策;分别依赖 VM-02、VM-04a/VM-04b、VM-05、VM-06 对应合同 | +| VM-08 | Gate | 质量与验收收口:前端定向测试、后端 Controller/Application/SQL/OpenAPI/IAM 合同、Gateway 路由合同;1920×1080/100% 页面人工验收证据;字段、状态、权限、附件和异常场景回归 | 前后端共同 | 各工作包完成后 | + +### 5.1 建议的并行边界 + +VM-01~VM-06 负责业务合同与服务端实现,页面由 VM-07a/VM-07b 对应承接;表内提及页面是验收范围,不重复建立两份前端任务。 + +- 后端可以将 VM-02(司机)与 VM-06(车队报价)并行;两者分别定义司机资格和已确认用途的报价,不共享未确认的自由文本字段。 +- VM-03 的记录模型可以先做契约和表设计,但在 VM-01 未冻结车辆主档主键、单位和附件边界前,不应开始页面联调。 +- VM-04a 与 VM-04b 分别估算和验收;工作台只读部分不等待整套审核完成。PDA 若因新审核/资格门禁调整,应沿既有排车执行接口及应用指引修改,作为 VM-04a 直接消费端验证。 +- VM-07a 可在现有车辆主档合同确认后先行收口;VM-07b 按各自 API、权限和错误码就绪情况并行接入。原型页面不能直接复制到 `src/prototype/` 作为正式功能。 + +## 6. 验收清单 + +以下是未来实现的验收要求,本次文档 Review 不表示这些功能或测试已经完成。只对本轮实际纳入的工作包执行对应验收。 + +### 6.1 合同和权限 + +- 车辆主档的列表、详情、创建、编辑、状态、导出路径与统一 Gateway、Controller、OpenAPI、权限逐项一致。 +- 车辆、司机、运维记录、出车、车队报价分别定义权限资源;每类列表权限包含详情只读,写入与已纳入的导出权限独立,由服务端鉴权。 +- 浏览器长整型 ID 按字符串透传;车辆主档沿用 `recordVersion`。新增审核/改派命令明确期望版本、幂等和错误码;现有排车编辑缺少客户端版本校验,若本轮涉及该命令则同步补合同与受影响调用,不能把这一缺口写成已完成。 +- 页面只开放有正式合同的动作;HTTP DELETE 不等于物理删除,取消、作废、停用、更正各按对象生命周期校验并保留对应审计。 + +### 6.2 页面和业务 + +- 车辆列表支持归属、区域、关键词和状态查询,操作列固定在第一列;空态、加载失败、无权限和导出失败可恢复。 +- 排车详情/编辑复用现有路由;新增审核必须验收提交、逐级通过、驳回重提、修改后重审及 PDA 门禁。各客户执行单据的单客户同仓限制、收货后转派送和发车前置条件均由服务端校验;平台行程可关联多客户单据,不能把子单限制直接套在行程上。 +- 车辆详情只展示服务端真实返回的主数据;派送订单、更换历史、运维记录和异常页签只有在对应接口存在时开放。 +- 路由标题、描述和页面实际数据范围一致;未提供派送履约/更换历史时不得用路由描述暗示已具备。 +- 司机过期、待补件、待审核和不可派状态由服务端资格结果驱动;到期提醒不能只由浏览器当前日期计算。 +- 自有/外接业务按顺路拼载口径取数;一车多个客户/目的地不重复统计出车次数。外接报价、应收、实收和车辆成本分别记录,自有业务原有收费不重复计收。按行程方案验证各客户单据与库存隔离、每段容量占用、重复预订/取消和统一发车重试。 +- 出车记录的用时、托均价、油耗和图表总计使用统一单位和服务端统计口径;筛选条件由服务端参与分页和统计。 +- 车队报价导入能展示逐行校验结果、重复组合和失败原因;导入具备幂等或明确的重复处理规则。 +- 报价区分未报价与零价;导入按确认策略检验部分成功/整批失败及重试重复行。统计验证筛选范围、仓库数与出车次数、加权托均价、零托数和多币种分组,页面数值和导出一致。 +- 司机列表/详情的到期提醒与实际命令阻断一致;审核后变更车辆或司机、临近到期、已过期、缺件、未审核分别验证,不能仅验收提示文案。 +- 司机资格补验到期前第 30/31 天、到期当天/次日、计划结束恰好触及有效截止时刻、跨时区/夏令时、缺少预计结束时间及预计结束延后;所用预计结束覆盖司机承担的返程/转场。已在途发生风险只进入告警与处置,不回滚出库事实。 +- 运维记录须验证车辆 A 的新增/编辑不影响车辆 B;维修项目/地点、救援项目/地点等已确认字段保存后能正确回显;处理状态和付款状态分别读写,不以共用弹窗导致字段丢失。 +- 签收上传与资料保存分别验证:上传未保存不得完成派送;多目的地仅完成当前单,出车汇总按确认规则结案。原型装车完成时间与发车时间混写不得直接作为正式用时口径。 +- 保留现有车牌规范化/唯一性、里程不可回退、主档版本冲突规则;新增占用及资格门禁后分别覆盖维修/停用车辆、过期司机、重复派车、审核后改派及取消。尚未确认的新状态不以页面标签代替正式迁移。 +- 费用验收覆盖已收费自有业务、外接新增运费、混装/预约附加费、同车多客户及失败重试;每个真实收费来源只入账一次,不以 0 元占位或额外虚构一笔派送费通过校验。行程分摊只是运营分析,不重复发布客户账务费用。 +- 预订数量与实收数量变化须重新核量和确认金额;已拣/已发运不能通过简单取消释放为未发生业务。拒收、退回、中途换车应保留关联与证据,分别核对行程结束、车辆释放和费用结清。 + +### 6.3 工程与人工证据 + +- 前端运行受影响模块定向测试和类型检查;后端运行车辆/司机/运维/报价相关单元与合同测试;跨服务接口变化补跑 Gateway 路由合同。 +- Admin 视觉按 1920×1080、浏览器缩放 100% 检查,至少覆盖列表、详情、弹窗、附件、空态和错误态截图。 +- 真实 HTTP、部署、数据库写入和 Jenkins 不在本规划文档中默认执行;需在对应环境获得明确授权后单独验收。 + +## 7. 当前不纳入本轮的实现承诺 + +- 不把外部 `新版.html` 复制进正式 Admin 页面,也不把原型内存数据、data URL 附件或 Toast 成功提示当作实现证据。 +- 不为兼容旧原型同时保留第二套车辆接口、旧字段别名、双写或独立海外 Gateway。 +- 不在未确认 GPS 数据源、路线告警规则和财务归属前实现自动轨迹告警、自动 ETA 或费用结算。 +- 不把司机、保养、加油、出车和车队报价数据塞进 `ll_vehicle` 作为临时扩展;每类事实先确定权威归属和生命周期。 +- 不通过车辆主档页面推进排车、PDA 拣货、发车、派送完成或码头提柜状态。 + +## 8. 现状证据入口 + +- Admin 现有车辆实现:`apps/admin-web/src/modules/overseas-master-data/`。 +- Admin 现有原型核对:`apps/admin-web/src/modules/overseas-master-data/PROTOTYPE_MATRIX.md`、`CONTRACT_GAPS.md`。 +- Admin 当前导航:`apps/admin-web/src/core/navigation/adminNavigation.ts`。 +- Lastleg 车辆 Controller、应用层和持久化:`baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/masterdata/vehicle/`;详情排除说明见 `adapter/in/web/PlatformVehicleController.java:49-53`。 +- Lastleg OpenAPI:`baiyue-firstleg/lastleg-service/src/main/resources/openapi/overseas-master-data-v1.yaml`;车辆详情排除说明见 `:158-160`。 +- Lastleg 车辆表:`baiyue-firstleg/lastleg-service/src/main/resources/db/lastleg.sql` 中的 `ll_vehicle`。 +- 车辆权限:`baiyue-firstleg/iam/src/main/resources/db/lastleg-permissions.sql`。 +- 文件能力参考:`baiyue-firstleg/file/`(具体业务类型、大小/MIME 和权限仍需在 VM-00 冻结)。 +- 现有排车/派送:`apps/admin-web/src/modules/overseas-warehouse/`、`baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/dispatch/` 和 `delivery/`。 +- 海外仓业务页面 ID 与路由索引:`docs/海外仓业务/README.md`(其中架构入口描述以当前统一 Gateway/Auth 正式契约为准)。 + +## 9. 本次连续 Review 记录 + +以下轮次从用户要求连续复核后重新计数,每轮在上一轮修订结果上继续;修复对象为本规划文档,原型和业务代码缺陷仅作为事实记录与候选任务。 + +| 轮次 | 核对范围 | 发现及文档修复 | 复查证据 | +| --- | --- | --- | --- | +| 第 1 轮 | 原型页面、可达按钮、记录读写 | 更换历史无容器;运维扩展未按车隔离;维修/救援表单与保存字段错配;处理/付款状态混用;隐藏面板不能算可操作功能。已修订第 2 节及对应范围判断 | 原型 `9024-9051`、`23196-23202`、`23240-23277`;精确搜索历史容器仅命中函数引用,扩展记录读写无车辆键 | +| 第 2 轮 | 服务端流程、状态与并发边界 | 补齐车牌规范化/全表唯一、里程不可回退;明确五种主档状态不等于原型三状态;纠正“所有编辑已有版本校验”,记录排车编辑缺期望版本;补转派送后快照变更/取消联动决策。已同步第 3、4、6 节 | `VehicleApplicationService.create/update/changeStatus`、`presentation.ts`、`DispatchRequests.Update`、`DispatchService.update/removeItem/cancel`、`DeliveryTransferService.transferResolved`;逐项核对方法体后记录现状,未声称新增约束已实现 | +| 第 3 轮 | 决策、任务依赖与验收对应 | 拆分 VM-04a 执行扩展和 VM-04b 查询工作台,取消出车统计对整套新审核的无条件依赖;明确 VM-07a/VM-07b 承担 Admin 页面,PDA 门禁变化归 VM-04a;新增逐车运维隔离/字段回显验收;VM-00 按工作包交付决策结果,未决问题不阻断无关部分 | 复查全部 VM 编号引用均有定义,前端与服务端分工可对应;第 1/2 轮发现已落到任务或验收;因仍发现实质依赖问题,扩展为 5 轮 | +| 第 4 轮 | 指标、报价与证据措辞交叉核对 | 修正“今日”标签与实际取数、仓库数与出车次数混用;补托均价、空报价/零报价、导入部分成功口径;将测试文件存在与测试通过明确区分。已补原型差异、决策 22 和验收 | `renderVehicleBusiness`、`renderVehicleTripCharts`、`validateDeliveryFleetQuoteDraft`、`confirmDeliveryFleetQuoteImport`;定向枚举测试源码,仅记录入口不报告运行通过 | +| 第 5 轮 | 全文一致性与交付审计 | 将原型统计说明移回原型章节,修正审查记录中未拆分的旧任务简称;逐项核对前四轮修订、命名页面/弹窗、决策编号、任务引用和证据路径。未发现新的阻断性文档问题 | 第 1 节原型哈希复核;页面/弹窗 ID 与原型定义对应;任务定义、依赖与引用检查;第 8 节证据入口存在;Markdown 表列和章节检查。本次不运行功能测试,不宣称原型缺陷或业务功能已修复 | + +## 10. 开发增量与后续接入(2026-10-02) + +### 独立任务拆分与交接(2026-10-03,已确认四任务协作) + +用户已确认创建三个用户可见独立任务,加当前对话共四个一起处理,目标为车辆全流程跑通。三个专项为①车辆成本与财务闭环;②车辆报价与运营统计;③车辆在途异常与改派;当前对话负责车辆总控、集成部署与跨模块验收。稳定task_id及授权边界唯一维护在[测试环境独立任务协作登记](../独立任务协作登记.md)的“车辆管理四任务协作”段。其他旧任务仍不自动恢复。 + +| 独立任务 | 唯一实现范围 | 交接边界 | +| --- | --- | --- | +| 车辆成本与财务闭环 | Lastleg `fleet/trip/FleetTripCost*`、`PlatformFleetTripCostController`及直接测试/合同;后续Finance车辆成本领域与Admin独立成本组件/API | 接续当前未提交草稿:成本登记、更正、按币种汇总、DEPART实物依据及同路线托位分摊。源码test-compile及新增持久化/现有分摊政策定向测试通过;尚需API权限/合同门禁、前端、部署及真实HTTP。未执行SQL、部署或真实成本HTTP。维修救援按公司成本还是客户分摊的问题仍待用户答复,不能擅自把车辆自身费用挂给客户。Finance共享账单/结算入口修改须先列明路径交总控协调 | +| 车辆报价与运营统计 | 新的Lastleg `fleet/quote/`、`fleet/reporting/`及各自测试/合同;Admin独立报价/出车运营页面、组件/API | 报价区分外接销售与车队采购;统计基于实际车次、发运及原费用来源,一趟多目的地只计一次出车。成本通过上一任务正式契约读取,不复制成本表或估算成财务实付。不得改写车次执行命令 | +| 车辆在途异常与改派 | Lastleg车次执行/改派/结案、实际调用到的dispatch和资源边界;Admin异常操作组件及海外PDA直接操作页面 | 保留原客户单据、库存、费用和历史;涉及共享FleetTrip模型或PDA入口时先申报精确文件,独占写入后实施;不以发车前换车冒充在途交接完成 | + +总控保留共享 `TripDetailView.vue`、路由、导航、权限定义、IAM权限种子、模块/统一SQL和主契约的集成写权限;独立任务提供明确的接入清单,不同时修改这些文件。Maven构建、Jenkins、数据库结构准备及共享真实HTTP/浏览器验收窗口由总控串行安排;工作在当前目录和当前分支,不创建worktree,不提交他人的未完成改动。当前成本草稿涉及的5份SQL/数据库说明文件亦暂由总控持有,不随成本实现自动转交。 + +成本交接追加:Admin `api/tripCosts.ts`、`components/TripCostPanel.vue`及直接测试已接草稿,`TripDetailView.vue`按页签懒加载,`permissions.ts`增加两项成本写权限;680px登记/更正和1080px历史弹框,编辑先取最新版本,不变内容不写入,未知创建响应保留原幂等键重试。金额与分摊按币种分别显示,未登记/未分摊不补零。模块103项测试通过;未将本地草稿视为已部署或真实页面验收完成。 + +本节仅记录本功能源码与本地检查,不维护环境部署状态。环境部署、已验证场景和未关闭验收项仍以根指引指定的两份主契约为唯一入口。整体开发目标保持第 5、6 节全范围,以下局部成果不能作为完成依据。 + +| 工作包 | 当前源码与验证证据 | 尚需完成 | +| --- | --- | --- | +| VM-01 车辆容量与占用约束 | `ll_vehicle` 和既有车辆API、列表/详情/编辑/CSV补齐托位、载重kg、容积m³。三项同填或全空;未知容量不能分配到车次。CSV使用车牌作为业务标识。车辆应用层通过 `VehicleAssignmentGuard` 在车辆行锁内检查占用,车次占用时禁止直接改车牌/车型/区域/归属/容量及状态,备注、电话、合法里程修正保留现有能力 | 实际运维故障、中途换车及车辆释放与签收的联动继续接入;车辆页面真实环境视觉验收待执行 | +| VM-02 司机后端基础 | Lastleg `fleet/driver/` 新增司机与不可变历史表、列表/详情、创建/编辑、启停、审核、打回重提、驾驶证上传/读取、资格预览;写入使用行锁与版本条件,关键身份/证照变化和替换附件重新待审。OpenAPI `fleet-drivers-v1.yaml`;IAM 六项独立权限;模块与统一 SQL 同步。补齐可驾驶车型、语言/服务区域、体检/培训/保险日期;所属仓库引用国内公共有效目录并保存编码/名称快照 | 其他资质是否必需不由原型自动推定;派车命令源码已接入(见 VM-04a),真实环境验收未完成。当前启停与证照审核状态不冒充行程“任务中”状态 | +| 司机文件 | File 新增 `FLEET_DRIVER_LICENSE`,固定平台 0 与司机复合归属,非空 PDF/JPG/PNG、最大 10MiB、MIME/签名验证;Lastleg仅允许当前或历史已关联附件读取;上传不会通过审核。Admin 居中弹框预览图片/PDF,关闭释放Blob并忽略迟到响应 | 文件服务真实 HTTP、权限负向及1920×1080视觉验收未完成 | +| VM-03 / VM-07a 车辆运维 | Lastleg `fleet/maintenance/` 提供保养、加油、维修、故障、救援、异常逐车分页、创建、更正和历史;两表为 `ll_fleet_vehicle_record` / `ll_fleet_vehicle_record_history`,接口 `fleet-vehicle-records-v1.yaml`。Admin按原型接入六类记录,保养/加油680px、其他四类620px居中表单;保养加油图片按原型在新标签页查看 | 维修/故障/救援的更新处理行操作已开放,异常编辑已接入。`VehicleCareModels.Incident.reportedCost`只保存申报金额;`VehicleCareService.response`对维修/救援固定返回`UNLINKED`,构造依赖及Controller没有财务关联命令,不能把记录保存或处理完成解释为已入账/付款。财务关联须补真实费用来源和Finance状态读取;删除/作废语义仍未定。环境证据见正式主契约 | +| 司机 Admin 页面/API | `DriversView.vue`、`DriverDetailView.vue`、编辑与预览弹框已接真实 API,注册导航和路由;统一 HTTP、长整型 ID 字符串、版本透传、multipart、业务错误追踪。列表一次请求包含分页和同筛选统计;后台按各证照时区分组,在只读重复读事务中取数;详情历史按需加载。修改预计结束时间或档案后提示重新校验,不伪造资格结论 | 真实页面请求量、样式/交互、部署验收未完成;客户端与PDA仍随车次/承运流程接入 | +| VM-04a 派车门禁 | 车次分配/改派与PDA整车发车均调用 `DriverService.requireDispatchable`,在事务内锁司机并复核资格与真实证照文件;延长任务时间同样重新校验。PDA返回整车门禁与30天到期提醒,预计结束前过期阻断 | 本地事务测试已覆盖发车资格,真实HTTP未验收;审核时点已按本轮首版确认落地,见调度/理货审核增量 | +| VM-05 车次计划与占用 | `fleet/trip/` 新增幂等创建、分页/详情、改计划、车/司机分配与改派、取消、历史接口;OpenAPI `fleet-trips-v1.yaml`,表 `ll_fleet_trip` / `ll_fleet_resource_assignment` / `ll_fleet_trip_history`。创建可先不分配资源;分配锁车辆和司机,唯一资源键防重复占用,失败回滚,取消释放锁行且保留历史 | 客户排车、整车发车和结案接入见下列增量;外接承运明细、正式页面、异常处置及费用闭环继续实施,创建计划不等于已出车 | +| VM-05 客户排车关联 | 新表 `ll_fleet_trip_dispatch` 以排车单为唯一有效关联;同起运仓可关联多个客户,客户归属取原单。新增带车次版本的关联/解除接口;`FleetDispatchGateway` 由dispatch适配器实现,同事务同步排车与尚未执行派送单的车/司机快照,不覆盖到达时间。关联后子排车禁止独立编辑/移托/取消,转派送禁止另填不同车辆司机;已拣货禁止直接解除或变更路线,发车前允许统一换车/司机或保持路线调整时间,保留全部拣货事实并清除旧装载确认。替换车辆检查已确认载荷,司机重新核验预计任务覆盖,失败整批回滚;取消车次前先解除关联。历史同时保存车次与关联清单 | 关联箱数不冒充实物托位;已拣货后的撤回、在途换车换司机及交接异常仍需补齐,发车前改派不等于完成全部异常处置 | +| VM-05 实际装载与整车发车 | `FleetTripExecutionService` 新增装载依据读取/确认,按实物托盘去重计量并调用分段容量政策;同托不同目的地要求先拆托,卸货站匹配来源目的键,确认记录来源hash、车次版本、实测值、人员和历史。PDA原发车入口提交车次版本,锁车次/资源及全部客户执行单;事务内逐单执行出库后统一变为IN_TRANSIT,失败整批回滚、同键重放整车结果。PDA显示车次、单数、到期提醒,发车后刷新真实状态 | 当前覆盖共同起运仓、已关联客户执行单;外接询价及预订占位已接入,来货/实际发运关联已接入源码;审核和Admin车次及装载页面已接入源码,结案/释放见下一行。H2使用真实排车/出库Mapper与事务,订单归属服务在此集成测试中隔离,实库及真实库存/费用闭环仍须HTTP验证 | +| VM-05 货物结案与资源任务结束 | `FleetTripCompletionService` 读取每票派送的签收或真实退回终态,核对数量覆盖本次实发,并冻结结案依据;退回时间读取RETURN_COMPLETED操作事实,不取可变updatedAt。车次COMPLETED只代表货物结案,车辆/司机继续分别占用;带幂等键、版本和实际结束时间/地点的独立命令释放指定资源,车辆同时确认在役/维修/停用/已归还状态。历史失败回滚资源释放及车辆状态,原请求重放不影响下一车次 | 不自动结清运费,也不重写派送/库存。当前处理正常签收及已完成退回;途中换车、货物部分撤回等异常流程继续补足,真实环境未验收 | +| Admin车次页面/API | `tripTypes.ts`、`api/trips.ts` 接入28个查询/写命令及独立权限;`TripsView.vue`、`TripDetailView.vue` 注册列表/详情路由,1080px `TripPlanDialog` 维护计划;`TripAssignmentPanel`、`TripLoadingPanel` 在详情分区维护资源与实测装载,货物结案、车辆/司机结束任务分别确认。列表一次分页请求,历史/装载/结案检查按需加载;未填写的说明使用标准动作说明 | 已按本轮确认接入首版,车次管理导航由总控集成;调度/理货审核、外接询价和占位已接入详情,外接来货/发运关联已接入,费用覆盖及环境验收仍须完成。真实环境操作与1920×1080视觉验收未完成 | +| VM-05 装载与成本政策 | `fleet/domain/TripCapacityPolicy`提供分段容量;新增未发布`FleetTripCostService`已调用`TripCostAllocationPolicy`,按不可变DEPART的实测标准托位及外接实收归属分摊。支持燃油、司机、通行、停车和其他直接成本,CNY/USD分别汇总;成本及当时整趟分摊保存历史,零金额与未登记区分,未发车/不同卸货站/归属未核平明确不自动分摊。Java持久化、并发幂等、回滚、权限和合同共13项通过,网关5项、初始化11项通过 | 当前是后端草稿,Admin成本工作台、完整发布门禁、结构准备、真实HTTP及页面验证尚未完成。运营登记不等于Finance入账或已付,不据此算完整利润。多路线分摊、成本统计及财务关联仍需完成;维修救援自身费用归属等待用户选择。环境事实继续见正式主契约 | +| VM-07a 车辆详情履约关联 | `VehicleDetailView.vue`已接`VehicleFulfillmentTable.vue`的派送与更换记录;Lastleg `VehicleFulfillmentService`/`VehicleFulfillmentMapper`提供车辆范围的分页查询。计划派送归当前车辆,实际发车后归DEPART快照车辆;换车按相邻ASSIGN快照保留原/新车辆、司机和当时排车成员,不按车牌猜归属。派送关联同时核对客户和排车身份 | 源码接通不代表部署或视觉验收完成;真实环境结论见两份正式主契约。没有车次关联的旧单不补猜历史;操作人姓名未写入现有快照时显示“—”,不把内部ID作为姓名展示。当前只读投影不等于完成在途换车命令 | + +结案追加边界:原派送已签收后另发起退货,原运输按已有签收事实结案,不把后续退货改写为已完成,也不让原车辆因未及时点结案而被再次挂起;未签收的拒收/退回仍须实际退回完成证据。派送资料首次保存RECEIPT前新增关联出库单OUTBOUNDED校验,未出库时可以准备BOL/装车资料,但不能提前触发签收完成。已有LocalDateTime执行事实按服务端作业时区转换为车次Instant,避免直接当UTC导致完成时间偏移;车次自身存储继续使用UTC。 + +当前车次资源采用一个车辆/司机同时占用一个未释放车次的规则;其他未来计划可以先建立而不分配资源,不以预计时间已过自动释放仍未结束的任务。已实现计划、分配、客户排车关联、装载确认、整车发车、货物结案及分别结束资源任务;已装货后的取消、途中换车和其他异常处置仍须补足,不能用计划取消接口代替退仓或签收。 + +载重数据追加修正:`DispatchCandidateMapper` 不再用计费材积重填补毛重,来源不齐全时分摊毛重为空;该值属于计划分摊,实际装载仍须核验。`DispatchService`、出库托盘与出库/派送合计保留未知毛重,任一来源未知不展示部分重量合计。Admin 预排与排车详情显示待确认/空值,不把材积重或缺失值0当作载重。模块和统一SQL相应重量列已改为可空;尚未执行环境SQL。 + +司机区域复核修正:正式分配原本只接受海外司机,但分配后可以通过司机档案编辑把区域改为国内,原发车门禁只核验证照与姓名。现已在 PDA 发车预览和事务内正式发车共用区域/身份判断;档案变为国内后整车阻断,出库、车次版本及发车流水不推进,纠正档案后可用原失败请求继续。此规则复用已有海外车次范围,不把自由文本“可驾驶车型”自动解释为正式准驾车型匹配规则;车型匹配标准仍需单独明确。 + +共享派送服务回归修正:Lastleg 全量首次暴露 `ReturnOutboundPdaPersistenceTest` 四项失败,核对发现已有 PDA 契约要求逐退货箱扫码,但服务仍合并全部箱唛且忽略扫码载荷。现改为每个真实退货箱一条明细,详情返回箱码扫码行且不虚构托盘/仓位;扫码与重放严格核对指定箱码,执行前重新核对客户、仓库、来源退货单,日志写入失败时库存和任务同事务回滚。这是退货库存再次出库的既有链路修复,不等同于车辆拒收后退回入仓流程。 + +本次已运行的本地检查(按增量保留;同一门禁以最后一次明确结果为准): + +- Lastleg 9 个定向测试类累计 45 项通过:三项领域政策、司机服务、文件元数据归属、数据库事务/并发/跨时区统计分页、API/SQL 契约、真实方法权限拦截、公共仓库目录。最近一轮司机相关 7 类 33 项通过;未变化的两项车次政策复用此前结果。 +- File 3 个定向测试类共 27 项通过:新增证照格式与归属,以及现有业务文件存储/服务回归。 +- 数据库行为测试使用 H2 与当前建表定义;仅将 JSON 列替换为 H2 可读的文本用于本地绑定验证,不等于 MySQL 实库验证。已验证历史失败回滚、清空可选字段、同版本并发只有一次成功。 +- Admin 新增 API 6 项、司机交互 9 项通过;覆盖分页/筛选每次单请求、历史按需读取、只读权限、审核版本、上传失败后重试不重复建档、预览释放以及预计时间变化后清除旧资格展示。`pnpm build --logLevel warn`(含类型检查)通过;全量 `pnpm test` 268 个测试文件、2160 项通过。自动测试不替代真实服务或视觉验收。 +- 车辆/车次增量:车次持久化9项、API/SQL2项、权限1项,车辆应用5项、SQL1项、Controller权限1项通过。覆盖重复/并发创建、车辆并发抢占、缺容量/缺证照、改派失败保持旧安排、延期跨证照到期、历史失败全事务回滚、取消释放与车辆主档占用门禁。 +- 客户排车关联增量:车次持久化扩展为15项,使用真实H2/MyBatis及事务代理验证跨客户关联、同仓限制、并发一单抢占、历史失败回滚、派送快照同步与清空、已开工改派整批回滚。连同API/权限、排车、PDA、转派送、SQL中文注释及OpenAPI回归共106项通过。Gateway与初始化合同14项通过,Mapper扫描313个通过;fleet/车辆定向依赖3项通过,完整依赖检查及AGENTS登记旧断言仍未通过。未执行环境SQL或部署,此结果不能证明MySQL并发或真实HTTP行为。 +- 实际装载/整车发车增量:车次持久化扩展为21项,覆盖两客户同托只计一次、重复/缺失测量与超重、目的站不符、装载后来源改变、某票未就绪、第二票失败全事务回滚、发车时证照复核、跨仓/旧版本、并发同键仅一次执行;连同子单PDA、转派送、订单归属及API/权限/SQL定向回归共118项通过。海外PDA全量167项通过;H5与App资源编译通过(不是APK真机验收)。车次验收助手及两个主消费模块、脚本文档合同67项通过;新助手通过正式API创建测试车辆/司机/证照/车次,实测数据明确标为受控测试输入,不用SQL补状态;这些脚本尚未运行真实HTTP。PDA列表门禁按车次复用查询,仍须在真实环境检查请求量与耗时。 +- 结案/资源释放与Admin接口增量:车次持久化扩展为27项,连同结案API/权限、车辆状态、派送资料/Controller/合同及SQL中文注释回归共58项通过;覆盖货物结案不释放资源、任务分别结束、维修状态与释放一起回滚、司机过期仍能结束旧任务、旧重放不释放新占用、退回须有真实终态操作证据、签收后新退货不重开原运输、未出库拒绝签收但允许准备BOL。Admin车次API新增6项通过;全量271文件2172项通过,类型检查及构建通过。Gateway与初始化基线14项、fleet/车辆依赖3项、313个Mapper扫描通过;全局门禁未关闭项仍按下文保留。本轮未运行共享环境SQL、部署或真实HTTP。 +- 载重修正补跑候选SQL、预排/排车服务、转派送、出库/派送SQL及前端实际重量/排车详情检查;SQL计算回归覆盖完全未知、部分未知及完整毛重来源。当前前端全量 `pnpm test --maxWorkers 4` 为269文件、2163项通过;先前默认并发全量出现财务页面单例5秒超时,该单例独立复验通过,随后以4个worker全量通过,未修改超时阈值或财务代码。 +- Gateway 路由合同 5 项、Mapper 扫描合同、统一 SQL 初始化基线 9 项及 fleet 切片定向依赖检查通过。司机 API 复用统一 Gateway 的现有 Lastleg 路由,无新增网关配置。 +- 完整 Lastleg 依赖检查已修复并通过 10 项:退役 `LastlegSecurity*` 投影改为禁止恢复或引用;25 条现有跨域类引用逐条记录理由,不授权同切片其他消费者。`DeliveryDocumentSnapshot` 移到应用服务包,消除 DTO/model 包循环;新增依赖、通配放行、车辆应用层反向引用和新增包循环均有失败测试。钱包 Outbox 的粗粒度切片聚合环仍作为耦合报告保留,不声称切片全图无环;边界说明见 Lastleg 内部模块化基线。快照工具移动后的派送服务、资料、Controller 与长 ID 回归 66 项通过。 +- 车次 HTTP 验收脚本补齐结案和独立资源释放:通过正式分配命令验证结案仍占用、单独结束车辆不释放司机、资源再分配后重放旧结束命令不清除新占用。无货核对计划最终正式取消并保留历史;失败保留原请求和资源,不自动重造。两处测试车辆创建已补必填 `status=IN_SERVICE`,避免仅凭宽松模拟响应误报可运行。助手及两个直接消费模块 70 项、Gateway 5 项通过,脚本文档 4 项与三个脚本语法检查通过;仍未执行真实 HTTP。 +- 车次 HTTP 验收助手追加发车前改派:仅对 `prepareFleetTrip` 本轮创建的车次执行,首次确认装载后新建等容量车辆和合格替班司机,正式改派并回查货物/客户关联、拣货数量、路线及到达时间保持一致,旧装载失效、旧版本请求拒绝且无写入,再确认新装载并返回最终发车版本。原请求、前后快照和替换资源保存在报告 `reassignment` 中;未知结果保留 `CHECKING`,不自动重试。字符串版本按整数比较,覆盖 9→10 边界。留存车次仅按原入口确认装载,不补造或改派其资源。助手 18 项、两个直接消费者及脚本文档合计 85 项离线通过;这不是已执行的真实 HTTP 或页面验收。 +- 脚本文档合同 4 项通过;本次指引更新后的 AGENTS 索引合同失败,5 项均涉及测试独立任务登记必须为空的旧断言。本功能未修改或清空任务登记,也未据此自动派工;该全局检查仍未通过,不计作司机索引已完成整体验收。 +- 发车前改派完整回归:`mvn -pl lastleg-service -am test -q` 成功,Lastleg 报告 1081 项,1079 项通过、2 项跳过、0 失败/错误;跳过的是 `CargoDiscardMysqlAcceptanceTest` 和 `TaillegRealConsumerAcceptanceTest`,不能计作真实环境验证。车次事务测试现为 33 项,新增发车前已拣货改派、同路线延期、容量不足/证照覆盖不足拒绝、历史失败回滚,以及改派与发车并发只能一个成功;验证拣货、到达时间、客户归属保留,旧装载确认失效并可重新确认后发车。Lastleg 依赖 10 项、Gateway 路由 5 项通过;AGENTS 索引仍有前述 5 项登记旧断言失败。本轮未改海外 PDA,不将先前其 21 项定向结果描述为本轮回归;未部署车辆功能,未执行测试环境 SQL、真实 HTTP 或浏览器验收。 + +- Admin 编辑会话修复:司机与车辆运维编辑器按打开状态和业务对象隔离请求;切换司机/车辆、关闭或卸载后,旧保存/上传结果不得覆盖新表单、触发成功提示或继续上传后续附件。运维不确定创建结果的幂等请求仅供原车辆/原记录范围重试,不带入另一车辆。已发出的保存命令仍以服务端结果为准,不自动回滚档案。两组复现与回归共 22 项通过,Admin 全量 273 文件、2189 项通过,类型检查及构建通过。车辆详情说明改为业务可读提示;本轮无布局或新增操作入口变更,也未进行真实页面验收。 +- 转派送重放修复:三条变更金额的重放路径先复现失败,再修正为摘要校验;另验证只换请求键且内容完全相同不重复创建或发布费用。复用现有请求摘要列,无新增表/列;模块和统一 SQL 仅同步该列的用途注释,未执行环境 DDL。完整 Lastleg 回归更新为 1090 项:1088 通过、2 项环境测试跳过、0 失败/错误;转派送服务 48 项、车次事务 33 项均通过,Gateway/依赖 15 项、初始化合同 10 项通过。该次回归包含当前共享工作区的退货记账增量,退货发布事实仍由正式环境契约维护;不将其算作车辆功能已发布。 +- 首版车次页面接入:模块/密度定向88项通过,新增四项关键页面流程验证分页不逐行请求、只读详情与按需历史、创建不确定结果复用原请求、实物托盘去重及人工测量提交;类型检查与构建通过。首轮Admin全量274文件2193项中2192通过、1项输入提示合同失败,补齐6处提示后该合同与新流程合计5项复验通过;未将此描述为又跑了一次全量全绿。共享导航由总控集成并单独验证14项。AGENTS索引仍有5项旧任务登记断言失败;本轮无环境部署、SQL或真实HTTP/视觉验收。 + +接续顺序:Admin车次/装载操作入口与自有/外接委托预订 → 审核、逐站签收/异常及资源释放 → 运维/报价/统计与费用闭环 → 按授权部署测试环境、真实 HTTP、指定视口样式/交互及请求量验收。第 4.4 节按本轮首版确认执行;审核源码增量见第10.3节;外接接单和费用覆盖仍须继续实现。当前尚无部署或真实HTTP/浏览器验收完成证据,不以本地测试代替这些交付项。 + +### 10.1 保养及加油接入的实施边界 + +本增量沿原型已经定义的车辆详情页签及居中弹框推进 VM-03、VM-07a,未代替仍待答复的车次工作台承载选择。 + +- 记录固定绑定车辆内部主键,使用独立 `VR-` 业务编号并保留建档时车牌快照;更换其他车辆路径不能读取、修改或下载原车附件。创建按车辆、操作人和请求键去重,更正保留版本、原因及完整历史。 +- 里程明确选择公里或英里;加油量明确选择升、美制加仑或英制加仑,不把原型含义不明的 `gal` 自动按某种加仑入库。上次、记录时、下次保养里程使用同一明确单位;下次里程须大于上次,但可低于记录时里程,以保留已经超过计划保养里程的真实情况。不默认套用每一万迈阈值。 +- 发生时间使用带偏移的实际时间,保存为 UTC,不得填写未来记录;历史记录里程可以低于当前车辆主档里程。运维保存不更新主档公里码、车辆可派状态或财务,核验状态仅记录“待核验/已核验”。维修、救援处理与付款状态仍按原未决项单独设计。 +- 照片类型 `FLEET_VEHICLE_RECORD_PHOTO` 固定平台与记录归属,仅非空 JPG/PNG、每张最大10MiB,每条最多20张。先保存记录再逐张上传;已上传结果保留,失败重试沿用原图片请求键。File校验文件签名,Lastleg核对复合归属,图片内容接口的HTTP200 JSON错误不能作为图片返回。 +- 页面进入“保养及加油”页签才分别请求两类分页;不逐行预读详情或图片。编辑时读取该记录最新版本,保存使用命令返回值更新当前行;创建后刷新当前类型列表。上传失败不重复创建记录,明确的参数错误允许改正,未知创建结果保留原请求内容和键供重试。图片按原型在新标签页查看,关闭或页面卸载释放临时地址。 +- 只读沿用 `vehicle:list`;新建、更正、上传分别为 `vehicle:record-create/record-edit/record-upload`。无新增菜单、Gateway配置或独立服务。部署涉及 Admin、Lastleg、File,以及 IAM三项权限和Lastleg两表的最新初始化定义;本轮没有执行这些环境操作。 +- HTTP编排已接入 `phase4-overseas-master-data.mjs` 的内部 `vehicle-care.mjs` 助手:验证创建重放、版本冲突、不可变历史、单位、照片重放及字节一致,另建本轮车辆验证跨车拒绝并在结束时停用;保留原记录、照片与失败证据,不执行SQL或修复历史造数。离线合同包含故意跨车泄露时必须阻断的反向场景;真实HTTP尚未运行。 + +本增量验证:Lastleg完整回归1073项(1071通过、2项环境测试跳过),File完整216项通过;新增运维持久化/权限/接口/文件归属10项及File图片策略1项包含在其中。Admin全量273文件、2181项通过,含类型检查的生产构建通过。IAM权限目录补齐原遗漏的司机6项和新增运维3项常量,目录规模68项;IAM相关12项与Lastleg权限/API补验4项通过,不改变既有仓库角色授权。Gateway、初始化、依赖24项及315个Mapper注册检查通过;运维HTTP编排离线7项、脚本文档4项通过。初始化源当前为国内223表、海外143表、385项权限及566条角色授权,未向环境执行。AGENTS索引检查仍有同一组5项任务登记旧断言失败,未修改或清空登记表。 + +当前交付仍缺维修/故障/救援后续处理入口确认、车次页面及未决外接/审核范围、报价/运营统计/费用闭环,以及实际部署、真实HTTP、指定视口视觉交互与请求量验收;不能以运维局部接入或自动检查通过宣布车辆管理整体完成。 + +### 10.2 维修、故障、救援及异常增量 + +2026-10-03 编辑规则补充:服务端采用 NON_NULL 响应,空的里程单位、核验状态及事件选填字段可不返回;Admin `api/vehicleCare.ts` 将这些字段统一初始化为空值,再进入编辑表单,避免将保养默认值提交到维修/救援记录。打开已保存记录后没有修改内容时,保存不产生更正命令或新版本;脏数据比较以同一个表单快照序列化,不受响应字段排列顺序影响。真实环境结论继续只维护在正式部署契约。 + +运维独立回归已接入 Admin 正式验收入口的可选模块 `fleet-vehicle-care`,复用六类运维助手并创建本轮车辆。覆盖历史、照片、版本、跨车隔离,以及正金额/零金额与付款事实分离;失败保留记录和原始证据,结束停用专用车辆。该回归不表示公司车辆成本已经接入 Finance。 + +本次继续使用同一记录、权限和历史合同,扩展 `REPAIR/BREAKDOWN/RESCUE/EXCEPTION` 四类,不新建第二套车辆或费用台账。 + +- 维修及救援项目、地点分别保存;原型弹框读写错配已由明确字段替代。故障/异常保存描述、处理人和处理状态;异常另有轨迹、超时、派送、车辆故障四类分类。保养加油字段与这四类事件字段互斥,不能在共享表单内悄悄串写。 +- 处理状态为待处理、处理中、已完成;处理中或已完成须填写实际处理人,系统操作人另行留痕。更正仍须版本和原因,保留此前字段和金额快照。事件处理不自动改变车辆主档状态、解除车次占用或完成货物履约;这些联动尚不能被宣称已经具备。 +- 维修/救援费用是本条运维申报金额,允许未登记或明确零值;登记金额须有有效币种,运维保存本身不进行汇率换算或自动入财务。当前服务端对维修/救援返回只读 `paymentStatus=UNLINKED`,页面显示“未关联财务”;处理完成不能生成已付款事实。公司车辆成本及入账规则已按文首2026-10-03追加确认实施,正式Finance关联与状态读取尚待接入。 +- 页面按原型新增四个详情页签,只加载当前车辆当前页签;四类新增及异常编辑均用原620px居中弹框。原型没有维修/故障/救援后续行操作,已发出“列表更新处理、复用居中弹框”或“仅登记结果”的选择,等待答复期间不添加新行操作。未给四类事件新增原型未定义的照片预览或删除入口。 +- HTTP验收助手已覆盖四类新增、处理完成、重新读取项目/地点/处理人、分类型列表;补充“处理完成被错误映射为已付款必须失败”的反向测试。该助手只通过正式接口处理本轮测试资源,不把离线模拟结果写成真实HTTP已验收。 + +本次验证结果:Lastleg全量1076项,1074通过、2项环境测试跳过、0失败/错误;运维持久化扩展为9项。Admin全量273文件2185项通过,类型检查与生产构建通过;新增前端回归验证项目/地点独立提交、异常编辑不提前修改原行、零费用与付款状态分别展示、未确认行操作不开放。IAM相关12项通过;Gateway/初始化/HTTP编排22项及依赖/脚本文档14项通过。无新增表、权限码或Gateway配置,初始化表数和角色授权数不变;更新了六类枚举和权限显示名称。AGENTS索引仍为同组5项任务登记旧断言失败;本次未部署、未执行环境SQL或真实HTTP,也未完成浏览器视觉和请求量验收。 + + + +### 10.3 首版调度与理货审核 + +排车列表以服务端分页参数 `stage` 展示全部、装车前、装车中、装车后及已取消:装车前对应 `PENDING_DEPARTURE`,装车中对应 `PICKING/READY_TO_DEPART/PARTIAL_READY_TO_DEPART`(含拣货完成待发车),装车后对应 `DEPARTED/PARTIAL_DEPARTED`。阶段与具体状态筛选取交集,不按当前页数据做本地分组。阶段不表示审核通过或实际装载确认。 + +二级页签为“车辆信息/调度审核/理货员审核”,位于执行阶段与查询区之间。二级页签切换当前阶段下的信息和操作视图,保留筛选、分页及服务端总数,不对当前页记录做审核状态过滤;审核视图集中展示对应审核状态、打回原因、时间和进入审核的操作。三种视图独立保存列设置。 + +平台列表同一响应批量返回关联车次、每单调度审核及整车理货审核的状态、打回原因和审核时间;未关联显示“未关联车次”,不伪造待审或已通过。具有车次列表权限可从列表进入车次“分配与货物”或“实际装载”,审核仍沿车次独立写权限及版本门禁。列表只读信息沿排车列表权限,前端不逐行查询车次。 + + +按本轮确认实现两级简化审核:每张客户排车单独立调度审核,通过后才能产生新的PDA拣货或完成命令;整车实物装载确认后,再做理货审核,通过后才能整车发车。操作只有通过和打回,通过意见选填,打回原因必填;不增加审核清单、提交队列或不同审核人限制。 + +- 车次详情的客户排车行展示审核状态、原因和时间,支持详情跳转、通过、打回;实际装载分区提供整车理货审核。两个写权限为`platform:fleet:trip:dispatch-review`和`platform:fleet:trip:loading-review`,只读沿用车次列表权限。 +- 调度审核保存于`ll_fleet_trip_dispatch.review_json`,理货审核保存于`ll_fleet_trip.loading_review_json`,为空表示待审;历史保存各次审核快照。新增两列,无新增表。 +- 换车、换司机或改路线/时间后相关调度审核、理货审核和装载确认重新待处理,保留全部已发生的拣货事实;仅修改备注不触发重审。重新确认实载、关联变更或重新审核调度单后理货审核待审。客户A审核通过不能替代客户B。 +- PDA展示当前单`canPick/pickBlockReason`,发车继续由服务端整车门禁决定。已经成功的同键拣货重放返回原结果,不因后续重审而重复扣库存。未知网络结果不得生成新的物理作业事实。 +- HTTP验收助手已接准备阶段调度审核、发车前改派后的重新审核以及最终理货审核;发车使用最终审核返回的新版本。留存场景也须已有合法调度审核,不绕过门禁补写旧单。 + +统一初始化SQL已同步两列,海外保持144表;IAM模块及头程统一基线已同步5107247/5107248两个按钮权限,并授权平台管理员。当前本地Admin定向94项、类型检查及生产构建通过,新增两条API路径的6项补验通过;海外PDA定向15项及H5构建通过;Gateway/依赖/HTTP助手/脚本文档37项通过。Lastleg全量1093项首次为1089通过、2项环境测试跳过,2项新增字段/权限合同失败在统一SQL同步后已定向补验通过;补验含Fleet API/权限3项及IAM权限4项。初始化合同10项通过,精确计数为387权限、568角色授权。没有重复运行已经通过且输入未变化的行为测试。AGENTS索引仍有原5项任务登记清空旧断言失败,未擅自清空已授权登记。没有将这些本地结果视为部署或实际页面验收完成。 + + +### 10.4 外接运力前置与收货链核对 + +外接货送到我方起运仓,继续使用既有仓储转运的真实收货链;`WarehouseTransferService.createAndSubmit`在未引用旧入仓时建立本次新来货来源,PDA测量/托盘绑定/完成写入真实库存,客户确认后形成可排车来源。当前本土卡车`receivePallets`仅更新其订单托盘业务记录,不能拿该状态当作库存实收完成。外接登记与该链的正式关联仍须实现,不能仅凭此复用判断宣称外接履约已接通。 + +本轮增加车次“计划容量”页签和`/capacity-plan`读写:在自有货尚未拣货时,按真实托盘输入预计托位、重量、体积及卸货站,服务端按每段核算剩余容量。共享实托只计一次;缺失来源、超容量、旧版本或货物hash变化拒绝提交。保存计划不会生成实载、通过审核、扣库存或发车;发车前继续单独核对实测装载。改车、改司机、计划或关联变化使计划容量待重核,纯备注保留;历史保存当时计划依据。 + +新增`ll_fleet_trip.planned_load_json`一列,没有新增表、权限或服务。已有trip:list/edit分别承担查询及保存权限。GET的`planValid`只表示当前货物来源与已核对计划一致;无计划或来源变化时不展示过时余位。外接预订尚未占用该余位,后续须在同一车次锁内结合已确认预订计算,不允许把这个单独查询当作已实现防重复出售。 + +后续接入的直接入口已核对:IAM `/internal/iam/finance-customers`支持按客户ID精确读取有效客户,`/internal/iam/tenants/{tenantId}/order-eligibility`提供下单资格;不以采购历史去重列表代替客户主档。平台代外接客户登记和确认收货仍须建立明确命令及权限,不能要求无工作台账号的委托方假登录操作。费用覆盖和新增项目收费继续按第4.3节完成,不伪造零金额费用绕过现有转派送条件。 + +本地验证:Admin定向96项、类型检查和生产构建通过;Gateway与Lastleg依赖合同15项通过。Lastleg全量1095项首次为1092通过、2项环境测试跳过、1项统一SQL字段同步合同失败;总控同步统一海外列后Fleet API/Schema两项定向补验通过,初始化合同10项通过,海外保持144表、权限与角色授权数量不变。计划容量行为2项已通过,包括拣货前计划、实托去重、资源变化失效、旧来源拒绝及不覆盖实际装载。AGENTS索引仍为此前5项任务登记清空旧断言失败,未清空登记或放宽断言。真实部署、HTTP及页面验收仍须后续执行。 + + +### 10.5 外接登记与承运占位(2026-10-03) + +已增加车次内外接询价列表、登记/编辑、只读详情、确认承运与取消入口,后台使用1080px居中表单。登记先填有效客户、既有路线卸货站及箱数;预计托位/重量/体积、价格和联系说明可以后补。首版自送到车次起运仓,联系人不要求特定电话格式。按标准托位或整单记录报价,约定运费仅为商业约定,不自动生成应收、实收或费用入账。 + +- `ll_fleet_external_booking`保存稳定FB业务号、客户编号/名称快照、货物与报价、版本及请求摘要。DRAFT询价不占位;CONFIRMED在父车次行锁内确认承运并占位;CANCELLED释放尚未执行的预订。历史直接进入既有车次历史的`externalBookings`快照,没有另外建重复台账。 +- 客户候选及精确建档校验读取IAM当前有效客户主档,正式登记与确认承运核对客户下单资格;失败时不创建假客户,也不以采购历史去重列表替代。新增只读Feign使用内部服务身份,不发送浏览器Token。 +- 确认承运核对仍有效的自有货容量计划、全部已确认外接预订及本次申请,每段托位/重量/容积任一超限拒绝。计划容量响应`availableSegments`扣除已确认外接占位;询价与取消不占位。自有货重新测算也不能挤占已确认外接容量,换小车须能容纳两者;同车换司机不要求为此额外先重填容量。 +- 创建、确认、取消按原请求键和内容重放,不重复占位/释放;更新同时核对车次和预订版本。界面保留未知结果的原请求,刷新查到确认/取消事实后解除待重试状态;只读用户可看详情,不能执行写操作。 +- 新增四项写权限为`platform:fleet:trip:booking-create/edit/confirm/cancel`,IAM资源使用总控核对后的5107260..63(5107250..52已被车辆运维占用),父5107240。模块与统一海外基线当前145表,权限391项、角色关联572条,未向环境执行。 + +本批仍未实现外接来货单创建/关联、实测差异重新确认、外接货与客户排车关系和费用覆盖入账。已确认但未关联实际发运的预订会明确阻止整车发车;不能用“确认承运”冒充已收货或已发运。后续须补齐这条连接后才能作为完整外接版本部署验收。 + +本地检查:Lastleg全量1099项(1097通过、2项环境测试跳过);新增外接占位行为含登记重放、确认后扣减/取消恢复、超卖拒绝、自有货增量不得侵占预订和历史快照。客户目录两项验证精确客户与资格、依赖失败关闭。Admin定向原99项中只读测试因将说明文字误当按钮失败,已改为核对真实按钮并补充详情/编辑,四项面板测试通过;最新类型检查及生产构建通过;同车只换司机无需额外容量重填的收尾变更经FleetTripPersistence39项补验通过。Gateway/切片依赖通过;同步依赖已精确登记新IAM只读边及此前遗漏的运维文件HTTP调用,10项合同通过;316个Mapper扫描通过。真实环境、页面视口及请求量验收尚未执行。 + + +### 10.6 外接真实来货、实收确认与排车关联(2026-10-03) + +本轮把预订连接到已有仓储转运/PDA真实收货流程,未另建库存账: + +1. 已确认承运的预订由运营生成来货单,固定预订客户、起运仓、箱数及既有卸货站;首版客户自送。该操作创建并提交、审核原来货流程,只形成待PDA收货,不写实收库存;私人地址必须与原约定卸货键一致。 +2. 仓库通过现有PDA转运测量、托盘绑定及完成流程写入实际库存。车次后台按需查询实托、箱数、重量、体积及receiptHash;尚未完成测量不能确认实收。 +3. 运营明确核对实托占用托位和约定单价;实际数量变化会重新计算约定金额,同时按实际载荷替换原预留并重验余位。原来货确认成功且实测摘要未变后,预订才进入RECEIVED;库存不会重复写入。失败保留原报价/预留,不能先将未完成确认标成成功。 +4. 来货库存经现有预排生成客户排车单,再在车次外接行关联。服务端核对客户、同一起运仓、来货来源、实托、整批实收数量及目的地。通用车次绑定入口也执行该检查,不能将已承诺货物挂到另一车次;同一排车可携带多票合法来源,每票分别核对。 +5. 关联成功后预订进入BOUND,预订容量转由实际关联货物计量;容量计划/实际装载和理货审核重新待核对。后台刷新车次成员及审核状态。后续仍逐客户调度审核、PDA拣货、实际装载及整车理货审核后发车。解除未开工排车关联回到RECEIVED并恢复预留;已拣货沿既有正式撤回边界处理。 + +取消未执行预订仅释放承运位置,已生成来货单和已入库货物保留,不据此删除库存。预订保存来货号、排车号、实测证据及各命令请求键/摘要;原请求重放返回当前事实,不重复创建来货或关联。四个新增读写接口继续使用现有booking-edit/booking-confirm与trip:list,绑定还需trip:edit。总控已同步原预订表新增字段/索引及RECEIVED/BOUND状态,仍145表、391权限和572角色关联,未执行环境SQL。 + +实现入口为`FleetBookingIncomingGateway`、`transfer/fleet/FleetIncomingAdapter`和`FleetBookingService`;按精确端口引用接入,没有放宽转运切片对车队实现的依赖。沿实际收货路径移除了把内部客户ID拼成展示名称的回退,未知名称显示“—”。前端承载为`TripBookingFulfillmentDialog`,普通交货说明选填,来货和实收详情只在打开时读取。 + +验证:Lastleg全量1102项(1100通过、2项环境测试跳过、0失败),后续实收确认必须返回可排车状态的收尾约束已通过42项定向补验;Admin模块及密度103项通过,外接关联后刷新成员/审核的交互补验通过,类型检查及构建通过。Gateway/精确依赖15项、初始化10项通过。仍缺原运费覆盖/新增费用正式接入、其余运营闭环和真实环境全链验收,不能以预订与收货连接宣告完整车辆模块已交付。 + +### 10.7 外接实收报价接入派送费用(2026-10-03) + +外接运费已从报价展示接到正式费用发布:排车转派送打开时读取一次`GET /dispatches/{dispatchNo}/external-freight`,复用dispatch:list只读权限;服务端核对每票真实来货、所属客户、绑定车次、目的地及完整实托箱数,返回报价版本、计价量、原币金额与货物/报价摘要。查询不会创建费用。提交沿原transfer-delivery写权限,并携带externalFreightHash;实收、报价版本或来源改变时重新核对。 + +- 转派送在现有事务内,按每票外接实际卸货目的地关联对应派送单,发布`OVERSEAS_DELIVERY_FEE`应收及现有费用Outbox,由Finance消费形成账务事实。约定金额、计价量、单价、实际入仓码和预订业务号随费用与操作记录保留。当前仅证明本地调用接通,未证明真实Finance已接收。 +- 全部货物为已确认外接时不再要求手工填派送费,且服务端禁止重复派送应收;混合排车只要求其余货物的派送费,手工派送费归其余货物对应派送单。装车和购买预约仍单独登记。原头程运费是否已覆盖这些服务,尚未接入,不能据此宣布全部不重复收费需求完成。 +- 明确约定零运费保留预订版本与派送操作事实,不伪造零金额财务费用。为与当前正式费用和汇率能力一致,确认承运仅支持CNY/USD;询价可先保存,非支持币种在承运确认时提示调整。USD正式发布仍须业务月份有效汇率。 +- 既有出库唯一约束及请求摘要保证原请求重放只返回原派送单,换操作人重试也不再发布外接费用。外接预订必须先完成真实车次关联,不能从普通转派送绕过实收/承运确认。取消出库后的费用作废/更正及再次安排仍须继续接通,不将取消物流单据视为账务自动撤销。 + +本地验证:后端5类107项通过,覆盖报价/来源核对、分目的地费用归属、零约定、陈旧摘要/重复派送应收拒绝和换操作人重试;Admin排车交互/API/原型合同45项通过,类型检查与生产构建通过。Gateway 5项、Lastleg精确依赖10项通过,未放宽依赖基线;AGENTS索引仍有原5项登记清空旧断言失败。无新增表、权限码、Gateway配置或Finance事件结构,未执行SQL、部署、真实HTTP或视觉验收。后续优先完成每票原费用来源及服务覆盖、取消账务处理,再继续其他运营闭环与环境验收。 +### 10.8 出库取消与费用撤销确认(2026-10-03) + +首版取消顺序明确为:未拣货时先解除车次关联,再取消出库;仍需在原排车列表取消排车以释放该排车占用。取消不代替实物退仓或已执行货物撤回。后端按dispatch→outbound顺序锁定,并核对排车本身未拣货/发车,避免出库快照仍为待出库时误取消正在执行的货物。来源订单从本次转派送历史恢复真实原状态,显式清空已取消的出库/派送关联并递增版本,不统一写成RECEIVED;取消原因完整留在派送操作记录。 + +费用处理沿用现有Lastleg费用来源与可靠Outbox: + +- 取消仅对本派送当前已审核有效的DELIVERY_FEE应收申请作废;装车、买约、供应商成本及其他待核对费用保留。物流取消成功不代表账务已作废。 +- 作废请求先保持原来源ACTIVE,返回PENDING_FINANCE;只有Finance对同一事件ID与载荷摘要返回APPLIED/DUPLICATE,才在投递审计、Outbox完成、来源VOIDED同一事务内落账。拒绝、未知结果或确认落账失败都不能假作废;拒绝/耗尽显示FINANCE_ATTENTION,已确认显示CONFIRMED。 +- VOID投递等待原版本发布成功,未满足前置的撤销在队列LIMIT之前排除,避免前50条未就绪撤销堵住后续正常费用。过期PROCESSING继续沿既有租约恢复。费用调整在来源行锁后按READ_COMMITTED核对未决撤销,不能用旧快照漏过撤销申请。 +- 重新安排发运按客户及实际入仓码核对原派送应收最新版本;原费用未确认作废时不能再次发布。即使原预订已取消,仍保留其真实来货/实收的财务来源关联。新发运以预订和新排车共同形成费用请求键,原出库重放依旧只返回原结果,不重复收费。 +- 派送详情和直接复用该费用接口的货柜费用面板区分待财务确认、待财务处理与已作废;待确认/待处理不开放调整或重复作废。查询批量读取确认状态,不逐行发HTTP请求;财务结算、已出账拒绝和后续人工处理仍以Finance事实为准。 + +本批没有新增数据库列/表、权限或事件协议;复用现有V1完整快照、严格匹配ACK与原投递审计,不表示海外费用阶段0全部完成。共享初始化基线由总控新增废弃审核权限后为海外145表、392权限、573角色关联,本批未改共享SQL。自有货原运费服务覆盖、其余车辆运营能力与真实环境全链验收仍未完成。 + +本地验证:最终7类69项通过,其中6项Spring/MyBatis/H2测试验证费用确认与投递审计原子提交/失败回滚、陈旧确认拒绝、原发布等待、队列不饥饿以及原费用最新版本去重;之前费用/派送10类76项已通过。契约严格解析发现智能排车候选的两处重复重量字段,已移除重复定义并通过2项合同补验。Admin派送/出库与货柜费用32项通过,类型检查及生产构建通过;Gateway/依赖15项通过。AGENTS索引原5项登记清空旧断言仍未关闭,未清空登记。没有部署、环境SQL、真实Finance撤销HTTP、指定视口视觉或请求量完成证据。 + +### 10.9 原运费按本次实际货物确认服务覆盖(2026-10-03) + +当前部署及真实环境验收结论统一查阅[测试环境单机部署与配置契约](../测试环境单机部署与配置契约.md)和[统一认证与服务通信契约](../统一认证与服务通信契约.md),本节保留实现说明与当批本地验证边界。车辆专项编排入口为 `baiyue-firstleg/scripts/fleet-test-env-acceptance.mjs`,按真实自有货与外接来货执行费用覆盖、容量预留、PDA实收、并车、约定运费、逐单拣货、整车发车、逐目的地签收及资源分别释放。库存来源核对采用余额明细、实物位置及不可变流水;实收使用 `receivedPackages`;命令重放对比持久化后的业务记录。失败保留原命令和原样本,只允许显式核对的阶段继续,终态对账仅作只读请求;Finance消费入池与生产者ACK分别取证。具体命令与边界见该仓库 `scripts/admin-test-env-modules/README.md`。 + +已接通读取、运营确认、转派送校验、快照保存与详情展示。此节更新第4.3节初始差距,不把历史“尚未实现”记录作为当前实现状态。 + +1. 打开转派送时,并行读取一次外接约定运费和一次原费用覆盖预览,不逐行发请求。`DispatchFeeCargoMapper`按实物库存组成及本次已拣数量逐票还原,同仓/客户/排车隔离,并按计划托盘限制其真实来源;核平每条排车箱数后,使用真实尾程订单冻结的头程入仓ID,避免把合托展示的MIN入仓码当成整托来源。 +2. `FinanceFeeCoverageClient`批量调用Finance内部只读`delivery-fee-coverage/sources`,仅返回该客户、这些原入仓单的FIRSTLEG已审核有效应收最新版本;作废/替代/其他客户/应付不能作为覆盖依据。AVAILABLE和SETTLED均可作为原费用事实,不把AVAILABLE显示为已付款;来源柜号不能伪装成入仓码。无匹配来源为空,调用失败或范围不一致明确报错,不能伪造已包含。 +3. 平台运营在原1120px转派送弹框内,针对各票原费用明确勾选本次已含派送、装车或买约;不按费用名称、总金额或同客户其他费用自动推断。提交原费用ID、版本、hash及当前货物/目的地摘要后重新读取并核对。只有全部相关货物都已覆盖的服务才免新增应收;只覆盖其中一票时,仍须填写其余货物/服务的新费用。外接货仍按已确认实收报价生成对应运费,不能借“引用原费用”抹掉外接价格。 +4. 原费用不复制入账、不做金额抵扣、不伪造零金额费用,也不直接把原全程运费总额算成本车收入。新增应收只对应未覆盖范围;多来源时不把MIN订单或已覆盖票冒充唯一收费来源。客户应收与供应商应付独立,同项目收付使用不同费用请求键;服务已含只免相应新增应收,不消除真实供应商成本。 +5. `ll_outbound_order.fee_coverage_json`保存确认时实际货物、原费用版本与明确服务、操作人和时间;详情只展示当前派送所属货物的引用。原费用后续财务更正不自动改写旧发运确认,也不自动追加收费;业务更正按取消未执行单据后重新确认等正式流程处理。原成功命令重放保持原快照;无引用的null/空数组具有相同业务摘要,客户接口不能自行声明原费用覆盖。 + +模块和统一海外初始化已同步这一可空JSON列,没有新增表、权限或费用事件协议;普通无引用发运该列为空。发布单元包含Finance、Lastleg与Admin;Gateway沿已有路由,内部Finance入口不公开。当前服务图新增的是Lastleg→Finance只读请求边,接口实际只到Finance本库;已用单独合同约束该查询无下游调用、无账务写入。静态服务级最长链上界因此变为6跳,仍如实记录既有超两跳风险,不把服务级组合图冒充本接口实际链长。 + +本批只证明费用覆盖源码及本地行为,仍须真实Finance/Lastleg部署与来源引用、旧版本冲突、全覆盖/部分覆盖、取消重排和页面请求量验收。车辆运维财务关联、运营统计/报价及在途异常等未完成工作继续按原工作包推进,不据此缩小车辆管理整体目标。 + +本地验证:Finance与Lastleg聚合回归构建成功,Finance 223项全部通过;Lastleg 1142项中1140通过、2项环境测试跳过,0失败/错误。Admin费用覆盖相关4文件31项通过,类型检查及生产构建通过;最后的加载提示调整另经类型检查通过。Gateway、切片和同步依赖合同合计26项、初始化合同10项通过,Mapper扫描317项通过。AGENTS索引当前1094项全部通过,前述历史批次记录的5项旧断言失败已不再是当前阻塞。验证日志位于Lastleg的target/fleet-coverage-*本地输出,本批未据此宣称测试环境部署、真实HTTP、页面视觉或请求量验收完成。 + +### 10.10 报价、运营统计、在途交接与公司车辆成本集成(2026-10-03) + +报价库按采购/销售区分供应商与客户,提供版本历史、启停、删除和整批原子CSV导入;未知价格与零价分别保存。通用菜单接入`/overseas-master-data/fleet-quotes`,不复用海外仓仓储报价。外接预订已接入可选销售报价来源,来源版本与本次成交金额分别冻结,不以原报价替代实际约定运费。 + +报价选用增量:候选提供端按客户、起运城市、目的仓码、币种、计价方式及服务日期筛选启用销售报价;缺价不按零价处理,不自动选择最低价或将整车价当拼载成交价。预订接入按起运仓正式详情的城市/时区和计划出发时刻生成条件,复用Warehouse已有内部详情接口,不从仓名、国家或浏览器时区推断。引用为可选项,私人地址或缺少明确仓资料可继续手填成交价。来源版本及原报价保存于独立`quote_source_json`,与本次成交单价/数量/总金额分开;确认承运前复核所选版本和有效性,承运确认后的实收改价保留原来源。实现沿`FleetBookingService`、`FleetBookingQuoteContext`及Admin `TripBookingPanel.vue`;部署及真实费用闭环仍须以主契约证据判断。 + +车辆菜单的出车记录`/overseas-master-data/trip-operations`从不可变DEPART汇总,每趟一次;图表与列表使用相同筛选和币种口径。实际里程/油耗只作独立补充更正,不改发车、结案或财务事实。成本通过服务内有界批量Summary读取,没有记录、无权限和未查询分别展示,不把约定外接金额当应收或收款。 + +实测凭证为选填PDF/JPG/PNG,单文件10MiB、每版最多20份,独立类型`FLEET_TRIP_OPERATION_EVIDENCE`按平台及车次归属。上传只创建不可变文件,保存实测记录才冻结引用;移除当前引用不删除历史,预览按当前或历史版本按需鉴权读取。上传结果未知时停止重传,可先不绑定该附件继续保存;实测内容保存重试仍使用同一请求键、版本及内容。 + +2026-10-05用户确认首版运营页展示Finance应收/实收:只展示Finance能够明确归属该车次的权威金额,按币种分别核对并可追溯来源;没有明确归属或付款分配的部分显示“待分配”,不能当作零元或已收。既有账单级核销不按未经确认的比例分配给车次,不把整账单金额或外接约定金额当作本车次应收/实收。成本与付款、客户应收与实收分别保持各自财务含义,不重复创建费用或资金流水。 + +车次详情按需显示在途交接面板,后台确认实际交接;按实际剩余货物核验接替资源,只更新未完成派送,原DEPART、库存和费用不重写。原车辆与司机各自确认实际任务结束后释放;PDA首版只读展示当前履约资源。退回处置沿`exceptionorder/`的开始处理、证据、分批实收和取消命令,真实退回流水生成独立重派凭据;通过`RETURN_RECEIPT`候选和预排进入新PDA发运,不改原实发/签收。逐来源全签才回传国内完成事件,签后退回重送不重复计数。后端可执行不等于Admin处置页面已完整接入,当前页面与环境验收缺口见测试环境主契约。已拣未发撤拣/退仓撤回和余货拆给多辆车的交接不由这条退回重派链代替。 + +同托退回来源按实际逐订单拣货归属核算;出库托盘明细上的主入仓码不能排除同托其他来源。排车明细与原出库明细使用物理托盘、原入仓码、目的仓和订单引用的冻结快照唯一关联;存在多个匹配时明确拒绝歧义,不能取首条猜测。退回凭据、新拣货和签收仍分别保留原来源、实际数量及时间,审核或异常工单状态不能替代实际实收与签收证据。 + +派送列表和详情统一返回数据库冻结的实际签收箱数 `signedPackages`:未知返回 `null`,零和正整数保留原值,不以发货箱数代替。签收时间按服务执行时区记录,完成事件转换为同一时刻的 UTC;国内完成记录与事件时刻保持一致,不能把本地时间直接标为 UTC。退回重派核平使用实际签收箱数,并保持原派送签收数量和时间不变。 + +公司车辆费用沿文首已确认口径进入Finance独立费用、历史和付款表,引用平台财务主体,不写入客户费用池、账单或钱包。CompanyVehicleCostSubmitted完整快照经既有Outbox直接投递Finance,匹配ACK只代表接收,入账/实际付款分别执行。费用和付款使用VC/VP业务号,公司凭证限定平台及费用归属。维修/救援页面已接来源提交、财务状态查询、入账、未付作废及付款凭证;查询、入账、作废、付款和上传独立授权。已付款不能直接作废或改写来源金额,未付款可作废重建;零申报金额可记录但不伪造实际付款。跨服务与受限账号的真实验收仍按两份主契约分别关闭。 + +源码合同见`fleet-quotes-v1.yaml`、`fleet-operations-v1.yaml`、`fleet-handovers-v1.yaml`、`fleet-trip-costs-v1.yaml`及Finance的`finance-vehicle-costs-v1.yaml`。代码、初始化基线、发布和真实验收分开核对;环境证据仅维护于两份正式主契约。 diff --git a/独立任务协作登记.md b/独立任务协作登记.md index 25ec862..37882a3 100644 --- a/独立任务协作登记.md +++ b/独立任务协作登记.md @@ -1,5 +1,83 @@ # 测试环境独立任务协作登记 +## 2026-10-04 用户确认的三个独立执行对话(当前派工) + +用户明确选择“按这 3 个独立对话创建”。所属唯一总控仍为 `退税报关` / `01a0d0da-130f-7d43-97b5-9c76abc1b5f1`;本次三个对话不各自建立持续目标。已核对保存项目 `c64729ff-6710-43c6-8ef2-d84e9666cc1e`、host `local` 与 cwd `C:/Users/BY-OY/Desktop/code/chongchong-global` 一致。旧对话保持原状态,不恢复或唤醒。下表为本轮分阶段执行分工,不新增永久专项。 + +| task_id | 对话 | 职责与文件边界 | +| --- | --- | --- | +| `01a10686-c55c-75a3-9639-655b50cbce6c` | 全流程收口|头程装柜与报关 | Firstleg 装柜/报关实装口径、部分装柜结算、完成预检及直接测试。总控现有内部写入者释放之前,对完成预检/标签文件只读;之后由本对话接管。SQL 基线、受控 SQL、公共文档和发布归总控,不改 Lastleg/Order 或前端。 | +| `01a10686-cae9-7943-b976-27e78ad92723` | 全流程收口|FBA 接口与节点验收 | F01–F40 剩余接口/节点证据审计,优先 F23.2/F25/F27/F33;维护本轮专用 `scripts/fba-remaining-nodes-acceptance*` 和对应测试、`reports/fba-remaining-nodes-20261004/`。经总控复核后追加唯一维护 Lastleg 已有库存转运的本票关联换标:`transfer/service/WarehouseTransferService`、确需的直接 transfer Mapper/DTO/Controller/测试/OpenAPI,以及 `relabel/service/RelabelApplicationService` 和直接测试/调用链。正常库存选择、作业复核及客户确认需能继续至合法转运,实际出库守住换标前置;共享 SQL/权限/主契约和发布仍归总控,其他业务缺陷先交精确复现,不执行废弃批准或扣库存时点选择。 总控另授海外 PDA 主动退出修复:独占 `apps/pda-overseas-uniapp/src/api/auth.js`、`src/pages/profile/profile.vue`、必要会话辅助及对应测试,不改业务换标组件;业务前端仍由页面任务维护。 | +| `01a10686-cfdd-7f50-8500-7704e6fbc768` | 全流程收口|车辆与 PDA 页面验收 | 剩余车辆/司机/PDA 功能页面证据与直接前端修复,报告 `reports/fleet-pda-remaining-20261004/`;另经总控下发精确柜次承担海外 PDA 前置 F27 的正式页面失败恢复,报告 `reports/f27-conversion-recovery-ui-20261004-r1/`,仅指定预计到仓与转换命令,不改共享生产文件。可维护 Admin 车辆/司机与海外 PDA 直接涉及文件及测试;总控追加授权 F33 已有库存转运的本票关联换标前端接入,仅直接转运/尾程 API、组件/测试及确需的海外 PDA 换标显示,后端唯一归 FBA 任务。共享路由/导航/权限、auth/http、其他海外仓主页面及后端仍归总控协调。不得重做已关闭下载和成本场景。 | + +总控于2026-10-05追加 F23.2 文件边界:头程装柜与报关对话负责客户实际进港展示缺口,只沿现有客户订单详情的实际 API 链维护 Firstleg 运输事实读取、必要 Order 客户详情投影及 Client 订单详情和直接测试;不改 Admin、PDA、Lastleg、共享认证、权限/SQL或导航。新接口或 DTO 变更须列出生产者/消费者与合同门禁,发布仍由总控串行处理。此项只实现正式交互矩阵要求的本客户已实装货物运输事实展示,不创建第二套客户状态。 + +三个对话先接受精确交接再工作;禁止覆盖他人改动或使用共享 Git 索引提交。数据库写入、SQL、Jenkins、部署、共享契约、集成提交由总控串行处理;真实 HTTP 每任务单请求流、独立会话,仅在交接明确样本范围操作,退出自己的会话。不得重置、删除数据或伪造业务事件。Maven/全量构建不得并发;总控发放窗口,其他任务可做不争用产物的轻量定向检查。环境文件沿既有授权读取,凭据不输出。 + +总控追加 F33 收货资源接入文件边界:FBA接口与节点对话可维护 `lastleg-service` 的 `transfer/` 直接收货服务、确需的局部DTO/Entity/Mapper及测试,并唯一接管 `inboundplan/pda/gateway/HttpWarehouseResourceGateway.java` 和对应测试,核对权威收货仓/托盘/库位、现有资源占用、原请求恢复及多来源收货。优先复用既有内部资源合同,不擅改PDA共享作业服务或Warehouse Overseas生产实现。SQL基线、统一SQL、实际数据库与发布仍由总控处理;必要结构先交精确字段/约束。本轮故障代理及F27资源恢复由总控维护,避免重叠。 + +沟通只保留初始派工、必要的文件释放/环境就绪、最终交付或明确阻塞;禁止“收到/等待/进度”跨对话互回。每个阶段交付一次后停止自主扩展,最终结果由总控只读收取;不自动发送消息、创建额外对话或子代理。部署与验收进度仅更新两份正式主契约,不在登记表复制。 + +用户于2026-10-05明确调整协作方式:大工作包由现有独立对话承担,具体项目出现阻塞时由总控接手未完成项,并继续推进不依赖该阻塞的工作。接手前明确原任务释放的文件、样本与浏览器操作权;复用其已验证成果,仅处理缺口,不重复整条流程。总控不以等待专项回复为停止其他可执行工作的理由;确属工具或外部条件限制时保留未验证边界,不虚报完成。 + +总控追加F27原操作恢复边界:头程装柜与报关对话唯一维护Lastleg `inboundplan/service` 的转换预览/恢复状态、直接Mapper/DTO/测试,以及 `mapper/LastlegOrderMapper.java` 的柜级待资源计数和直接测试;仅沿确切消费者核对入仓/PDA资源确认门禁,不接管转运/换标。车辆与PDA页面对话唯一维护Admin `LastMileOrdersView.vue` 及直接测试的原资源恢复入口和门禁。FBA接口对话继续独占原F33转运执行;三个样本范围互不混用。总控负责共同合同、编译、发布和现场故障运行窗口;工具或只读审计脚本的临时文件以精确派工为准,不由专项自行执行共享环境变更。 + +## 2026-10-04 全流程唯一持续目标与车辆交接(当前) + +总控追加F33页面入口最小实现边界:FBA接口与节点对话独占 Admin `api/warehouseTransfers.ts`、`components/WarehouseTransferFulfillmentPanel.vue` 及直接局部组件/测试,承载既有库存转运正式出库与逐来源目标仓实收。车辆与PDA页面对话释放上述转运文件,仅继续F27恢复页面;`LastMileOrdersView.vue`不交叉写入。共享路由、权限、SQL、集成和部署仍由总控处理;实现任务先本地定向检查,不自行重跑已通过HTTP链或改变共享环境。 + +本包后端持久实收查询由头程装柜与报关对话唯一接管 `WarehouseTransferResponses`、`WarehouseTransferService.detail`、`WarehouseTransferReceiptCoordinator`、确需的 `WarehouseTransferReceiptCommandMapper` 及直接测试/OpenAPI;仅向既有详情提供本客户本票的原实收请求、状态和权威目标,保证跨浏览器续作及完成响应一致。FBA接口任务本包不写后端;不新增出库命令表、不改SQL或转运写入规则。编译、运行验证和发布仍归总控。 + +总控核对F33主/子状态后,本批后端边界进一步包含 `WarehouseTransferService.outbound/receiveReserved` 和 `RelabelApplicationService` 的既有库存转运完成回调及直接测试:保持本票已经成立的INBOUND_COMPLETED,仅推进转运子单与子状态。原来源订单、来货转运另一履约链及真实派送主链不得误改,不回填旧记录、不执行SQL;任务2仍只维护本批Admin入口。 + +总控追加F33预留所有者保护包:头程装柜与报关对话唯一维护必要的转运预留查询/守卫、`InventoryCommandService` 直接调用及测试、`DispatchCandidateMapper` 的候选/锁定归属校验、`PdaPalletOperationService` 拆合托入口及直接测试。禁止凭可由外部伪造的业务号/幂等前缀绕过预留,只允许服务端核对后的本转运消费者使用;保持独立逻辑预留模型,不改HOLD模型或泛化封禁保留身份的整托移库。该任务获得空闲本地Maven窗口,仅串行受限最小红/绿回归;总控此时不另起Maven或全量前端构建。真实环境样本及页面由总控和页面任务独占,专项不HTTP/SQL/部署。 + +总控追加废弃确认重放最小边界:FBA接口与节点对话唯一维护Lastleg `PdaCargoDiscardService.confirm`及直接测试,只修复已完成单/托的相同完整载荷恢复及异载荷/越权拒绝,不改变首次扣减时点、审批状态设计、SQL/API/权限。业务时点等待用户明确选择,专项不批准或实际废弃测试货物;独占本地串行受限Maven窗口。头程装柜与报关对话同期只在`reports/wallet-mid-transaction-20261005-r1/`准备单一合成资金指令中途故障工具,不修改生产或运行构建,不执行HTTP/SQL/部署。最终集成、共享主契约和环境操作仍归总控。 + +总控另授车辆与PDA页面对话仅在`reports/auth-validate-timeout-20261005-r1/`准备指定合成PDA账号/会话的Gateway→Auth权威会话校验超时工具及离线测试。只沿直接认证协议和已有依赖故障工具复用,不能写生产代码/共享脚本,不能关闭校验或影响其他账号。该任务不执行HTTP/SQL、运行配置切换或部署,不占Maven窗口;无法精确匹配或恢复时交源码依据,不扩大故障范围。实际故障窗口与恢复仍由总控独占执行。 + +用户在车辆对话明确要求:“当前的目标先停掉,只有总控一个目标”。已核对该对话的用户原文;当前唯一持续目标属于 `退税报关` / `01a0d0da-130f-7d43-97b5-9c76abc1b5f1`,保留F01–F40全范围,并统一收口下述车辆首版完整闭环。车辆对话 `01a0f19d-3f0b-7ae0-a860-c0d1d2e84475` 和三个既有专项停止自主全目标循环,仅保留原task_id、代码归属与交接证据;不得自行继续环境写入、发布或故障注入。没有创建新任务、恢复归档任务或标记车辆已完成。 + +唯一总控负责共享环境发布、串行Maven、数据库/故障窗口与最终验收。专项若获明确后续派工,只执行所分配阶段和文件边界;不各自建立持续总目标。当前对话仍遵循不自动回信的约束,交接与必要现场核对采用只读方式,不能凭另一任务来信自动授权消息回复。目标工具不支持修改一个活动目标的objective正文,不能把未完成原目标标complete来替换;车辆范围按本次确认纳入同一执行范围,原FBA目标保持active。 + +原车辆总控冻结的异常实收/重派关联10文件交给唯一总控集成,保留原冻结SHA和编译失败。总控只修复已交接的测试编译歧义、验证该冻结批次并按后端先于Admin安排发布;不将其他共享未提交修改一并暂存。两份正式主契约仍是部署、已验场景和未关闭项的唯一事实入口,本登记不复制进度。 + +### 原2026-10-03车辆四任务职责(保留文件边界,停止自主目标) + +用户本轮明确确认:“确认创建三个任务,我们当前目标调整一下,加上自己,一共4个任务,一起处理,尽量把车辆的跑通”。本次车辆协作覆盖下方旧车辆专项归档状态,其他旧任务仍保持归档,不自动恢复。 + +- 原车辆总控:`01a0f19d-3f0b-7ae0-a860-c0d1d2e84475`,host `local`;当前转为交接入口,原车辆/司机、共享入口/权限/SQL、构建发布及最终验收职责由上述唯一总控接管。以下专项文件边界保留,未经新派工不自主继续。 +- 项目固定为测试环境 `c64729ff-6710-43c6-8ef2-d84e9666cc1e`,工作目录 `C:/Users/BY-OY/Desktop/code/chongchong-global`。所有任务在当前分支当前工作区操作,不创建分支/worktree,不混入开发环境。 +- 车辆原目标保持完整:以原型梳理与当前正式合同为准,完成车辆/司机、车次、自有及外接、成本财务、报价统计、异常、页面和PDA闭环;不能以单模块绿灯认定全部完成。 + +| task_id | 独立任务 | 稳定职责及写入边界 | +| --- | --- | --- | +| `01a0ffcf-7150-7db3-9d8c-108e568c12b1` | 车辆管理|成本与财务闭环 | 独占FleetTripCost系列后端、直接测试/OpenAPI、Admin tripCosts API和TripCostPanel及其测试;负责后续维修救援成本与Finance衔接。共有表结构、权限和车次页签由总控集成,Finance共享入口变更先列明路径。 | +| `01a0ffcf-eea3-7111-b30b-4be63547ac33` | 车辆管理|报价与运营统计 | 独占新增Lastleg fleet/quote、fleet/reporting及各自测试/OpenAPI、Admin独立报价/运营页面和API;不修改成本写入和车次执行。共享导航、路由、权限、表结构与导出注册交总控集成。 | +| `01a0ffd0-2a4d-7210-bad8-a790cd965e8a` | 车辆管理|在途异常与改派 | 独占新增fleet/exception及在途相关组件、API;按正式派工接管FleetTripService/Execution/Completion、资源及实际dispatch/PDA调用链。共享FleetTrip模型、接口和PDA入口先交总控协调;不改成本、报价统计及其草稿。 | + +本轮已释放给在途专项的共享接入:`lastleg-service/src/main/java/com/baiyue/lastleg/fleet/trip/FleetDispatchGateway.java`、`lastleg-service/src/main/java/com/baiyue/lastleg/dispatch/fleet/DispatchFleetAdapter.java`及对应专属测试。限定在途交接的目的地/实物托盘/派送终态只读依据,不改库存数量或重写原DEPART。已有`FleetTripPersistenceTest.java`、`FleetTripApiContractTest.java`、`FleetTripAuthorizationTest.java`归在途专项直接消费者维护;新`FleetTripCost*Test`仍由成本专项独占。 + +总控统一管理 `TripDetailView.vue`、模块路由/导航/权限、共享FleetTrip模型接入、IAM权限种子、模块与统一SQL、主契约和公共验收入口。独立任务不得部署或执行SQL,不同时启动Maven/全量前端构建;定向检查可自行执行,Git提交由总控统一选择,避免共享索引冲突。真实环境沿用户授权使用 `C:/Users/BY-OY/.codex/env/chongchong-global`,凭据不输出。共享未提交改动不得覆盖、暂存整库或回退。 + +2026-10-03 用户再次明确要求提高四任务并行效率,解除“所有验收均等总控亲自操作”的瓶颈。总控发出匹配版本就绪通知后,三个专项分别承担自身TEST真实HTTP、页面验收与修复;每任务仅一个串行请求流,独立登录会话及新建样本,不争用对方记录,不并发操作同一车次/库存或凭证。成本范围标记`FLEET-COST-20261003`、报告`reports/fleet-cost-live-20261003`;报价范围标记`FLEET-QUOTE-20261003`、报告`reports/fleet-quote-live-20261003`,不操作库存;在途范围`fleet-handover-20261003`、报告`reports/fleet-handover-live-20261003`,独占本轮客户、货物、车次和PDA作业员。各自保留失败与原请求,结束退出自身会话并恢复自己的测试资源,禁止删除或重置数据。运营统计只读消费在途任务已验证且冻结的当前轮DEPART事实;由总控转发,不复用历史样本冒充新链路。用户授权的测试环境范围不扩大到开发或生产。 + +在途专项追加独占`scripts/fleet-test-env-acceptance.mjs`及直接测试,负责将新交接验收挂在实际DEPART后、签收前;新`fleet-handover-acceptance`模块归在途专项,`fleet-company-cost-acceptance`归成本专项,`fleet-quotes-operations`归报价专项。总控保留公共Admin入口注册、权限、SQL及发布。 + +为消除发布串行瓶颈,在途专项另获海外PDA H5独立发布单元:仅测试`pda-overseas-h5-test`容器及既有Compose项目/网络,使用已固定源码与编译资产,核对健康和首页摘要;不得操作国内PDA、原生APK、后端或网关。三后端与Admin发布、共享SQL仍由总控收口。 + +混合履约后续接线继续复用三任务:成本专项唯一维护新增`SourceDeliveryCompletionPolicy/Query`、`DeliverySourceEvidenceMapper`及直接测试,并接管`DeliveryDocumentService`、`DeliveryCompletedOutboxService`和直接测试,按真实来源签收证明接既有完整签收事件;在途专项唯一维护退回入库来源及dispatch候选/预排/PDA拣货重派链和Admin海外仓对应直接调用文件;报价专项负责独立运营验收和只读交叉复核,不修改被复核者文件。共有SQL、权限/导航、发布仍由总控处理。新结构本地准备不等于已执行TEST,国内异常结案业务选择不由专项自行决定。 + +车辆总控进一步释放报价接线:报价专项唯一维护`FleetBookingService/Models/Entity/Reservations`及其直接测试/外接预订OpenAPI、Admin `bookingTypes.ts`、`api/tripBookings.ts`、`TripBookingPanel.vue`及直接测试,接入可选销售报价来源版本;保留`3440f9d`详情关闭后编辑修复。总控保留`FleetBookingQuoteContext`、`FleetWarehouseClient`及直接测试、全部SQL/权限及共有装配。异常专项继续独占车辆验收主入口,接入成本专项的`fleet-trip-cost-acceptance`助手和两类独立权限会话;异常退回缺陷仅沿实际调用链扩展局部实现,新增结构/权限由总控集成,不改其他任务的普通签收/F40流程。 + +本轮车辆总控追加释放:成本专项唯一维护Lastleg `fleet/maintenance/`及直接测试/`fleet-vehicle-records-v1.yaml`、Admin `VehicleCareTable.vue`、`VehicleCareEditor.vue`、`api/vehicleCare.ts`及直接测试,负责维修/救援公司成本命令和状态接入。保留#493空字段初始化与无变化不写入修复;公共事件配置、File类型、编号、SQL/权限仍由车辆总控集成。此为上方当前四任务的文件分工,不恢复下方历史任务。 + +## 2026-10-03 归档与重新规划 + +用户要求归档此前分配的对话并改为分阶段处理。下表四个独立任务及此前车辆专项 `01a0f19d-3f0b-7ae0-a860-c0d1d2e84475` 均已确认归档;下文职责与授权仅保留为交接历史,不再据此唤醒、派工或自动恢复。当前对话保留为汇总与规划入口,新对话数量及职责待用户确认后建立。 + +归档不删除工作区代码或报告。用户随后明确要求当前对话继续处理不依赖车辆的逻辑;本对话直接接续非车辆工作,不唤醒以上旧任务。F23原柜改船已接续提交、部署并完成既有船期编辑的双端验证,具体版本、证据与未覆盖项唯一见[测试环境单机部署与配置契约](测试环境单机部署与配置契约.md)。车辆后续独立授权与职责以上方当前登记为准;归档本身不代表功能完成。 + 2026-09-09 的旧登记保持作废。下列任务根据用户 2026-09-30 的明确请求重新创建:用户要求“使用多个独立任务处理(不是子智能体)”,并确认“按4个创建,你直接负责汇总”。不根据旧台账恢复或派工。 ## 所属总控与项目 diff --git a/统一订单主状态与操作契约.md b/统一订单主状态与操作契约.md index 0d3ddba..f3c48da 100644 --- a/统一订单主状态与操作契约.md +++ b/统一订单主状态与操作契约.md @@ -83,6 +83,15 @@ ## 七、验收主链 +### 客户订单列表的分页与待办读取 + +- 客户订单首页使用 `GET /api/merchant/v1/orders/workbench`,客户范围只取认证上下文,权限为 `merchant:order:list`。接口一次返回当前页、筛选后总数、全部/待费用确认/待上传报关资料/草稿四项数量及该客户完整渠道名称选项;不能先取前 200 条再在浏览器分页或统计。 +- Order 在数据库内应用入仓码或 SKU、收货仓、渠道、目的仓类型、快递单号、创建时间、当前状态及待办筛选。草稿排在前面,同组按创建时间和订单 ID 倒序稳定分页;默认每页 10 条,上限 200 条。`DRAFT/CANCELLED` 是订单交易状态在客户读模型中的直接展示,不新增履约推进节点;默认列表排除已取消单。 +- Firstleg 通过受内部服务令牌保护的 `/internal/firstleg/v1/inbounds/unified-orders/workbench-filters` 提供当前客户匹配的履约和待办订单范围。费用待确认只取最新费用版本的未确认 `SENT`;报关待上传取最新已完成装柜计划、有效货柜及尚未上传齐当前客户退税入仓码资料的范围,不受同柜其他客户未上传影响。查询不创建报关记录、不更改船或柜、不跨 Schema 读表。 +- 翻页、换每页数量和筛选均重新请求服务端;快速切换时旧响应不得覆盖新页。筛选数量随当前条件计算,资料或费用确认后重新读取。分页响应不完整或依赖服务失败时明确报错,不能回退旧查询或显示成功的空列表。 + +### 履约主链 + ```text 客户提交订单 → 平台审核 diff --git a/统一认证与服务通信契约.md b/统一认证与服务通信契约.md index 1472770..ae05592 100644 --- a/统一认证与服务通信契约.md +++ b/统一认证与服务通信契约.md @@ -1,9 +1,51 @@ # 统一认证与服务通信契约 +2026-10-08灰度拼车角色页面补验:专用两销售按本人意向隔离,报价库入口按权限显示;最小调度可确认承运,客户A可见自身商业订单、客户B列表为空。海外PDA浏览器初次登录暴露Gateway CORS漏配两个PDA Origin,已同步灰度持久环境与Jenkins环境文件并仅重建原镜像Gateway;四合法前端Origin通过、其他Origin仍403,海外PDA真实登录、收货与整车发车均通过。此前无Origin HTTP冒烟不代表此浏览器边界已验证。本轮证据、保留账号及硬件验收边界见测试环境主契约同日“灰度拼车角色页面与 PDA H5 补验”节及 `reports/gray-ui-20261008/`。 + +2026-10-08新增拼车灰度专项通过:独立GRAY入口735项HTTP断言通过,包含两销售同姓名不同身份隔离、无权确认/他人修改拒绝、客户不能读内部池及其他客户商业单;两类本土订单从实际收货至完成及唯一费用已核对,临时角色/账号停用与会话注销记录保留。取证绑定灰度production容器与数据库,不回落TEST;精确批次、creation_mode字段修复及终态回查见测试环境主契约同日拼车专项节。 + +2026-10-08内部拼车首版已发布临时灰度:IAM新增五项池权限及平台管理员授权,灰度新登录经统一Gateway和Admin公网代理均能读取池、本人/全部意向及仅id/code/name客户目录,退出成功。Lastleg/Admin/Client灰度版本、SQL精确范围及资源SHA验证见测试环境主契约同日发布节;其余认证服务、Gateway与PDA未重新发布。该冒烟不替代TEST的跨销售/客户隔离和完整业务链证据。 + +2026-10-07内部拼车需求池TEST身份验收:`reports/fleet-cross-pool-20261007-r5/report.json` 732项通过,独立r5审计核对原始响应与库存证据,其中两名同显示名、不同登录ID销售按本人意向隔离,最小调度manage权限可处理承运;销售不能确认占位,Client不能读取平台池,池来源商业单旧手工操作旁路被拒。凭据与会话均经统一Auth/ Gateway,执行后退出脚本会话;该HTTP证据不替代两端角色页面验收。Admin真实浏览器打开发布详情时自然遇到401,随后一次refresh200、权限快照200、原详情重放200,未形成多次刷新循环;网络与响应证据分别为 `reports/capacity-pool-20261007/admin-pool-detail-network.json`、`admin-pool-detail-status.json`。该场景首次详情有一次认证拒绝和一次成功请求,不能计作零认证重试的单次请求。本轮最小销售、调度及客户页面与请求预算已完成分层核对;48条最终合同映射必要未关闭项为0,部署版本和各证据层级以测试环境主契约及 supplemental-ui-audit.json 为准。报价正向补证为本地组件/API测试,不扩大为真实HTTP声明。 + +2026-10-07灰度退税 FBA 定向闭环补证:主单 `FL2107698725471256577` 及其余量单通过统一灰度 Gateway/Auth 完成国内装柜、报关、人工船节点、海外 PDA 收货、发车签收和完成回传,1325项断言通过。收货库存与原键重放使用灰度数据库只读快照核对;两来源完成 Outbox 各唯一一条 PUBLISHED,pending/failed均0,签收资料重复保存未新增完成事件。独立新会话回查主/余量订单均 COMPLETED、入仓均 DELIVERED;此证据仅证明本轮正常业务链和所执行的幂等边界,不代替灰度故障注入或 TEST 默认全量。准确版本、过程两次失败、脚本选仓修复、月度测试汇率及未覆盖范围见[测试环境单机部署与配置契约](测试环境单机部署与配置契约.md)临时灰度节;原始证据 `reports/gray-release-20261007/gray-flow-tax-r3.json`、`gray-flow-tax-final-verification-r3.json`。 + +2026-10-07临时灰度统一认证已实际部署并验证:四端共用独立灰度Auth、签名密钥、Redis会话前缀和Nacos命名空间;两个API域名指向同一Gateway,不再运行独立海外Gateway或事件桥。四角色登录、权限、核心读取及Access/Refresh撤销48项通过,四个各自公网入口追加16项代理/登录/退出检查通过,JWT均为本次灰度签名身份;没有将内部服务接口暴露到公网。灰度旧Redis用户名错误已修正,临时管理员密码对齐用户安全配置,新建验收客户和国内PDA经正式接口创建。详细运行版本、账号交付位置、过程失败及验收边界以[测试环境单机部署与配置契约](测试环境单机部署与配置契约.md)的临时灰度发布节为准。 + +2026-10-05本轮收口:用户明确跳过测试邮件/告警通知、外部船司自动查询以及V02凭证图片像素核对,均记录为“用户跳过”,不计为测试通过,也不关闭产品功能。结合下列最新补验证据,本轮约定范围已完成;最终范围、运行版本及保留边界统一见[测试环境单机部署与配置契约的最新验收状态](测试环境单机部署与配置契约.md#本轮最新验收状态2026-10-05test)。下方各日期记录保留当时证据范围,不将旧待补验描述作为新的阻塞。 + +2026-10-05 0A首次同/异hash并发补验:两组隔离合法换标业务先持本客户账户行锁,真实MySQL锁等待证明原自然消费者持有Inbox且两个手工请求在首次结果未成立时并发等待。门锁分别1.046秒/3.868秒;same原事件a92f9c14-548b-4119-b94e-7fc6c4e8d30c两手工DUPLICATE,different原事件8baa9074-d60a-4c33-90a9-aaab356a9697的不同载荷只改remark、实际运行库Java校验合法摘要,返回FIN-EVT-002身份冲突(不是坏摘要)。原自动消费者加两个手工请求分别留下完整时序与SQL锁链;每组唯一0.01冻结及唯一结果、源Outbox/结果Outbox PUBLISHED、Lastleg结果Inbox PROCESSED。只读终态复核、会话退出、账户锁连接/锁0、运行指纹/健康未变及远端临时文件清理见后端reports/wallet-first-execution-concurrency-root-20261005-r1/root-independent-review.json与root-final-runtime-cleanup.json;11份原文件已归档。关闭此首次并发要求,不宣称其他消费者或全局压力测试通过。 + +2026-10-05 结果提交失败原子性补验:合法RL-WH-20261005-264066原指令00c6799d-743c-4137-a499-c1a3a852e835在资金及成功结果Outbox均写入同一事务后,于最后UPDATE Inbox命中限定SQLSTATE45000/1644;资金余额/版本、hold/ledger/idempotency及本命令结果Outbox全部回滚,仅事件身份PROCESSING持久化。删除唯一触发器后同原事件/hash/envelope自然恢复,唯一0.01冻结及结果2e63d316-fbf3-4a5b-a74d-0e008c6d07bb的PUBLISHED/Lastleg PROCESSED均成立。触发器回查0、会话退出、服务容器/配置/网络指纹与健康未变;其他账户摘要未变,库存按合法重新预留与故障后恢复两个阶段核对。后端reports/wallet-result-commit-20261005-r1/root-independent-review.json复核18项原始条件及证据SHA,保留先前合法余额不足FAILED事件。本次关闭对应原子性与原事件恢复缺口;首次同/异hash并发由本文件开头另列的独立场景补证,不冒充已找回历史原0A报告。 + +2026-10-05 Client退出补验关闭:修复随Client384发布,当前385只追加报关统计文案。正常UI退出恰好一次带Bearer的logout200/200,返回登录页;原Access尚未过期即被受保护接口401/A0401拒绝,原Refresh为HTTP200/A0401。自然过期分支使用独立正式登录会话,原Access于11:02:51 UTC到期后实际确认退出,完整网络严格为logout401/A0401→refresh200/200→logout200/200,只有一次刷新;原与替换Access/Refresh全部被拒,替换Access在11:06:36 UTC验证时尚未到11:27:34 UTC自然到期。身份长整数以私有原JWT精确核对,原及替换Bearer与真实UI请求匹配;未改时钟、TTL或伪造响应。后端reports/f22-201-browser-20261005-root-r4/final-result.json、normal-logout-independent.json、expiry-independent.json及网络/DOM/截图为证据,客户端自建标签已关闭、临时视口恢复。仅关闭该客户端正常与自然过期退出分支,不外推未运行的并发或未知传输分支;部署及其他未关闭项见测试环境主契约。 + +2026-10-05 自然租约与旧持有者CAS补验:新合成换标RL-WH-20261005-915970的WalletCommandCompleted结果a109b5d8-2ff6-4d00-bfba-bf17594b6012由独立非Spring JVM使用当前Finance125生产Relay/Journal领取一次;真实内部ACK已收到后,本进程屏障等待原60秒租约自然过期。正式共享Finance在62020ms标LEASE_EXPIRED、按原退避另由新owner获得DUPLICATE/PUBLISHED;先保存独立SQL快照,再放行旧真实ACK,原deliver返回前后Outbox、两审计及本包Finance/Lastleg业务数据完全不变,唯一0.01冻结。没有改锁时间/重试时间/TTL、暂停共享服务或假ACK;生产类库/容器/配置/Nacos未变,临时JVM/worker退出且自有文件清理。后端reports/outbox-lease-live-20261005-r1/root-business-verification.json、root-ledger-verification.json、root-final-verification.json及其运行证据为依据。仅关闭指定生产Relay/Journal的晚到成功CAS;一次性客户端为JDK真实HTTP,不宣称Feign故障、全部消费者或压力测试通过。 + +2026-10-05 船节点限定消费补验:独立新柜D1442/TSTU1527735正常装柜事件APPLIED后,3条受内部服务身份保护的直接请求依次得到APPLIED、STALE、EVT_PROTOCOL摘要冲突。新事件ID的低版本/低节点不回退有效事实;原eventId配不同但规范合法的payloadHash拒绝且原Inbox/gate不变,捕获的客户订单/库存及原装柜Outbox/Inbox/投递审计不变。后端reports/shipping-event-canonical-20261005-r1/root-final-verification.json与root-original-source-unchanged.json为真实HTTP/MySQL证据,生产canonical原类计算字节/hash;不是篡改旧Outbox,也不宣称外部船司、其他消费者或自然租约故障通过。 + +2026-10-05 国内PDA退出修复已发布:e699e9d9bacb捕获原会话后立即清理敏感草稿,等待服务端撤销再跳转;明确HTTP401时最多刷新一次并撤销同主体的新凭据,不将该凭据写回本地。并发自动刷新共享原请求且旧响应不能恢复已退出或覆盖后续登录;未知网络失败不盲目重试,明确提示服务端退出未确认。总控176项本地测试、5项Gateway合同及HBuilderX5.26实际构建通过,TEST静态包逐66文件核对通过;本机390×848正常页面退出已捕获唯一logout200、无refresh,原Access在尚未过期时受保护接口401/A0401,原Refresh200/A0401且不签新凭据;reports/domestic-pda-logout-ui-20261005-r1/normal-final-evidence.json及root-normal-independent-verification.json为证据。自然过期退出已补验:原Access14:10:30自然到期,14:11:54在原tab确认,真实logout401→refresh200→logout200;原及替换两组Access/Refresh均A0401且不签新凭据,替换Access在14:13:30拒绝时尚未到14:35:53的自然到期时刻。root私有核对两组身份/原exp及替换iat、完整网络,查看原390×848截图并记录导出像素差异;原标签关闭、视口恢复。证据为同目录expiry-final-evidence.json与root-expiry-independent-verification.json,仅关闭国内本分支。部署证据见测试环境主契约及后端reports/domestic-pda-logout-release-20261005-r2/root-runtime-verification.json。 + +2026-10-05 Gateway Redis连接不可用补验:仅同镜像Gateway临时覆盖Redis客户端host/port,指向容器自身无监听端口19391;共享Redis、Auth/IAM保持运行。实际日志确认连接拒绝;两组原有效Admin/PDA Access在直达及公网入口均401/A0401,同时Auth权威接口对同会话仍200/true。聚合health503/DOWN未当作认证拒绝证据。恢复原镜像完整配置/Nacos后,同Access摘要的直达和公网请求均200、health200/UP,Auth/IAM原容器/配置未变,运行FINISHED且会话退出。后端 `reports/redis-gateway-failclosed-20261005-r1/root-final-verification.json`(26项)保存HTTP、运行状态及私有原故障日志摘要。第一次准备因namespace链接权限失败的原记录保留,确认无state且原服务未改后仅归档自有初始化;没有停共享Redis、清键或变更超时预算。本项只证明Gateway自身Redis连接故障的失败关闭和原凭据恢复,不覆盖全部Redis消费者及剩余消息可靠性场景。 + +2026-10-05 IAM→Auth撤销响应超时补验:仅新合成PDA账号auth2106926470848942081/member2106926470848942083的一次正式仓绑定PUT,Auth `/internal/auth/accounts/sessions/revoke` 已真实成功后,代理精确延迟该响应6秒;IAM在5277ms返回HTTP200/S0503。真实SQL核对完整IAM成员/用户/角色/主体权限版本均回滚,仍为洛杉矶原仓和权限版本1;Auth令牌版本1→2已提交,旧Access与Refresh均A0401且没有新凭据,对照账号200。恢复原IAM运行配置后新登录仍正常访问原仓,证明IAM回滚没有复活已撤销会话。原镜像/完整配置/Nacos摘要一致,Auth与Gateway原容器未变并健康;代理/端口/锁清理、有效会话退出,唯一新账号经正式接口停用并由SQL确认。证据为后端 `reports/auth-revocation-timeout-20261005-r1/root-final-verification.json`(26项核对)及所引HTTP、代理时间记录和三份真实SQL快照。只关闭此“远端成功、调用方响应超时”的撤销分支,不覆盖Redis故障及所有IAM/Auth变更;未采集原IAM异常栈,不推定具体异常类。 + +2026-10-05 Gateway权威会话校验超时补验:精确TEST PDA账号及jti的单次 `/internal/auth/accounts/sessions/validate` 调用延迟6秒,外部受保护请求在4142ms返回401/A0401;另一平台账号的用户列表请求168ms返回200。完整5条代理事实证明只延迟指定一次校验、对照直通及Auth稍后正常200。恢复原网关后,同两组尚未过期原Access再次通过,代理记录无增长;原Gateway镜像及完整配置、Auth原容器及配置、Nacos摘要均一致并健康。代理进程和两监听端口清理、锁消失、两会话退出均已核对。后端 `reports/auth-validate-timeout-20261005-r1/root-final-verification.json`(23项原证据核对)及 `root-final-runtime-proof.json` 为本次依据。只关闭Gateway→Auth权威校验超时,不覆盖Auth撤销调用超时、Redis不可用或所有业务服务的校验分支。首次旧PDA对照登录被A0403拒绝的记录保留,原目标会话正常退出后改用现有有效平台账号,未复活旧账号、创建替代账号或更改权限。 + +2026-10-05 资金执行中途故障补验:合法新换标RL-WH-20261005-560514的0.01CNY冻结指令200ebc4a-f078-4fc8-af7d-2e334c123b8c,在真实MySQL账户更新/hold插入后、流水插入前命中特定SQL异常;余额/版本、hold、资金流水和业务幂等写入均回滚,仅保留PROCESSING事件身份,无最终结果/结果Outbox。专属短时触发器移除后,同eventId/hash自然重试仅冻结一次,结果Outbox发布、Lastleg结果Inbox处理和FROZEN状态均完成,原库存/流水不变;触发器不存在、独立会话退出。证据为后端reports/wallet-mid-transaction-20261005-r1/root-fault-run.json、independent-final-review.json及所引原始SQL/日志。初次余额不足FAILED前置事件另存,不把重新发布业务指令当作原故障事件恢复。本次关闭这一资金中途回滚运行缺口,其余认证/消息故障和通知链路仍分别保留。 + +2026-10-05 自然过期退出补验:海外PDA r2原Access于北京时间07:30:33到期、07:30:58从原个人中心点击退出;Admin原Access于07:36:13到期、07:37:07从原详情页点击退出。两端各一次真实退出确认,完整网络均为logout401→refresh200→logout200。原及替换Access均401/A0401,两组Refresh均HTTP200/业务A0401且不签新凭据;总控分别私有核对替换Access被拒时尚未自然到期。原/替换凭据同一性、登录页和标签释放均有证据,见后端reports/pda-expired-logout-ui-20261005-r1/与admin-expired-logout-ui-20261005-r1/下的final-evidence.json、root-independent-verification.json。关闭R07两个指定自然过期退出分支,其他认证故障未据此关闭。下方2026-10-04记录中的“待补验”保留为当时状态,以本段较新证据为准。 + +2026-10-04 本轮权限与退出补验:既有转运执行权限 `lastleg:warehouse-transfer:manage` 已在 IAM 模块及统一基线注册,TEST 仅给默认平台管理员增加该授权,并推进受影响主体权限版本。新登录正式权限接口已确认执行/审核/库存列表权限,退出成功;证据 `baiyue-firstleg/reports/transfer-permission-login-verify-20261004-r1.json`。海外 PDA `b247b0c` 正常主动退出已用真实页面验证,一次 Auth logout 成功后原 Access 与 Refresh 均拒绝且不签发新凭据;证据 `reports/pda-local-h5-ui-20261004-r1/fixed-logout-credential-proof-r1.json`。自然过期令牌退出分支仍待真实 UI 补验,不以单元测试代替。装柜 B 柜唯一实际来源完成事件、APPLIED 回执及 Lastleg Inbox 摘要对应已验证,见 `reports/partial-B-completion-event-proof-20261004-r1.json`;只关闭该样本范围,不扩展为全部船节点/库存/车辆验收通过。 + 更新日期:2026-09-29。本文是已确认目标的唯一主契约;当前仅有测试环境,所有服务同机部署。部署与切换见[测试环境单机部署与配置契约](测试环境单机部署与配置契约.md)。 状态:统一 Token/JWKS/Redis 会话、八类可靠直接投递和单 TEST 的 13 个服务已部署。真实 HTTP 主验收 7149 项断言通过,目标装柜事件 ACK 丢失、有限重试耗尽、人工原事件恢复及幂等结果已实测;代理已停止并恢复直连。旧海外 Gateway 与事件桥已停止且退出构建/部署,遗留源码尚未删除。完整页面作业、其余真实故障矩阵及告警通知链路不能据此视为通过,整体迁移验收尚未关闭。 +2026-10-03 费用可靠投递补证:F40三顺序共10条费用事件以及车辆专项外接30CNY来源费用,均已按客户/来源/版本/事件ID核对唯一Outbox与已完成APPLIED投递审计。车辆专项组合证据为后端`reports/fleet-current-20261003-r2-terminal/final-evidence.json`,总控已核对源报告摘要;该结论仅证明这些样本正常投递确认,不覆盖费用ACK丢失、撤销重试或完整故障矩阵。具体部署及未关闭项仍维护在测试环境主契约。 + +2026-10-03 Order依赖故障边界补验通过:限定本轮客户与原请求ID,客户端/平台分别验证IAM资格和Finance钱包不可用(4次),提交正确失败且订单/履约事实不变;恢复同镜像/同配置/同Nacos源后,原请求成功提交且重放不重复,代理已停止、会话已退出。运行报告为后端`reports/order-dependency-fault-runtime-20261003-r1.json`。请求关联在实际熔断配置下命中,无关闭熔断或扩大故障客户范围;该证据不覆盖事件ACK丢失等另一类可靠投递测试。 + 下文路径、响应与时序为改造目标。实际业务服务、客户隔离、仓库类型、作业角色与状态机保持原职责;不能将“同机”解释为合并数据库表或绕过权限。 ### A. 唯一路由与消费端映射 @@ -46,17 +88,20 @@ | `OverseasInboundOrderDetainedChanged` | Lastleg `InboundOrderDetainedOutboxService` → 同一卸柜 Relay | Firstleg `/internal/firstleg/v1/container-events` | | `OverseasDeliveryCompleted` | Lastleg `DeliveryCompletedOutboxService` → 同一卸柜 Relay | Firstleg `/internal/firstleg/v1/container-events` | | `BusinessFeeSourceChanged` | Lastleg `OverseasFeeOutboxService` → `OverseasFeeOutboxRelay` | Finance `/internal/finance/v1/business-fee-source-events` | +| `CompanyVehicleCostSubmitted` | Lastleg车辆运维费用来源 → `InboundUnloadCompletedOutboxRelay`;源码接入中,尚未部署验收 | Finance `/internal/finance/v1/vehicle-costs/events` | | `WalletCommandRequested` | Lastleg `WalletCommandOutboxService` → `InboundUnloadCompletedOutboxRelay` | Finance `/internal/finance/v1/wallet-command-events` | | `WalletCommandCompleted` | Finance 资金指令处理的结果 Outbox → `WalletResultOutboxRelay` | Lastleg `/internal/lastleg/events` | | `IamUserStatusChanged`、`IamTenantStatusChanged`、`IamPermissionVersionChanged` | IAM 安全事件专用生产/Relay | 不迁移业务投递;完成 C 的撤销替代验证后移除专用投影链 | +车辆混合履约边界(2026-10-03):`OverseasDeliveryCompleted`仍只表示整来源实际签收,消费者据此把来源入仓单置为`DELIVERED`,不表示车次结束或异常工单关闭。工作区新增接线在首次实际签收的显式READ_COMMITTED事务中,沿历史出库/拣货分组取得全部受影响来源,按订单数值ID排序加锁,再核对实际签收、退回流水与重派凭据;不能使用可被改写的当前派送号或按比例猜来源数量。签前退回的货物重派后首次签收才新增贡献;签后退回再次签收不重复累计,可追溯多跳沿同一规则。逐来源独立发布,幂等键为事件类型+客户+来源入仓单;未齐来源保留未完成和中文审计,不影响同车另一已全签来源。事件格式与消费者语义未变,只有确实整来源全签才产生既有事件;国内异常结案不在本轮自行新增。签收完成与整单完成分别验收:来源入仓已签收不跳过仍未履约的有效余量子单。匹配版本部署、逐来源实签/退回重派、事件与接收端核对、失败记录及未关闭验收项统一见测试环境主契约。 + 已核对:Lastleg 卸柜 Relay 的 Repository 还选择了资金指令,不能把它整体改成 Firstleg URL;费用 Relay 只选择费用来源事件。实现时使用明确的事件白名单分派,并测试资金请求不误投 Firstleg。Firstleg 现有直达 Finance 的其他费用链、Order 的既有投递和 RocketMQ 导出/通知不并入本次新路由表,保持现有行为并做受影响回归。 统一目标返回结构为 `ApiResponse`,其中 `DeliveryAck={eventId,payloadHash,outcome}`。`outcome` 只允许 `APPLIED`(已完成消费)、`DUPLICATE`(已成功处理的同一事件)、`STALE`(该类事件明确允许忽略的旧版本)。四个内部消费路径同步修改为这个返回结构,Relay 与全部直接调用者同步更新;当前 Integer/Object/feeSourceId 等响应不作为最终成功判定依据,不引入双响应兼容。 成功必须同时满足:HTTP 2xx、body code 为字符串 `200`、ACK 中 eventId/payloadHash 与发送一致、outcome 为该类事件允许的值。消费端只在可靠提交后返回成功;不能刚入内存或仅保留待处理记录就返回 APPLIED。重复确认必须来自持久化幂等记录;同 eventId 不同 hash 为冲突,不允许覆盖。 -消费处理的原子性按业务实现验证:普通消费者将业务变更与成功幂等记录同事务提交;第 0A 批已将资金执行、成功 Inbox 和结果 Outbox 收敛到同一事务,保存结果失败时资金一同回滚;事件身份独立持久化防止重试换内容。保留既有钱包业务幂等键和状态机。测试环境已实测 MySQL 结果提交失败时资金、流水及结果回滚,原事件重试后仅冻结一次;首次执行并发同 hash/异 hash 也已验证。资金执行中途故障仍缺对应真实证据。 +消费处理的原子性按业务实现验证:普通消费者将业务变更与成功幂等记录同事务提交;第0A批已将资金执行、成功Inbox和结果Outbox收敛到同一事务,保存结果失败时资金一同回滚;事件身份独立持久化防止重试换内容。保留既有钱包业务幂等键和状态机。历史记录曾报告MySQL结果提交失败回滚、原事件恢复及首次同/异hash并发已测,但本轮定向追溯未定位这些场景的原始证据,历史结论本身不能计作可复核关闭;见reports/wallet-0a-original-evidence-trace-20261005-r1.json。结果提交失败与原事件恢复现已由本轮新合法样本补证,见本文件开头wallet-result-commit证据;首次同/异hash并发也已由本文件开头的独立真实锁等待场景补证关闭。2026-10-05又完成账户更新/hold插入后、流水插入前的真实中途故障、完整回滚及原事件唯一冻结恢复,原始证明见本文件开头的限定钱包场景;不以此替代其他故障分支。 特别约定:资金指令的投递成功不等于冻结/扣款成功。Finance 必须可靠保存 SUCCEEDED 或 FAILED 业务结果及结果 Outbox 后确认该指令已消费,Lastleg 以 `WalletCommandCompleted` 更新业务状态。余额不足等已形成 FAILED 结果的指令不进行无意义的传输重试;成功扣款后结果发送失败,只重试原结果事件,不能再次生成扣款指令。 @@ -82,6 +127,12 @@ ### C. 统一认证和会话撤销矩阵 +2026-10-04 本机海外PDA真实登录与仓绑定通过,但个人中心主动退出未发起 `/auth/logout`,仅清本地会话;该项不满足服务端撤销要求。原始网络证据和独立账号停用清理保留。最小修复b247b0c已提交且TEST H5发布,正常撤销、明确401单次刷新、在飞刷新与新登录隔离的42项定向及192项全量Node通过;新版真实UI及旧Access/Refresh拒绝仍待验证,不能以返回登录页证明凭据失效。详细版本与证据见测试环境主契约。 + +2026-10-04 Admin 实际页面退出返回401、清本地后原Refresh仍可刷新,说明过期Access的退出路径未完成服务端撤销。Admin `d3a2671` 经 #509匹配发布:本地状态先清除,只有明确HTTP401或已移除过期Access时,才用捕获的原Refresh刷新一次并撤销新签发的同一会话凭据;该结果不写回登录存储、不加载权限,也不覆盖后续新登录;网络/503未知结果不自动重试。6项红灯后32项定向、299文件2392项全量及类型/build通过。已确认部署及实际auth分块;#509 普通页面退出已实际取得一次 POST200、登录页恢复及会话清理证据,自然过期401分支仍未取得新版真实运行证据。原失败和人工刷新撤销结果保留,具体证据见测试环境主契约。 + +2026-10-02 Admin r4 已取得密码重置多会话撤销、角色权限清空、账号停用、PDA 仓绑定变更与取消 PDA 身份后访问拒绝的真实 HTTP 证据,旧 Access 与旧 Refresh 均分别核对。目标装柜事件的 ACK 丢失、DEAD、原事件 retry、单次消费及配置恢复也在同轮重新验证;运行报告、版本和其余未覆盖边界统一见[测试环境单机部署与配置契约的 Admin 全量 HTTP 复核](测试环境单机部署与配置契约.md#admin-全量-http-复核2026-10-02尚未全绿),不据此关闭下表全部矩阵。 + Auth 是唯一签发者;Gateway 负责入口令牌与访问域校验,业务服务通过 common-security 校验同一会话及业务权限。统一使用 Auth 现有国内会话协议,不只调整海外 Audience。Auth、Gateway、Lastleg、Warehouse Overseas 必须使用一致 Redis DB、会话键前缀、序列化结构与有效期规则;业务缓存用独立前缀,不能混同会话键。 JWT 不携带角色或权限集合,只保留必要身份、客户/应用/仓绑定与版本声明;授权快照取服务端会话,平台/客户/PDA 访问域仍独立校验。客户端不能从 JWT 或外部伪造头获得绕过服务器权限检查的能力。 @@ -106,6 +157,12 @@ JWT 不携带角色或权限集合,只保留必要身份、客户/应用/仓 必须覆盖 Redis 不可用、Auth 撤销调用超时、账号/客户停用后的刷新、跨客户 Token 混用、伪造身份头。业务服务不能仅信任浏览器提供的权限头;统一服务端认证后清除对原海外可信头及 Lastleg 安全投影的专用依赖。权限继续由服务器决定,客户端快照只用于显示。 +卸柜反向投递补证:`OverseasContainerUnloaded` 已通过本轮指定原事件的 ACK 丢失、重试耗尽、人工恢复及重复消费确认,Lastleg 原镜像/有效配置、健康与代理关闭已核对,库存及 Firstleg 柜回写事实不变。原始失败、工具修正、独立故障通过与整轮仍失败的范围统一见[卸柜反向事件故障验收](测试环境单机部署与配置契约.md#卸柜反向事件故障验收2026-10-02);不能据此关闭签收完成事件或其余故障矩阵。 + +2026-10-03 费用作废另有独立真实证据:BusinessFeeSourceChanged/VOIDED在未出账应收来源验证首次APPLIED后ACK丢失、12次失败DEAD及原事件人工retry后DUPLICATE/PUBLISHED;Finance只作废一次,Lastleg只在匹配ACK后确认。人工retry与逐次投递统一使用UTC,避免默认时区造成恢复排期延迟。共用修复d93185e7已发布Firstleg/Finance/Lastleg,真实范围、恢复指纹及首轮失败保留见[部署契约](测试环境单机部署与配置契约.md)。 + +2026-10-03 签收回写另有独立真实证据:`OverseasDeliveryCompleted` 在退税FBA根先签完整链中验证首次APPLIED后ACK丢失、12次失败到DEAD、同原eventId/hash/信封人工retry及DUPLICATE/PUBLISHED;Firstleg入仓、Order根/子状态及历史、完成事件和完整库存未重复变化。首片根单等待余量,第二片正常签收后根/子才均COMPLETED。Lastleg原镜像、完整配置/网络指纹、健康及代理关闭均已核对,运行报告与初次脚本失败保留规则见[部署契约当前验收证据](测试环境单机部署与配置契约.md)。这项证据不覆盖费用作废、全部摘要冲突或事务中途故障回滚。 + ## 业务归属与权限边界 平台和客户两级模型、服务端客户隔离、实际收货仓与 FBA 目的仓的区分继续有效。仓管绑定修改须撤销会话;无关平台角色不能通过客户端参数假冒仓绑定。统一认证后,不再用双区域安全投影作为权限来源。 @@ -122,3 +179,6 @@ JWT 不携带角色或权限集合,只保留必要身份、客户/应用/仓 - FBA 目的仓同样只以国内 `warehouse-service` 的平台公共主数据为权威,但语义与海外实际收货仓严格分离:Admin 候选使用 `warehouseType=FBA&status=ACTIVE` 的平台仓库分页;Lastleg 写入通过受内部服务令牌保护的 `/internal/warehouses/0/{warehouseId}/active` 读取当前事实,并继续校验 `warehouseType=FBA` 及 ID/编码/名称一致。`OVERSEAS`、`OVERSEAS_PARTNER` 或 `DOMESTIC` 均不得作为 FBA 目的仓。 - 按 FBA 仓拆分的海外派送单在签收完成时,由 Lastleg 在同一事务按关联来源入仓单分别写 `OverseasDeliveryCompleted` V1 Outbox;Lastleg Relay 直接投递 Firstleg 的 `/internal/firstleg/v1/container-events`。Firstleg 校验事件信封、客户、来源入仓单/订单、入仓码和 FBA 仓后,只将该来源入仓单从 `LOADED` 推进到 `DELIVERED`;同一 Order 的全部有效入仓单均为 `DELIVERED` 后,才以内部服务身份幂等推进该 Order 到 `COMPLETED`。同车其他 FBA 派送单必须各自签收,不得随整车一起完成。 +- 签收本地时间使用服务执行时区转换为事件的 UTC `completedAt`,信封 `occurredAt` 与其为同一时刻;Firstleg 完成时间及状态历史按该事件 UTC 时刻保存。不得将本地 `LocalDateTime` 直接解释为 UTC。来源完成审计同时核对实际签收数量、事件标识与载荷摘要、目标投递 ACK、接收端 Inbox 和完成历史;Outbox 数量检查不能替代完整接收端核对。 + +