优化
This commit is contained in:
@@ -14,9 +14,12 @@
|
|||||||
- [国内货柜履约](国内货柜履约/README.md):分柜与同柜、智能排柜、订舱、拖车、PDA 拣货、装柜、报关和国内出仓。
|
- [国内货柜履约](国内货柜履约/README.md):分柜与同柜、智能排柜、订舱、拖车、PDA 拣货、装柜、报关和国内出仓。
|
||||||
- [船期日历功能规划](国内货柜履约/船期日历功能规划.md):渠道、周模板、单次船期、收货截止时间和按渠道货量统计的独立日历规划。
|
- [船期日历功能规划](国内货柜履约/船期日历功能规划.md):渠道、周模板、单次船期、收货截止时间和按渠道货量统计的独立日历规划。
|
||||||
- [海外仓业务](海外仓业务/README.md):船节点、海外接柜、入仓、库存、托盘、换标、转运、废弃、退货、排车、PDA 出库、派送、异常退回、客户回访、一件代发及海外本土业务。
|
- [海外仓业务](海外仓业务/README.md):船节点、海外接柜、入仓、库存、托盘、换标、转运、废弃、退货、排车、PDA 出库、派送、异常退回、客户回访、一件代发及海外本土业务。
|
||||||
|
- [排车流程修复规划](海外仓业务/排车流程修复规划.md):取消释放、派送状态、换标全托、合托来源和前端草稿的修复边界、分工及回归要求。
|
||||||
- [采购订单样品履约流程变更需求](海外仓业务/采购订单样品履约流程变更需求.md):采购样品购买、装箱、面单、交寄、国内核费与寄客户的变更入口。
|
- [采购订单样品履约流程变更需求](海外仓业务/采购订单样品履约流程变更需求.md):采购样品购买、装箱、面单、交寄、国内核费与寄客户的变更入口。
|
||||||
- [船节点标准化契约](海外仓业务/船节点标准化契约.md):统一船司原始状态、标准节点、预计/实际时间、异常事实、还柜停止规则和新增船司接入门禁。
|
- [船节点标准化契约](海外仓业务/船节点标准化契约.md):统一船司原始状态、标准节点、预计/实际时间、异常事实、还柜停止规则和新增船司接入门禁。
|
||||||
- [美国预约管理统一总览与优化方案](海外仓业务/美国预约管理统一总览与优化方案.md):美国段各类预约的范围、关联关系、表单精简及分步实施建议。
|
- [美国预约管理统一总览与优化方案](海外仓业务/美国预约管理统一总览与优化方案.md):美国段各类预约的范围、关联关系、表单精简及分步实施建议。
|
||||||
|
- [预约工作日历 V13 变更说明](海外仓业务/预约工作日历V13变更说明.md):多客户共车、分批后送、改期取消、重新预约和未定日期跟进的正式业务规则与验收场景。
|
||||||
|
- [预约工作日历开发协作契约](海外仓业务/预约工作日历开发协作契约.md):工作日历与完整待办的接口、数据归属和开发文件边界。
|
||||||
- [预约送仓](海外仓业务/README.md#预约送仓):预约日历与跨客户同仓预约入口。
|
- [预约送仓](海外仓业务/README.md#预约送仓):预约日历与跨客户同仓预约入口。
|
||||||
- [车辆管理原型梳理与任务规划](海外仓业务/车辆管理原型梳理与任务规划.md):司机资质、车次、自有/外接承运、运维与报价的范围及契约入口。
|
- [车辆管理原型梳理与任务规划](海外仓业务/车辆管理原型梳理与任务规划.md):司机资质、车次、自有/外接承运、运维与报价的范围及契约入口。
|
||||||
- [内部拼车需求池首版开发契约](海外仓业务/内部拼车需求池首版开发契约.md):车次余位发布、销售意向、承运占位、本土订单关联及我仓上车流程。
|
- [内部拼车需求池首版开发契约](海外仓业务/内部拼车需求池首版开发契约.md):车次余位发布、销售意向、承运占位、本土订单关联及我仓上车流程。
|
||||||
@@ -60,7 +63,7 @@
|
|||||||
## 环境协作
|
## 环境协作
|
||||||
|
|
||||||
- [开发环境独立任务协作登记](开发环境独立任务协作登记.md):开发环境全流程总控与长期专项的稳定任务、职责及开发数据库/部署/HTTP 授权。
|
- [开发环境独立任务协作登记](开发环境独立任务协作登记.md):开发环境全流程总控与长期专项的稳定任务、职责及开发数据库/部署/HTTP 授权。
|
||||||
- [测试环境独立任务协作登记](独立任务协作登记.md):登记已清空,任务由用户手动管理。
|
- [测试环境独立任务协作登记](独立任务协作登记.md):测试环境独立任务的稳定身份、职责和协作边界。
|
||||||
- [测试任务盘点与需求台账](测试任务盘点与需求台账.md):历史任务快照、未闭环需求、提交线索和待核实证据,不作为当前调度依据。
|
- [测试任务盘点与需求台账](测试任务盘点与需求台账.md):历史任务快照、未闭环需求、提交线索和待核实证据,不作为当前调度依据。
|
||||||
|
|
||||||
## 参考资料
|
## 参考资料
|
||||||
|
|||||||
@@ -70,6 +70,7 @@
|
|||||||
自营专题按任务选择:总览图形/下钻查 `docs/自营业务/经营总览图表设计.md`,库存周转查 `docs/自营业务/库存周转视图设计.md`,采集交互查 `docs/自营业务/数据采集页面设计.md`,查询性能查 `docs/自营业务/领星统计查询性能优化方案.md`,外部接口联调查 `docs/自营业务/领星WMS接口联调手册.md`。架构/表结构不明时从 `docs/自营业务/README.md` 定位一期方案,不默认同时读取所有专题。
|
自营专题按任务选择:总览图形/下钻查 `docs/自营业务/经营总览图表设计.md`,库存周转查 `docs/自营业务/库存周转视图设计.md`,采集交互查 `docs/自营业务/数据采集页面设计.md`,查询性能查 `docs/自营业务/领星统计查询性能优化方案.md`,外部接口联调查 `docs/自营业务/领星WMS接口联调手册.md`。架构/表结构不明时从 `docs/自营业务/README.md` 定位一期方案,不默认同时读取所有专题。
|
||||||
|
|
||||||
美国各类预约统一总览、提柜/用车/送仓预约梳理:`docs/海外仓业务/美国预约管理统一总览与优化方案.md`(设计建议);实际维护仍按下述来源模块进入。
|
美国各类预约统一总览、提柜/用车/送仓预约梳理:`docs/海外仓业务/美国预约管理统一总览与优化方案.md`(设计建议);实际维护仍按下述来源模块进入。
|
||||||
|
预约工作日历、多客户共车、中转分批后送、改期取消、重新预约和未定日期事项:先读 `docs/海外仓业务/预约工作日历V13变更说明.md`(正式业务规则与验收),再读 `docs/海外仓业务/预约工作日历开发协作契约.md`(接口与文件边界);权威业务事实仍由下述来源模块维护。
|
||||||
|
|
||||||
预约管理、预约列表、跨客户同仓送仓:Admin `apps/admin-web/src/modules/appointment-calendar/`,规则见 `docs/海外仓业务/README.md` 的“预约送仓”;送仓记录沿 Lastleg `inboundplan/`,到港沿 Firstleg `portschedule/`,区别于订舱级拖车预约。
|
预约管理、预约列表、跨客户同仓送仓:Admin `apps/admin-web/src/modules/appointment-calendar/`,规则见 `docs/海外仓业务/README.md` 的“预约送仓”;送仓记录沿 Lastleg `inboundplan/`,到港沿 Firstleg `portschedule/`,区别于订舱级拖车预约。
|
||||||
|
|
||||||
@@ -117,7 +118,7 @@
|
|||||||
| 车辆管理、司机证照、保养加油、车辆维修/故障/救援/异常、外接货与车次 | `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` |
|
| 车辆管理、司机证照、保养加油、车辆维修/故障/救援/异常、外接货与车次 | `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/海外仓业务/内部拼车需求池首版开发契约.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` 平台技术范围,不携带或校验客户 |
|
| 国内出仓后船节点 | `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` |
|
| 海外出库、排车、派送、异常与回访 | 当前海外履约契约;缺陷修复边界查[排车流程修复规划](海外仓业务/排车流程修复规划.md) | 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 仍只读取获准客户财务 |
|
| 海外业务费用来源与客户财务 | 当前实现查财务契约与统一认证与服务通信契约;阶段 0A—0E 开发再读 `docs/财务管理/海外仓费用统一接入阶段0技术契约.md` | 当前 V1 由 `lastleg-service/financefee/` 校验海外入仓、采购、美国卡车、本土散板和海外仓服务费,通过完整快照和 Outbox 直接投递 Finance 内部入口入池;阶段 0 目标改为收费身份/候选版本、Finance 接受或拒绝结果事件及版本化资金计划。必须沿代码确认落地范围,不把技术契约当成已实现状态;Client 仍只读取获准客户财务 |
|
||||||
|
|
||||||
散货托盘码生成、打印与跨区传递:Admin `modules/loading-lists/components/PalletLabelPrintDialog.vue`;Firstleg `LoadingPalletLabelService`、`LoadingCompletedOutboxService`;Lastleg `LastlegSourcePalletMapper`、`InboundPlanService`。从各项目最近指引继续定位;散货 FBA 标签与一件代发实装托盘分别取各自冻结事实。
|
散货托盘码生成、打印与跨区传递:Admin `modules/loading-lists/components/PalletLabelPrintDialog.vue`;Firstleg `LoadingPalletLabelService`、`LoadingCompletedOutboxService`;Lastleg `LastlegSourcePalletMapper`、`InboundPlanService`。从各项目最近指引继续定位;散货 FBA 标签与一件代发实装托盘分别取各自冻结事实。
|
||||||
|
|||||||
@@ -1,5 +1,240 @@
|
|||||||
# 测试环境单机部署与配置契约
|
# 测试环境单机部署与配置契约
|
||||||
|
|
||||||
|
## 随机数量演示批次D1681准备(2026-10-19)
|
||||||
|
|
||||||
|
用户随后要求沿用流程、随机调整数量,选定12箱4托、每托3箱,现场演示9箱首批与3箱后批。此前D1680已实收入库,因此保留不改;本次通过正式TEST业务接口另建柜次 `D1681`、柜号 `TSTU2713380`、入仓码 `NYEXX2610190002`、国内订单 `FL2112001474456780802`、尾程订单 `FL-WH-20261019-328883`、海外入库单 `IP-ABE4-20261019-724033`。客户为IT测试公司,路线US-LAX-01洛杉矶仓至ABE4;4个真实托盘为 `D1681-126-001` 至 `D1681-126-004`,各3箱,已完成海外入库。货物核实、预约、9+3分批、排车、车次均留给现场;首批拟选择前三托,后批保留第四托。
|
||||||
|
|
||||||
|
7项只读核验通过,覆盖来源无预约、12箱零分配、4个符合候选条件的托盘、入库完成、未分配送仓事项、未定日期及柜号搜索。前两轮日历查询为同步守卫A0409,随后自动同步收敛,未人工同步或修改环境。请求审计为46次非认证业务写入,预约/排车/车次创建与删除均0次;D1680、D1674及原两箱样本未写入。本轮专用PDA账号已停用,自有会话已退出;无SQL、部署或发布。
|
||||||
|
|
||||||
|
证据为后端 `reports/appointment-leader-demo-random-20261019/` 的 `report.json`、`commands.json`、`requests.jsonl`,以及根目录 `.codex-temp/appointment-leader-demo-random-20261019-verified.json`,初次同步守卫证据另存 `appointment-leader-demo-random-20261019-first-check.json`。新指南为 `outputs/预约分批排车演示操作指南-D1681-20261019.docx`,4页实际Word渲染已逐页检查;演示从搜索TSTU2713380开始,车辆司机按现场最新可用资格选择。原D1680指南保留供其原批次使用,本次采用D1681指南;真实页面操作预期未冒充人工验收完成。
|
||||||
|
|
||||||
|
## 预约分批排车新演示批次准备(2026-10-19)
|
||||||
|
|
||||||
|
用户授权追加一批演示数据并生成操作文档。新样本为柜次 `D1680`、柜号 `TSTU6094577`、入仓码 `NYEXX2610190001`、国内订单 `FL2111986044623192066`、尾程订单 `FL-WH-20261019-218403`、海外入库单 `IP-ABE4-20261019-626049`;客户为IT测试公司,路线为US-LAX-01洛杉矶仓至ABE4。6箱已完成海外入库,落在3个真实托盘 `D1680-126-001`、`D1680-126-002`、`D1680-126-003`,每托2箱。货物核实、创建预约、4+2分批、确认首批、排车和安排车次均留给现场演示,准备结束时未创建预约、排车单或车次。
|
||||||
|
|
||||||
|
7项只读检查通过:来源保留且无预约、6箱零分配、3托合计6箱符合候选条件、海外入库完成、存在未分配送仓事项、未定日期可见、柜号搜索可定位。首轮日历查询曾遇同步守卫,随后只读重查自然收敛;不据此宣称同步问题已修复。通过正式业务接口仅准备本轮新样本,未执行SQL、删除、重置或发布,未修改旧批次D1674及D1672;本轮专用PDA账号已停用,自有认证会话已退出。
|
||||||
|
|
||||||
|
证据为后端 `reports/appointment-leader-demo-20261019/` 的 `report.json`、`commands.json`、`requests.jsonl` 及根目录 `.codex-temp/appointment-leader-demo-20261019-verified.json`。4页操作指南为 `outputs/预约分批排车演示操作指南-D1680-20261019.docx`,已逐页检查实际Word渲染;内容包括业务编号、4+2分批、两托排车及刷新后沿用已创建排车单。车辆、司机候选仅只读核对资格,未预占资源;人工页面演示尚未执行。
|
||||||
|
|
||||||
|
## 刷新后沿用原排车单 TEST Admin 补修(2026-10-19,已发布,只读验证通过)
|
||||||
|
|
||||||
|
用户明确授权补齐刷新后的用车续办、沿用 `DS-WH-20261018-861762`,提交并发布 TEST Admin,禁止重复创建或修改演示数据。本批精确提交推送 `4bb21641d92fade390fe633d2445e2b14dc6de28`,共5个预约组件、直接测试及矩阵文件;工作区原7处未提交调整保持。
|
||||||
|
|
||||||
|
用车表单现在先读取当前批次 `appointment-receiving/batches/{batchKey}` 的运输关系,恢复已有排车单,再通过原排车详情的 `appointmentBatches` 精确核对批次与客户。原单继续进入既有安排车次弹框,已有车次则查看原车次;多批共用同一排车单只读取、展示一次。关系读取失败、批次/客户不匹配或原单取消时不回退新建。只有用户明确选择核对本批剩余实物并且原单校验成功后,才读取当前剩余候选;仍保留原服务端资格、锁及版本校验。没有新增API、SQL、后端、权限或路由配置变更。
|
||||||
|
|
||||||
|
Jenkins `admin-web-test #634` 固定上述提交发布 SUCCESS,实际检出一致。当前Admin容器为 `admin-web-test:4bb21641d92f`、`running / healthy`,镜像ID `sha256:991b1f85b70adf1ee00cd4c080d5b8c699b95aac94c33c9e8ee130dda3aebab9`。公网510个HTML、运行配置及JS/CSS文件与容器逐项SHA-256一致,修复代码标记存在,健康/预约/排车列表三个入口HTTP 200。临时Job锁定配置已恢复且完整XML语义匹配发布前;Lastleg仍为 `45fbd6eff8dd`,镜像和健康核对未变。
|
||||||
|
|
||||||
|
最终暂存区候选37项定向检查通过,包含真实TEST只读关联快照在本地组件中重挂载两次、原DS显示、原起运仓和DS传入安排车次弹框、查看原单跳转,以及未调用候选/草稿/锁托盘/新建请求的断言。类型检查、构建及5项Gateway合同通过。本轮工作区全量3363项通过、2项失败,仍为此前调拨输入提示和尾程详情页签的非预约合同;最终资格联动补充经过上述定向检查,不宣称全量绿灯。
|
||||||
|
|
||||||
|
发布后13项只读检查全部通过,包括批次运输关系中仍存在指定DS、原单仍持有精确批次与客户、工作摘要/10月日历/柜搜索/批次定位/目标用车事项可读、样本不变及自有会话退出。演示预约 `AP-20261018-33014AE768F9` 与原DS完整响应的SHA-256前后保持 `16a2a486981de2f87e7ad7f0aabbdf27f402a785f52327b6ca52a693c02c384c`、`e0b316e049df6a81a5fd10147498c2ef3c90176d794fd1894b98084ca0e3c6c1`。发布后真实关联快照再经本地组件验证通过1项:刷新后仍恢复该DS,打开安排车次时绑定该DS和原起运仓,创建相关请求0次。HTTP仅GET及自身认证登录/退出,业务写入0;未确认车次、重建排车、修改托盘/预约或操作原两箱样本。
|
||||||
|
|
||||||
|
真实浏览器交互和1920×1080、100%缩放截图仍待人工确认,本地组件加载真实只读快照不冒充真实页面点击验收。续办路径为刷新预约页、打开4箱送仓事项、点击“继续安排本批车辆”、在“沿用本批已有排车单”中核对原DS,再点击原DS行的同名按钮进入安排车次;不点击创建排车或剩余实物入口。证据位于Admin `.logs/appointment-dispatch-resume-20261019/`:`source-manifest.json`、`release-state.json`、`jenkins-build.json`、`public-runtime-verification.json`、`smoke-before.json`、`smoke-after.json`、`resume-fixture-after.json`、`LiveResume.test.ts`。
|
||||||
|
|
||||||
|
## 预约三项修复 TEST Admin 发布(2026-10-18,已发布,只读烟测通过)
|
||||||
|
|
||||||
|
用户在 Bug 处理对话明确授权提交本次预约修复、部署到 TEST Admin 并做必要验证,演示数据保持。Admin 精确提交并推送 `67d917010dff0bbbea42059e3d6075645bb1c889`,共9文件;只包含同步等待读取、缓存预约页弹框随停用移除、送仓到用车事项续办资格判断及直接回归/矩阵,不包含工作区前序未提交的表格、搜索、样式、自营等调整,原7处未提交修改保留。
|
||||||
|
|
||||||
|
Jenkins `admin-web-test #633` 固定上述提交发布 SUCCESS,实际检出提交一致。运行容器 `admin-web-test:67d917010dff` 为 `running / healthy`,镜像 ID 为 `sha256:7e72bb425f8947be88f34089de2dabb198b707f0ca7ef944b88cc7a967618689`。公网510个 HTML、运行配置、JS/CSS资源与容器文件逐项SHA-256一致,包含本次预约修复代码;健康入口、预约页、排车列表路由均HTTP 200。临时锁定提交的Job配置已恢复,完整XML节点语义与发布前一致。Lastleg仍为 `45fbd6eff8dd` 且镜像/健康核对未变,本轮无后端、SQL、Nacos、权限或路由配置发布。
|
||||||
|
|
||||||
|
本地直接从Git暂存区加载精确候选的5个测试文件47项通过,Gateway路由合同5项通过,工作区类型检查通过;Jenkins按精确提交完成类型检查及生产构建。此前工作区全量为3356项通过、2项非预约合同失败(调拨实收数量输入缺提示、尾程详情页签内容合同),本轮未改动相关页面或宣称全量绿灯。
|
||||||
|
|
||||||
|
发布后按单请求流经Admin同源统一Gateway只读核对:工作摘要、2026年10月日历、领导演示柜搜索、已存在预约批次定位、目标用车事项最新资格均HTTP 200/业务200;送仓下一步为“继续安排本批车辆”,目标确为可读取的TRANSPORT事项。演示预约 `AP-20261018-33014AE768F9` 与排车单 `DS-WH-20261018-861762` 的完整业务响应在发布前后SHA-256分别保持 `16a2a486981de2f87e7ad7f0aabbdf27f402a785f52327b6ca52a693c02c384c`、`e0b316e049df6a81a5fd10147498c2ef3c90176d794fd1894b98084ca0e3c6c1`。验证只创建并退出自己的认证会话,业务写入0;未重建、保存、分批、配车、重置或修改任何演示数据,原两箱样本未操作。
|
||||||
|
|
||||||
|
边界:本轮不重演写操作,不人为制造同步守卫变化;同步等待/超限与跨事项资格、弹层停用/恢复由离线回归覆盖。服务端完整工作清单同步机制保持,前端只对明确的同步守卫重读GET,间隔2秒、累计等待最多30秒,超限显示原错误。真实页面的保存后续办、查看排车单弹窗关闭、继续配车三项仍待用户在1920×1080、100%缩放下人工操作确认,不以资源/HTTP验证代替。证据位于Admin `.logs/appointment-repair-release-20261018/` 的 `source-manifest.json`、`release-state.json`、`jenkins-build.json`、`public-runtime-verification.json`、`smoke-before.json`、`smoke-after.json`。
|
||||||
|
|
||||||
|
## 排车修复 TEST 提交、发布与验收(2026-10-18,已发布,定向接口验收及独立复核完成)
|
||||||
|
|
||||||
|
该排车修复批次发布版本为 Lastleg #360/`45fbd6eff8ddc81e8a0da91b5719ce4c38c1061e` 与 Admin #632/`a5a19769244f51ca58ca0da8a637dc5d413b6aab`,实际镜像均已核对且健康;后续Admin更新见上节预约修复记录。#360 为 3098 项通过、9 项跳过、零失败;本次增量无新增 SQL。定向接口验收及第三对话独立复核均通过,当前冻结代码与已执行范围内无已知未关闭业务阻断。完整逐项证据、哈希及边界见后端 `lastleg-service/target/dispatch-repair-final-acceptance-matrix.json`。基础取消、出库、全托及原箱场景实测于 `db4354b`,最新 `45fbd6e` 实际重验 DR04;未把未重跑场景写成均在最新版本重新执行。
|
||||||
|
|
||||||
|
用户在排车规划对话明确授权提交本批代码、部署并验收,执行分工见[独立任务协作登记](独立任务协作登记.md)的排车修复条目。范围为 Lastleg 与 Admin 的匹配版本,不包含生产环境、其他服务、Nacos 或 IAM 配置。原后端 60 文件与脚本消费者 4 文件先精确提交并推送 `aa33514ec6b896e0e1a8b87b4e5ee0f21b3e9c38`,提交门禁 28 项通过。其 CI #358 全量失败后,已审 3 文件补正精确提交为 `db4354bda8fd48756192f02095d1f390140f1148`,Lastleg 生产源码树保持原已审候选。正式流水线 #359 固定新提交、`SKIP_TESTS=false`、`DEPLOY=true`,已 SUCCESS;实际 checkout、镜像版本和运行容器 `running / healthy` 已由独立对话核对。
|
||||||
|
|
||||||
|
Admin 在保留其他窗口未提交修改后同步现有线上基线 `4806f88`,精确提交并推送本批 29 文件 `a5a19769244f51ca58ca0da8a637dc5d413b6aab`,同步后的构建与路由合同通过;独立复核确认提交范围和内容一致,其他 7 处未提交修改未纳入。确认 Lastleg 实际版本、健康及 Schema 后,Admin TEST #632 固定该提交发布 SUCCESS,运行容器 healthy;公网 510 个静态资源与容器文件逐项哈希一致,健康入口及 3 个页面路由 HTTP 200。临时固定提交的 Jenkins 配置已恢复,独立复核确认 40 个配置节点语义与原配置一致。
|
||||||
|
|
||||||
|
发布后通过 Admin 同源统一 Gateway 的小分页只读烟测已独立复核 PASS:真实排车 `actions`、阻断字段及出库关联,派送字符串版本、`MARK_RETURN` 和普通来源 `lastMileOrderId` 符合契约;未登录返回 401,客户访问平台域返回 403。报告保留 48 条检查,其中 47 条通过;首轮 1 条会话撤销检查误用了平台域路径,已由客户自身资料接口退出前 200、退出后 401 的补验关闭,未关闭失败为 0。测试自己的平台/客户会话均退出,无业务数据写入。证据为 Admin `.logs/dispatch-repair-test-release-20261018/readonly-http-smoke.json`。受限平台只读角色、原箱来源和业务写入链、人工视觉尚未由该烟测验证。
|
||||||
|
|
||||||
|
发布前只读核验发现 TEST `baiyue_lastleg` 缺少本批原箱回仓结构。用户明确授权固定 SQL 后,后端已执行 `lastleg-service/target/dispatch-repair-test-schema-20261018.sql`(SHA-256 `0d016752bac700d67de943e82a03db50853986c5dc3efa35f178ca8eb3ab0f6b`),MySQL 退出 0:`ll_exception_return_item` 的库存位置可空、原箱两列、唯一键和来源互斥 CHECK 已就位;新增 `ll_return_carton_stock_receipt` 的 24 列、4 组索引及数量约束均核验通过。原有 48 条退回明细逐行内容哈希执行前后均为 `d98fba5821aea9855a778041d02d8b78690bd7adb11332cf7a5bb5fdfb30801a`,新凭据表在结构验收时为 0 行,无业务 DML、删除、重置或空库基线重放。回执及结构证据分别为后端 `lastleg-service/target/dispatch-repair-sql-execution-20261018.json`、`dispatch-repair-sql-schema-verified.json`。结构前置已关闭,并经独立复核;后续 Lastleg #359 已完成匹配版本发布,不重复执行该 SQL。
|
||||||
|
|
||||||
|
CI #358 全量测试发现新增表后空库基线末尾表数声明未更新,以及旧退货出库持久化测试夹具缺少新表;未生成可发布镜像或替换容器。后端已修正并保留原断言,16 项 Java 与 121 项 Node 检查通过,SQL 表数、SQL README、持久化夹具这 3 文件经独立复核后形成上述 `db4354b`。专项验收助手另 3 文件曾因本轮样本身份绑定、混托独立对照和原箱逐 SKU 恢复/重放断言不足退回补正;R3 已完成独立复审 PASS,35 项助手测试及连同相邻合同共 135 项通过。首次原箱回库须同时验证总量、可见可用量及箱数恢复,并保留凭据、流水及同键重放零增量;旧业务号、重复混托样本、错误报价和库存恢复遗漏均有失败反例。原 6 文件清单 `lastleg-service/target/dispatch-repair-release-followup-candidate.json`(SHA-256 `2fd749d47a0787d1194054c9e602c653411b99533e8b762106a6c05e43159f02`)仅记录早期候选,不能作为 R3 冻结版本使用。
|
||||||
|
|
||||||
|
既有本地证据为后端 345/345(含独立组合场景 9 项)、前端受影响模块 905 项及最后合同增量 40 项和构建通过,脚本相邻、入口、文档合同分别 96、74、4 项通过;Lastleg #359 全量 CI 为 3091 项通过、9 项跳过、0 失败。这些测试集有包含或复跑关系,不相加为总用例数。验收助手 R3 的 3 文件已精确提交推送 `4bef8577fac11bc5be80e13e38687f613e88d98d`;运行中发现客户换标摘要不返回 `customerId`,R4 改从同会话客户资料回执核对归属并保留原箱父来源、显式客户和仓库冲突校验,137 项检查及独立定点复审 PASS。该脚本补正不改变已部署服务源码。
|
||||||
|
|
||||||
|
发布后以本轮正式 API 新建合成样本,以下四项已完成独立环境复核 PASS:普通来货转派送后取消出库、取消原排车并重排,原排车/出库/派送均为 `CANCELLED`,新排车保留同一物理托盘及 2 箱,旧转派送键仍返回原取消出库;锁表旧锁为 `RELEASED`、`active_key=null`,同一来源唯一活动锁归新排车。随后重复取消旧出库与旧排车,新排车及锁、费用身份/版本/金额/时间均不变,已发布 `VOIDED` 事件前后各仅 1 条。USD 0.01 派送费用为 `VOIDED/CONFIRMED`,证明 Lastleg 已收到 Finance 成功 ACK。状态和费用证据为后端 `reports/dispatch-repair-DR-CANCEL-20261018111401-123033` 及同前缀 `-state-audit`、`-finance-audit`;锁与流水见 `lastleg-service/target/dispatch-repair-current-sample-db-audit.json`,重复取消见 `dispatch-repair-repeat-cancel-verified.json`。
|
||||||
|
|
||||||
|
独立发车样本首次与同键重放均实发 2 箱、发车时间不变,重放标记为真;发车后取消出库被 `A0409` 拒绝,手工取消派送被 `A0400` 拒绝,出库仍为 `OUTBOUNDED`、派送仍为 `WAIT_DELIVERY` 且版本 0。只读持久化证据确认仅一条 2 箱拣货记录、一条 SHIP 流水 `2→0`(−2),无重复扣减或补偿抵消,当前仓位与余额的可用/占用/已拣数量均为 0。报告见 `reports/dispatch-repair-DR-DEPART-20261018111749-03557e`,与上述 DB 审计共同组成发车门禁及重放 PASS。
|
||||||
|
|
||||||
|
原箱样本通过正式签收、清点、卡车换标、组托、转派送和模拟发车后,原生无普通入仓关联的单箱单 SKU 回仓已独立复核 PASS:总量/可见可用量/箱数从 `0/0/0` 恢复为 `3/3/1`,生成唯一 `EXCEPTION_RETURN_IN` 凭据;同键重放库存、流水、实收时间和目标托盘/库位均不变,派送进入 `RETURNED`,见 `reports/dispatch-repair-DR-NATIVE-20261018112309-799d6e-resume-4/report.json`。多 SKU 原子回滚仍由离线测试覆盖,不能将本单 SKU 环境结果扩写为多 SKU 环境通过。
|
||||||
|
|
||||||
|
退货换标 `RETURN_RELABEL` 两托全选已独立复核 PASS:单托提交返回 `A0409`,申请保持 `READY_FOR_OUTBOUND/WAIT_PRE_DISPATCH` 且两托候选不变;全选后生成一张同两托、共 2 箱的排车。普通库存换标已有独立环境复核 PASS:候选为 `RELABEL_APPLICATION`、`returnCartonSource=false`,单托拒绝后申请及候选快照完全不变,全选同两托、共 2 箱成功,证据为 `reports/dispatch-repair-DR-NORMAL-20261018113924-34c34d-resume-1/report.json`。新建理货员测试账号的出库详情读取成功,取消被 `A0403` 拒绝且记录不变,账号已停用,权限窄范围独立复核 PASS;证据为 `reports/dispatch-repair-DR-NORMAL-20261018113924-34c34d-readonly-permission-resume-1/report.json`。旧脚本中的移托 DELETE 负向操作不在本轮已确认授权内,未照跑整入口;本轮新样本的正式取消状态命令已按授权验收。
|
||||||
|
|
||||||
|
混托实收重新核对发现环境阻断:解除唯一排车后,携带有效实测的 `receipt-confirmation` 返回 `A0409`,要求先重新核对自有货容量计划;空车的容量计划又拒绝提交,新混托排车则被旧实收托盘不一致阻止绑定。该循环不能通过添加无关自有货绕开后认定 PASS。执行方曾使用额外自有货继续测试,已明确其不覆盖原唯一货物场景并保留证据,后续已在解绑该额外货物的同一原样本上复现。初次缺测量负例应保持拒绝,实收重量/体积是该票外接货的份额,不能将混托总量冒充该票测量。
|
||||||
|
|
||||||
|
针对上述循环的 5 文件补丁与助手分组查询 2 文件已独立复审 PASS,并精确提交推送 `45fbd6eff8ddc81e8a0da91b5719ce4c38c1061e`。仅对已有实收凭据、`RECEIVED` 且当前自有货为空的重新核对使用零自有货计算,继续纳入其他有效预留、当前车辆及路线容量;首次实收、缺测量、超容量、来源/版本冲突和非空失效计划仍拒绝。61 项定向 Java、137 项助手相关检查通过;助手按普通/外接真实入仓码分别查询,避免同 SKU 分组代表行漏读,原数量和报价断言保留。Lastleg #360 固定此提交发布成功,运行版本与镜像健康已独立核对;Admin #632 的 7 个相关触点无需改动。
|
||||||
|
|
||||||
|
原唯一货物混托路径发布后独立复核 PASS:重新确认前为 0 自有货且无容量计划,缺测量仍拒绝,原外接本票 `100kg/1m³` 实测重新确认成功,同键重放实收、版本和时间不变,未生成空计划。两车最终各仅绑定本轮原混托排车,两种展示来源均按真实组成核对为普通 2 箱、外接 1 箱,外接报价均为 1 托位 × USD 2;旧失败和绕行报告哈希保留。实际转派送费用链及重放唯一性已独立复核 PASS:每票普通货 USD 0.01、外接约定运费 USD 2,同键重放保留原单和费用行;四个来源与派送、预订及真实入仓码对应,各仅一条 `PUBLISHED` 事件。费用证据为 `reports/dispatch-repair-DR-MIX-20261018113330-a6223a-mixed-transfer-fees/report.json`、`lastleg-service/target/dispatch-repair-mixed-fee-outbox-audit.json`;该结果不扩写为 Finance 对账库或最终结算已验。
|
||||||
|
|
||||||
|
验收边界:并发竞争、多 SKU 原子回滚及部分异常反例仅有离线验证;真实预约分配释放、完整“绑定后解绑→取消”组合链未做环境专项,取消样本无预约分配不能推定该项通过。仓库调拨及退货换标样本不适用 FIRST_LEG 国内完成事件,`sourceEventsVerified=false` 原样保留。DR06 草稿及选择恢复有离线检查,浏览器刷新、失败恢复和展示仍待人工验收;1920×1080、100% 截图、PDA 真机及真实外部预约/POD 凭证均未验收。上述为明确未覆盖范围,不冒充通过,也不作为未知业务阻断。
|
||||||
|
|
||||||
|
收尾:15 个本轮专用测试账号均已逐一回查为停用,当前受控驱动会话正常退出;早期预检有空请求体退出失败(`A0422`),原会话撤销未随后确认,未吊销无关共享账号会话。原始失败、绕行、修复前后报告均保留,业务样本未删除或重置。其他窗口未提交修改未混入本批提交。
|
||||||
|
|
||||||
|
## 生产已提交更新发布执行检查点(2026-10-16,已发布并完成接口验收)
|
||||||
|
|
||||||
|
最终运行:后端固定提交`46d359241f2749eaf31e4253ffff43acd55cb98c`,IAM #12、Firstleg #17、Order #12、File #20、Integration #9、Lastleg #16、Warehouse Overseas #10全部DEPLOY=true/SUCCESS;Admin #28固定提交`eb1d75222acf7ed2d80121bceb2297154d35ed60` SUCCESS。八个生产容器均核对对应镜像且healthy。预构建#30完整门禁报告5,937项、失败0;本地Admin自营模块25文件213项回归通过(本地工作区含其他窗口尚未纳入本批的页面改动,生产版本以固定提交和真实HTTP为准)。现有表4项约束升级于18:57:04执行并读回核验通过,执行回执`target/production-release-existing-ddl-execution.json`;没有删除既有业务记录或复制其他业务数据。
|
||||||
|
|
||||||
|
真实生产接口验收通过:US01/US02经营总览、SKU销量、库存周转、多货主、隐藏零库存、库存立方数降序、周转率升降序及跨页边界;库存周转可见SKU分别2,787/769,30日出库立方数分别371.671006854275/88.366481175 m³(截至10月15日,核验时固定版本)。后台导出任务`EXP2111051110576103425`(SKU631行25列)及`EXP2111051139768459266`(货主2行16列)均一次成功并下载XLSX;前100行与页面接口逐项比较、全表周转率降序、百分比计算和未知值置末验证通过。证据见`target/production-release-acceptance.json`、`target/production-release-export-*-xlsx-proof.json`。没有以接口验收冒称人工页面截图验收。
|
||||||
|
|
||||||
|
19:06—19:09按唯一出口交接:先将TEST Lastleg和Integration配置关闭并同镜像重启,内部运行态确认OFF、executionEnabled/providerEnabled=false、无运行任务及待完成请求,再开启生产同账号BUSINESS持续模式、1200ms、销量发布和60日历史还原。生产双方账号及新独占授权指纹匹配,旧请求计数、冷却和暂停字段保留,没有新增每日额度或时间截止。生产实际库存任务`LXCOL-20261016-0509B18DB81D4C38`于19:09:43成功发布,6页、21秒,发布版本`2111051873929478145`;生产预留/确认请求计数28164/28162,TEST仍28158/28156、无新增请求,两边账号均无暂停。下一次两仓日销量自动计划为北京时间10月17日00:05,库存为08:00;这是已生效配置和计划的核验,尚未等待下一自然定时事件。证据见`target/production-release-handoff-state.json`、`target/production-release-runtime-{test,production}.json`、`target/production-release-collection-status.json`。TEST后续只读使用现存数据,真实领星采集由生产接管。
|
||||||
|
|
||||||
|
用户本轮明确授权生产数据库操作和代码部署,并在范围确认中选择“生产也同步其他已提交改动”;仅发布固定已提交版本,不包含工作区未提交文件。生产 main 受保护,正常 PR 已合并:后端 #27,来源 `9ea03eb5401b15069046b9310097da82a32fd4a8`,合并版本 `59508069241499ac3ac22d3a0c18b0a4af090cb6`;Admin #20,来源 `2705fdbc4983e65f226972e4670efd4f9490edca`,合并版本 `eb1d75222acf7ed2d80121bceb2297154d35ed60`。Admin 初始候选后新增的是对应后端换标/转运单据相关已提交更新,已纳入并冻结。未切换本地分支、创建工作树或修改其他窗口文件。
|
||||||
|
|
||||||
|
生产容器已只读核实,Lastleg/File 仍为 `4dc3d1752e27`,Integration 为 `4825f782a32f`,Admin 为 `545205e28d43`,均健康;实际生产 Nacos namespace 的 SHA256 前12位为 `86f4c523f801`,已核对生产 Lastleg 容器的数据库凭据绑定与本机生产连接指向同一 MySQL 实例。完整10个服务 schema 的结构对照已保存于后端 `target/production-release-schema-diff.json`。TEST 多出的35张表中4张不在冻结提交的当前初始化基线,未按测试存量盲目创建。
|
||||||
|
|
||||||
|
北京时间18:05:48,已执行固定源基线抽取的增量 DDL:新增31张表(Firstleg直送卸货1张,Lastleg自营19张与预约相关11张),给两张现有预约表增加5个可空字段。客户端退出0,尚需最终结构复核;没有删除或改写原业务记录,没有重放整个初始化脚本。此前生产只读计数:柜次14、排车21;预约头/明细/命令三表均0。SQL与执行回执分别在后端 `target/production-release-additive.sql`、`target/production-release-additive-execution.json`,DDL SHA256 `ed6082e8b435ecbc4773af0d5edb0dc12f108100cdc6ca596b2b9ada0e0bd14b`。禁止盲目重跑,先复查已执行结构。
|
||||||
|
|
||||||
|
用户随后明确:除海外仓此次领星数据外,其他业务只更新功能,不迁移数据;如果海外仓迁移受阻可以重新采集。当前仅复制真实自营账号的业务事实、当前发布版本及其采集证据,不复制其他模块业务数据或测试账号、角色、验证样本。18:41:53,16表共1,314,532行复制完成,全部通过逐表计数及全行哈希校验,执行回执 `target/selfop-production-transfer-execution.json` 为COPIED_VERIFIED。之后只读核对US01/US02四个发布指针、事实修订及账号计数仍与TEST一致,两仓各61个历史日头覆盖8月16日至10月15日。禁止盲目重跑。
|
||||||
|
|
||||||
|
18:10:35已执行10项新增功能权限及平台管理员授权,并更新关联权限版本、补预约工作guard种子;执行回执 `target/production-release-permissions-execution.json`。生产Nacos已按字段准备Lastleg自营、Integration领星凭据及File导出注册;采集仍为OFF,未启用出口,原配置在生产主机受限目录保存。凭据只在内存和对应受控配置间传递,未写源码或本机证据。另4项现有表约束升级SQL已准备,尚未执行,需在对应服务发布前复核前提。
|
||||||
|
|
||||||
|
Jenkins `backend-java-prod #28` 因车次合同测试漏列正式跨文件引用失败,测试修复通过PR #28合入main `57fcf295b193d6d5ee425d099ee26d562048514d`;第二次预构建#29已报告5,016项、0断言失败,但在SQL语义测试出现1GB测试JVM内存耗尽,整批仍失败。现将SQL语义测试隔离进程,并修正旧编号测试将稳定BX箱唛误当随机业务编号的断言;本地58项定向复测及隔离进程重测均通过。生产PR #29已合入main `46d359241f2749eaf31e4253ffff43acd55cb98c`,#30正在完整预构建。三次均`DEPLOY=false`、`SKIP_TESTS=false`,未替换生产服务或发布前端。25项本地路由与流水线合同此前通过,31张新表、5个可空字段、10项权限及管理员授权已只读核验通过。后续仍需固定提交完整构建、现有表约束升级、服务发布、唯一出口切换及真实接口/排序/Excel验收;仅合并、建表或复制数据不得宣称上线完成。
|
||||||
|
|
||||||
|
## 自营四页面生产与TEST只读差异核验(2026-10-16)
|
||||||
|
|
||||||
|
用户授权通过已有生产数据库连接比较四页面上线差异;本轮只执行有超时的只读事务、配置读取和Jenkins记录查询,没有SQL写入、数据复制、采集切换或生产发布。生产 `baiyue_lastleg` 可见182张表,TEST可见214张;生产缺少TEST全部19张 `ll_selfop_*` 表(16张正式采集/统计/资料/历史库存表,另3张数量对照诊断表),无同名自营表需要ALTER。生产还缺13张预约、派送及采购等非自营表,不能将这32张差异一起当作四页面建表范围。未发现三个受查业务库的Flyway历史表,不假定版本迁移机制已经接管生产。
|
||||||
|
|
||||||
|
生产IAM不存在 `platform:self-operated*` 的8项菜单/权限;8个基线ID目前无占用,平台管理员角色4000001存在且ACTIVE。应准备该功能的完整权限及平台管理员授权,不能同步TEST其他账号或角色关系。生产和TEST下载中心 `file_export_task`、`file_export_task_guard`、`file_export_outbox` 的55个字段定义与27条索引成员记录一致;本功能不需要重建这三表。
|
||||||
|
|
||||||
|
生产Nacos库读取到的相关命名空间均无Lastleg自营配置、Integration领星WMS配置和File `SELFOP_INVENTORY_TURNOVER` 注册。此处是配置存储事实,不代替生产容器所绑定命名空间、环境变量和最终生效配置验收。TEST当前双方BUSINESS/continuous=true、1200ms,Lastleg历史还原与销量发布开启,File有该导出类型。生产需要按独立环境填写凭据、账号/仓库范围、服务身份及导出注册,先关闭采集,不整份复制测试配置。
|
||||||
|
|
||||||
|
TEST有效销量完整覆盖2026-08-14至2026-10-15(63天):US01当前发布日统计34775行,US02 5371行,共40146行;原始订单事实分别102103/16742条。两仓当前库存均有完整已发布批次;历史日库存当前头版本分别61天,覆盖8月16日至10月15日,仍有UNKNOWN样本,应原样保留,不能把天数完整当作每个SKU均可计算。19张表的information_schema分配空间合计约16.48GiB,其中SKU日销量含索引约14.65GiB;这是分配空间/历史副本规模,不是导出文件大小。推荐审核真实来源数据的迁移闭包后复用已采数据:事实、最新资料和已发布数据,以及历史日版本引用的run/sales/anchor/stage等证据一并核对。当前40146行不能直接视为全部迁移范围;未批准复制验证/诊断样本、活动租约、失败队列或测试凭据。迁移方案与一致性窗口尚待准备,本轮没有迁移或重采。
|
||||||
|
|
||||||
|
TEST实际Lastleg镜像为 `c9186c37a543`、healthy,包含自动恢复补丁 `4e2ea8940`;Integration仍为 `99215bbb7962`。生产Jenkins最新成功且DEPLOY=true的Lastleg #14及File #18记录提交 `4dc3d1752e27`,Admin #27成功;Integration/Gateway的最新成功Job为DEPLOY=false,不能当作运行版本。本轮没有核验生产容器镜像。以生产Lastleg上述发布记录对比TEST运行提交,Lastleg目录有537个文件变化,其中195个路径在selfoperated、342个在其他路径;文件数量不等于功能数量,但证明不宜只补19表就直接换整份TEST镜像。建议先冻结四页面专用生产候选及其直接依赖;若选择整体晋级,则必须另审全部受影响Schema和跨服务合同。四页面主要部署单元为Integration、Lastleg、File、Admin;IAM权限和Nacos单列,Gateway/IAM二进制是否需要更新以候选与生产实际版本核验决定。
|
||||||
|
|
||||||
|
只读证据位于后端target:`selfop-production-comparison-schema.json`、`selfop-production-extra-gaps.json`、`selfop-production-data-inventory.json`、`selfop-production-file-columns.json`、`selfop-production-export-indexes.json`、`selfop-production-config-summary.json`、`selfop-production-job-summary.json`、`selfop-production-comparison-test-runtime.json`、`selfop-production-comparison-test-file-config.json`。原始凭据与配置正文未写入这些证据。
|
||||||
|
|
||||||
|
## 自营10月15日销量恢复与自动调度排查(2026-10-16)
|
||||||
|
|
||||||
|
10:36只读核验两仓已发布销量仅完整覆盖到10月14日;页面截止10月15日的15/30天窗口各缺一天,因此出库立方数为数量未知。同一接口截止10月14日仍正常计算,当前库存及尺寸有效。自动根任务 `LXCOL-20261016-6E2C20D1A0E5476B` 于00:05启动,前24次为正常YIELDED,00:07:18第25次才首次FAILED,错误只保存 `SELFOP_EXECUTION_FAILED`;当时已保存2493条VALID出库暂存,目录完整,两仓子任务READY/NOT_STARTED,尚未发布。不能将25次尝试说成25次失败。
|
||||||
|
|
||||||
|
用户授权先补齐昨日数据后,10:40通过正式BACKFILL接口新建账号任务 `LXCOL-20261016-E89428DC92FC4510`,查询2026-10-15整天;未执行SQL写入、发布、重启或配置变更,保留原失败批次。两轮共50次列表请求取回2493条订单,无额外详情请求。US01子任务 `LXCOL-20261016-877AA7EC5A9A4534` 于10:43:24发布,US02子任务 `LXCOL-20261016-688816429CC04BA2` 于10:43:38发布,均SUCCEEDED/APPLIED/PUBLISHED。两仓完整覆盖上界推进至2026-10-16(不含),rebuild_required=0,账号无暂停。10:44真实HTTP核验两仓15/30天窗口完整、出库立方数有值且无数量未知,需整体刷新取新上下文。
|
||||||
|
|
||||||
|
自动恢复缺口已在本次修复前的实现核实:`SelfopTaskService.fail` 对continuous出库任务不保留普通可重试资格,首个异常即DEAD;`SelfopCoordinationMapper.dueContinuous` 排除根任务DEAD的全部子任务;`SelfopSchedulePlanner.planContinuous` 将同一日request_key存在直接视为已排期,包含DEAD,之后不恢复该缺口。`SelfopExecutionService` 捕获异常后仅落通用错误码,没有保留异常类型及堆栈,当前容器日志与performance_schema历史未找回本次具体异常。因此首次异常的底层原因尚未确认,不能将之后00:09:56记录的同表死锁冒称本次00:07:18失败原因。库存和资料自动任务仍运行,问题是出库失败后的恢复链;随后按用户授权在本地补齐恢复策略和诊断:持续出库根及分仓任务在首次允许恢复的故障后最多重试3次,等待10/20/40秒,沿用原任务和检查点;YIELDED不计失败,耗尽次数不另建根绕过,限流/鉴权/未知响应保护保留。错误详情返回实际阶段、异常类型、SQLState/数据库错误码及重试决定;原始SQL、参数和响应不进入诊断。本地候选提交 `4e2ea894039fc2130c5ed78fb3c0451203191c70`,145项定向测试(包含测试源码编译)和5项Gateway路由合同通过;仅需更新Lastleg,不涉及SQL、Nacos或前端发布。用户随后授权发布该提交。Jenkins `baiyue-firstleg-lastleg-service #340` 于11:10前SUCCESS,实际Lastleg镜像标签 `4e2ea894039f`、健康状态healthy,运行镜像摘要与该构建推送摘要 `sha256:c2392fd40836096a6c1019fd5c57644496237557ce3646df8a6b860ddd5ac87e` 一致;仅更新Lastleg。Jenkins沿用本地定向测试证据,SKIP_TESTS=true仍编译测试源码。11:10真实HTTP核验采集概览、失败历史、任务详情和两仓30天库存周转均成功;两仓出库执行/发布开启,下次日销量计划为北京时间10月17日00:05,当前销量完整至10月15日(覆盖上界10月16日不含)。持续BUSINESS开启,两端最小间隔1200ms,账号无暂停,未执行SQL写入或Nacos发布。旧DEAD根和错误记录未复活/改写,昨日缺口已由上述补采发布覆盖。三次重试和新诊断格式由离线定向测试验证,未在TEST人为制造失败;本次真实错误接口读取旧记录,因此不能声称已实测自然故障后的三次恢复。发布证据见后端target的 `selfop-recovery-release-lastleg-service-4e2ea894039f.json`、`selfop-recovery-runtime-after.json`、`selfop-recovery-http.json`。
|
||||||
|
|
||||||
|
证据位于后端target的 `selfop-volume-20261016-http.json`、`selfop-volume-20261016-db.json`、`selfop-oct15-emergency-submit.json`、`selfop-oct15-emergency-observe.json`、`selfop-volume-20261016-after.json`、`selfop-volume-20261016-us02-after.json`、`selfop-auto-20261016-failure.json`、`selfop-auto-20261016-deadlock.json`、`selfop-auto-20261016-sql-errors.json`。原始运行证据不入库,不把本次手动恢复当作自动恢复已修复。
|
||||||
|
|
||||||
|
## 预约工作日历 TEST 发布与定向联调(2026-10-15)
|
||||||
|
|
||||||
|
2026-10-17 07:57 按用户本轮授权,仅发布TEST Lastleg候选`5fd74e9c8c779fa5fb9ce1fa740d0223d46a6746`(PDA候选批量查询与工作守卫慢调用诊断)。Jenkins `baiyue-firstleg-lastleg-service #349` 固定提交、DEPLOY=true、SKIP_TESTS=false,3042项测试/0失败/0错误/9跳过,SUCCESS;运行tag`5fd74e9c8c77`、imageId`sha256:41b80e3f84c6fd451fcfa0193faa58ba2fc03c6d5569aad764dd940f99a9f824`、healthy已核对,其他服务镜像未变。无SQL、Nacos或其他配置发布。发布前原两箱与领导演示8类业务详情HTTP哈希仍一致。证据`reports/appointment-latency-20261017/deployment-release.json`;新版本HTTP逐接口复验进行中,不能以构建及健康状态代替性能或完整流程通过。
|
||||||
|
|
||||||
|
发布后首次烟测9次HTTP均业务正确且不超过1秒。PDA候选首轮398.574ms、随后154.791/166.995ms,三次均188柜且完整响应哈希一致;没有预热或剔除首轮。权限60.483ms、专属PDA仓绑定59.762ms且US-LAX-01正确,最大为登录408.817ms。自有会话均注销,pendingRequests=0。证据同目录`postdeploy-smoke.json`、`candidate-payload-stability.json`、`requests.jsonl`。该结果确认当前数据规模下候选查询性能改善,不代表预排4.844秒根因已修复、写后A0409消除或全部流程已通过;两独立新柜后续流程继续补验。
|
||||||
|
|
||||||
|
2026-10-17 08:15 独立新柜复验已覆盖中转柜D1675/TSTU4687418两箱的分批、合并、正式预约、预排、实际出库、签收、结案及资源释放;直送柜D1676/TSTU8406925两箱完成正式DIRECT、提柜、目的仓实际卸货、还空,两柜均EMPTY_RETURNED。DIRECT未写海外入库;其还空接手首次A0409,不能列为接手成功。新预排首请求103.351ms,但4个新的超时仍未关闭:ACCEPT_RETURN3564.930ms/A0409,创建预约1349.450ms、装载3954.964ms、结案4370.586ms。后三项同trace的guard UPDATE分别1238/3871/4307ms;只能确定语句耗时,尚不能把第一项归为已证实锁等待。写后工作A0409与客户仓无需预约分支仍在收尾。证据同报告目录slow-call-diagnosis.json及requests.jsonl,失败和首次调用均保留。
|
||||||
|
|
||||||
|
本地另准备仅Lastleg的局部同步查询去重:同一守卫事务内复用完整工作集,100柜全量读取最多202次降至3次,保留两次最终DB回读、事实校验与全量发布;增加SELECT守卫慢调用诊断。44项直接Java回归、5项Gateway合同通过,独立审查通过;没有SQL、配置或架构切换。该3文件候选尚未提交部署,按用户要求另行汇总授权;当前HTTP证据仍属于5fd74e9c8c77,不能证明新候选已满足每次≤1秒。原两箱与演示8类业务详情08:15哈希仍一致。
|
||||||
|
|
||||||
|
2026-10-17 08:21 本轮HTTP收尾:reports/appointment-latency-20261017/requests.jsonl共490个完整响应,4次超1秒、8次不符原预期(2次脚本前置、4次同步/版本冲突、2次PRIVATE费用前置阻断);所有首失败保留,不与之前688次记录混写。停写后仅做一轮查询,日历633.678ms、摘要622.216ms、原FOLLOW_TODAY&page=1&size=8接口631.516ms、当前批次resolve665.339ms均200,不能据此消除写入期A0409和慢调用。D1675/D1676实际EMPTY_RETURNED已读回,但D1675还空发生在尾程结案之后,“尾程未完成仍可实际还空”本轮只有允许动作读回,未覆盖该执行时序;D1676还空接手正例也未成功。
|
||||||
|
|
||||||
|
PRIVATE补充柜D1677/TSTU7054389、一箱NYEXX2610170003使用本客户既有私人地址,已完成真实订单/测量/分柜,停在未确认预装、未开船。初始费用UNPRICED/NOT_SUBMITTED,预装确认A0409要求费用完成;正式fees/calculate又A0409不支持该目的地,人工报价代码入口仅FBA。未改共享价格/地址主档、未绕过门禁;客户仓无需预约及该DIRECT接手正例仍缺上游费用闭环,不能列已验证。最终自有会话全部退出、无在途请求;原两箱与领导演示8类完整详情哈希全部不变,保护证据 .codex-temp/appointment-latency-protection-after-1792196488602.json。下一次仅Lastleg局部优化发布清单见reports/appointment-latency-20261017/next-release-plan.md,仍待用户另行授权。
|
||||||
|
|
||||||
|
最终工作读取另发现D1675提柜事项仍PENDING;此项不能归因于缺时区。代码核对表明工作事实只认船节点PICKED_UP,而终端详情在缺该节点时会用unloadingCompletedAt推定actualPickupAt;缺时区本身只增加SOURCE_TIMEZONE,并不把已有实际节点降为PENDING。已有本轮记录核对actualPickupAt与unloadingCompletedAt均为2026-10-17T08:05:18.43,TRANSFER三阶段没有提交PICKED_UP节点;因此该实际操作仍未覆盖,不应默认纽约/洛杉矶时区或用终端推定值宣称工作项已完成。该口径/覆盖缺口独立于本次同步查询去重候选。
|
||||||
|
|
||||||
|
2026-10-17 08:38 用户再次授权后,已仅提交并部署3文件同步局部优化,commit732cf99007c835e7062b9f9f41a5da9ee91c8174。Jenkins Lastleg #350固定SHA、DEPLOY=true、SKIP_TESTS=false,完整3043项/0失败/0错误/9跳过,SUCCESS;TEST Lastleg tag732cf99007c8、imageId sha256:123b3d3f8e782c8b87b1a01c8dc5185d84c025d682bb6ae3d8d0b9b2dc38435f、healthy已核对,其他服务镜像未变。没有SQL/配置/其他服务部署。发布前保护8类详情仍不变;独立新轮证据目录reports/appointment-latency-20261017-round2,准入deployment-release.json已生成,HTTP复验开始。旧490和688证据保留,不以构建成功替代每次≤1秒或流程完成。
|
||||||
|
|
||||||
|
2026-10-17 08:52 第二轮定向HTTP收尾:上述独立目录累计386个完整响应,1次超过1秒、8次业务结果不符预期,0未知结果、无在途请求,自有会话已退出。唯一慢调用为DIRECT还空事项SAVE_REQUIREMENT 1842.448ms/A0409,同trace的guard SELECT计时1778ms;该证据定位到加锁读取语句,不能单凭日志确定具体持锁事务。8次不符包括1次头程测量版本冲突、1次该事项版本冲突,以及6次来源范围/需求同步等待;全部首次失败保留。当前729个已开船柜分8页同步,写入期间日志另记录来源分页失效和需求版本变化后重新扫描,整页等待仍未解决。
|
||||||
|
|
||||||
|
本轮独立中转D1678/TSTU6010956已按车队→提柜预约→真实PICKED_UP→PDA两托各一箱收货执行;库存仍2箱且尚无预约/排车/车次时实际还空,再完成预约2箱分1+1、合并2箱、预约确认、新预排、拣货、发车、签收、结案和资源释放。最终工作PICKUP/收货/还空完成状态与权威实际事实核对通过;缺来源时区仍单列,不伪造默认时区。独立直送D1679/TSTU4672300仅补齐还空要求、交接与接手成功,未执行其实际提柜/卸货/还空;完整直送实际执行仍引用上一版本D1676证据,不能混称本轮全部流程重跑。PRIVATE客户仓无需预约链仍被原费用前置阻断,未新增PRIVATE或更改报价规则。
|
||||||
|
|
||||||
|
本轮创建预约113.883ms、新预排103.445ms、装载75.332ms、结案71.534ms;停写后单轮日历642.743ms、汇总630.738ms、FOLLOW_TODAY原接口596.760ms、批次resolve688.955ms均业务200。这些成功不抵销写入期失败,也不代表全系统每个接口、全部异常分支或页面点击通过。最终原两箱与领导演示8类详情哈希仍一致,根证据`.codex-temp/appointment-latency-protection-after-1792198354979.json`;运行版本仍732cf,未追加部署。
|
||||||
|
|
||||||
|
另有未部署的两文件局部候选:首次事实读取仅保留运输事项供车次归并,保留TRIP_LINKED退役成员及第二轮全部活跃事实;不改全量发布、守卫锁、事务、SQL或配置。同时新增固定字段的同步阶段耗时摘要,不输出业务载荷。7类46项Java定向测试及独立审查通过。候选尚未提交/部署,实际性能收益未验证;按本轮要求需另获TEST Lastleg发布授权,不能把本地回归视为1秒目标通过。
|
||||||
|
|
||||||
|
2026-10-17 09:18 上述两文件候选已获用户新授权并提交部署:commit81e4123b109c3f0327b19d84be98428b3e1fb034,Jenkins Lastleg #351固定SHA且SKIP_TESTS=false,3045项/0失败/0错误/9跳过、SUCCESS。运行tag81e4123b109c、imageId sha256:d78f2d3bb57a435299324b1149c478a884807243b9a5f7ca865b3973fedbdf58、healthy已核对,其他服务未变;无SQL或配置变更。独立证据目录reports/appointment-latency-20261017-round3,复用D1679未完成还空事项作独立备注更新,D1678只读,旧386/490/688不覆盖。首个约100秒窗口51个完整HTTP响应均≤1秒、最高884.199ms、10次写均成功;其中首写869.566ms与SELECT722ms按trace对应,确有同步交叠。5项完成事实及状态不变量核验通过,但不能由该窗口推定所有接口/所有同步起始时机都达标;正在补最多两次更贴近同步起始段的有限验证。
|
||||||
|
|
||||||
|
2026-10-17 09:27 同步开始段补验首条即复现超过1秒,已停止第二条:新增5个HTTP响应均业务200、读回正确,其中SAVE_REQUIREMENT1282.721ms;精确trace e77cfb94d3933dd55a71f8b1ba645328对应guard SELECT1184ms,同时同步方法1351ms,生成事项787ms、活跃事实492ms。此证据比自然分散窗口更直接暴露剩余等待,最终本轮合计56请求/1慢/0业务失败,所有原始记录保留,不能标记1秒目标通过。初步定位生成阶段逐需求重复读取仓库目录,正在本地实现单次生成作用域内成功目录结果复用;不调整事务、锁或全量同步架构,尚未提交部署。
|
||||||
|
|
||||||
|
2026-10-17 09:35 上述局部目录复用候选完成,5个生产文件与6个测试/夹具文件;单次生成作用域按需复用成功目录结果,下次同步与独立命令重读,失败不缓存,来源及客户等校验保留。9类51项Java测试、12项依赖检查通过,独立审查无阻断;首次测试夹具构造错误已修正,原日志保留。此时尚待新授权;后续发布结果见下段,不以本地测试推断线上1秒达标。
|
||||||
|
|
||||||
|
2026-10-17 10:07 用户新授权的11文件已精确提交部署:2971d6f7f0baedbf00dbb7941b1d846a736224a4,Jenkins Lastleg #352 SUCCESS,3049项/0失败/0错误/9跳过;实际tag2971d6f7f0ba、imageId sha256:bf26c422a7f3d54dc23e6ae0f521cbae87ac03d2329b24e91477e826732d2677且healthy,其他服务未变。没有SQL、配置或架构变更。新证据reports/appointment-latency-20261017-round4共13HTTP/9模板,1次SAVE_REQUIREMENT1243.950ms、0业务错误;同trace68344901746bc9ce410290f687e6e0ba守卫SELECT1088ms,与同步1168ms(生成445ms、活跃事实635ms)相交叠。目录去重降低生成阶段成本,但仍未达到每次≤1秒;不再执行第二次重复补验。日历720.051ms、FOLLOW_TODAY683.819ms、summary683.800ms、resolve688.220ms均200,5项完成事实及状态不变量通过。1登录/1注销、pending/UNKNOWN0;最终8项原两箱/演示保护哈希未变。此轮仅局部性能复验,PRIVATE费用、直送独立样本后续实物节点、全量接口及页面验收仍未关闭。
|
||||||
|
|
||||||
|
2026-10-17 10:15 后续形成4文件本地诊断候选:拆分完整工作状态读取与事实适配耗时,并汇总Firstleg及固定业务提供者的调用次数、输入量和耗时,不改业务、锁、事务、缓存或批量。32项Java与5项网关检查通过,独立审查无阻断;此时等待新授权,后续结果见下段。诊断本身不改善性能。
|
||||||
|
|
||||||
|
2026-10-17 11:47 用户已授权上述诊断并完成精确提交部署662dead053f961d6f14aaeea5edb38c76778a822,Jenkins Lastleg #353 SUCCESS,3053项/0失败/0错误/9跳过;运行tag662dead053f9、image sha256:e061ee6000a4d03010cbdca8cc12f4f6f7f6823d628b0c54a1b3bed82c72af60、healthy,其他服务未变,无SQL/配置/架构变更。reports/appointment-latency-20261017-round5独立13HTTP仍有1次SAVE_REQUIREMENT1114.641ms,全部业务成功、5项状态语义通过。trace fe13883a1dc6e9a8fac9dd69f038e084匹配守卫SELECT937ms,同窗sync1055ms内生成400ms、活跃事实559ms(工作表20ms、适配539ms);适配诊断中Firstleg直接6调用1064项270ms、送仓Delivery4调用767项199ms、收货38ms、运输14ms、直送运输7ms。已能排除该窗口工作表读取或运输提供者为主要成本,但尚未关闭全量同步写等待。日历800.030ms、FOLLOW_TODAY681.043ms、summary667.720ms、resolve694.736ms均200。原两箱/演示8项哈希未变,1登录/1注销,pending/UNKNOWN0,第二次补验未执行。采样结束;按用户持续修复要求,本地继续生成阶段逐柜/逐需求查询的批量化实现和回归,保持原守卫、事务及全量发布机制,不改数据库结构。该后续候选于12:10完成本地验证:21文件(11生产+10测试/夹具),13类去重124项Java及17项网关/依赖检查通过,独立审查无阻断。冻结清单为工作区.codex-temp/appointment-generate-batch-frozen-20261017.json(SHA256 C5188B42BD512387B4BDCC99ABA6368AD6178E829DBECEBA8430A7212ADD2849),尚未提交或发布,需另行授权;目标MySQL运行及实际性能仍待发布后复验,不以本轮样本或诊断发布宣称全部接口≤1秒。
|
||||||
|
2026-10-17 用户授权21文件后曾部署b0acbfbb(Jenkins354),但首个详情1319.454ms且新增history查询导致后台GENERATE持续失败,已按用户要求停修复。随后经分别授权,Jenkins355 SUCCESS将TEST Lastleg恢复到662dead053f961d6f14aaeea5edb38c76778a822(3053项/0失败/0错误/9跳过),容器healthy、其他服务未变;05:37:11 UTC整轮同步complete=true/failedStage=NONE。恢复仅5次HTTP含登录注销,日历856.325ms、汇总705.212ms、FOLLOW_TODAY673.417ms均200;保护另10次,原两箱/演示8项哈希不变。限定同应用驱动/连接只读诊断已证实MySQL HY000/1267:CAST/UNION派生列utf8mb4_0900_ai_ci与三业务列utf8mb4_unicode_ci冲突,原SQL及三隔离EXPLAIN均复现;H2未覆盖该差异。只执行3 SELECT+4 EXPLAIN,无业务写、DDL/DML或配置变更,探针已清理。首探针目录权限失败且SQL未开始,换自有临时目录重新审核后完成。详情全量事实路径及每次<1秒目标仍未关闭;本次恢复成功不能替代性能验收。所有修复/新发布/业务验收已停,Git仍保留b0源码证据。最新证据reports/appointment-recovery-20261017;失败证据reports/appointment-latency-20261017-round6保留。
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2026-10-18 12:03 本轮用户授权的18文件诊断已提交并部署TEST Lastleg:最终commit `66a0beb6539242d77a3155fde5e2a6380c11085c` 相对恢复基线662dead仅10生产+8测试;未带入b0批量化修复或其他任务未提交代码。首次Jenkins #356因新增测试Mapper缺注册注解而在测试阶段失败,未部署;仅补该测试两行后,#357固定SHA、SKIP_TESTS=false,3073项/0失败/0错误/9跳过、SUCCESS。运行tag `66a0beb65392`、image `sha256:9802e400c8b9eb2678e0fc9e9a17bdb17aad16f004fb7bbfb2b802149bd86b5e`、healthy,其他服务未变;无业务逻辑、配置或数据库操作。有限日志窗口确认3轮完整同步完成,28条同步摘要均未失败、未见ERROR,不能由该窗口推定长期无故障。
|
||||||
|
|
||||||
|
本次有限诊断共10次HTTP(6业务GET、4登录注销),首个详情1101.861ms超过目标,服务端1065.505ms;后续详情629.096/635.852ms、日历665.993ms、汇总654.116ms、FOLLOW_TODAY643.532ms均业务成功,原慢记录保留。首慢主要阶段为活跃事项事实读取655.072ms(其中Firstleg265.022ms、送仓283.508ms,两者为子项)、工作状态读取79.719ms、投影60.683ms;进入事务业务层前176.391ms尚未细分成因。六条GET连接获取及守卫读取均不足1ms,本批慢详情不能归因于等连接或守卫锁;源码及调用量确认单详情仍走全体活跃事项事实汇总。后续事实读取仍483–526ms。旧写请求守卫长耗时的具体数据库等待原因、首次入口额外成本及全部接口每次<1秒仍未闭环。保护核对另20次只读HTTP,本轮前后8项完整响应哈希一致;原车次因预计结束时间已过而产生的历史动态资格提示差异在部署前已存在,未修改该数据。全部采样已停止、会话已退出,未执行业务写入。下一步仅提出详情按关联范围读取的局部候选及时间估计,尚未实现,部署、后续采样及数据库操作均须按用户要求另行授权。证据:根目录 `.codex-temp/appointment-diagnostic-20261018/final-release-manifest.json`、`.codex-temp/appointment-diagnostics-final-analysis-20261018.json`、`.codex-temp/appointment-diagnostics-protection-result-20261018.json`。
|
||||||
|
|
||||||
|
2026-10-16 逐接口耗时复验尚未通过:独立样本 `LAT1016-8280648` 的首批417次HTTP保留完整响应耗时,10箱与6箱两车已完成预约分批、排车、拣货、发车、签收、结案及资源释放;预排一次4844.086ms,PDA收货候选三次1691.343/1527.695/1476.326ms,另12次工作日历、待办或关联解析返回A0409。快速错误不计业务通过,历史无计时闭环不计本轮性能通过。该批实际TEST Lastleg为`e4bf57314662`、healthy;证据见后端`reports/appointment-latency-20261016/baseline-handoff.json`,417次原始基线冻结,后续扩展另存。尚不能宣称所有分支和每次请求均在1秒内。
|
||||||
|
|
||||||
|
本地待发布修复基于`af97cd17d`:PDA收货候选改为按500条分块批量读取,保留整柜、客户、仓库、会话及数量边界;另加工作守卫UPDATE慢调用诊断,不改变锁、事务或全量同步机制。86项直接Java测试、5项网关路由及12项依赖检查通过,独立静态审查无阻断。预排慢因尚未证实,诊断日志不等于修复;A0409来自需求版本变化后等待完整扫描,持续写入可能使跨页扫描重新开始。本轮尚未部署,未执行SQL或发布配置;仅申请TEST Lastleg部署授权。用户要求保留D1672原两箱及D1674领导演示,最近8类业务详情HTTP哈希均未变;继续使用全新独立样本补流程,不消费保留数据。
|
||||||
|
|
||||||
|
同轮扩展冻结为681次/97个方法与路径模板,原4次超时及12次A0409保留,另4次脚本前置/预期错误原样记录;新增独立货后总20箱,19箱完成三车真实执行,余1箱无日期待办。补齐跨客户共约改期/取消/分别重约、旧约号冲突、后送再部分分配、空车取消、来源守恒、真重放/旧版本、跨客户拒绝及DST异常;细表见`reports/appointment-latency-20261016/per-interface.md`,覆盖与缺口见`extended-final.json`。停写后只加一轮7次只读及认证请求(与681分开存为`postwrite-read-once.json`):日历662.397ms、摘要624.783ms、全部待办667.647ms、今日跟进755.068ms均成功;独立转运批次解析112.741ms但A0404,因为该样本未关联新已开船柜,不能冒称日历事项闭环。列表恢复不等于写后等待问题已修复。新已开船柜、中转柜级事项、整柜直送/还空转交、工作事项写命令及部分失败注入仍未完成本轮逐接口验收。22:13:59再次只读核对各运行镜像未变;22:13:16保护样本8类业务详情仍与基线一致。
|
||||||
|
|
||||||
|
2026-10-15 23:58 用户明确当前均为测试假数据,无需追索真实预约、签收或历史时区材料。此前将这些材料列为测试验收阻塞的判断撤销;它们不是本轮技术验收完成前置,不表示原合成预约已确认或已真实发运。总控直接回读现有数据:受保护两箱12表哈希仍不变,三列体积结构仍与已发布版本匹配;新自提单25项只读HTTP再次通过,客户/仓名称、目的仓ABE4、1箱/1kg/0.008m³和3件一致,验证会话退出。当前Firstleg499/Lastleg339/Order187/Admin624/Client417实际提交、镜像和healthy一致,无活动构建。复核默认分组11项、三种自提及纯SKU直接检查、四端指定尺寸页面/请求证据和最终36次<1秒性能证据后,本轮授权的测试开发与验收完成,无待用户补交材料或新增部署/SQL授权项。复验见 `reports/relabel-metadata-readonly-TEST-METADATA-READ-20261015-2358/report.json`,最终审计见 `reports/appointment-browser-20261015/completion-final.json`。下文早期外部材料阻塞记录仅保留过程,不再代表当前结论。
|
||||||
|
|
||||||
|
最终性能门禁补齐:保留#339首次12次原始烟测,再补2轮24次,合计36次全部HTTP200/业务200、<1秒,最大973ms;FOLLOW_TODAY为796.8/654.4/567.9ms,所有返回语义、顺序和总数同#334原基线。两次独立会话均正常退出,没有丢弃首轮或超时样本。完整三轮比较门禁passed=true,证据 `reports/appointment-search-performance-20261015/http-timings-339-complete.json`、`comparison-339-complete.json`。原12次比较报告passed=false仅因检查要求每类至少3样本,其逐项语义均一致、实测均<1秒;保留原报告,不将单轮烟测冒称完整门禁。
|
||||||
|
|
||||||
|
21:52 最终补验收口:SKU目的仓改为读取换标出库冻结物理行,普通退货出库规则不变,172项定向测试全通过;Lastleg #339 精确提交 `a3a5862f890073c75f9444886dbc89dd3ecfc79b` SUCCESS/healthy,Admin保持#624。原新建样本只读复验25/25通过,SKU/物理行/派送头均为ABE4,名称与1箱/1kg/0.008m³/3件保持,未新增业务写入;独立会话退出成功,报告 `reports/relabel-metadata-readonly-TEST-METADATA-READ-20261015-2150/report.json`。1920×1080/scale1页面复核显示ABE4,详情只发1个GET/51ms,注销200/54ms后关闭临时页并恢复视口;证据 `reports/appointment-browser-20261015/admin-624-lastleg339-metadata-sku.png` 及同目录 `admin-624-lastleg339-final-network.json`。最终12次九类查询与三路并发烟测全200且<1秒,最慢973ms,FOLLOW_TODAY单请求796.8ms,完整返回语义仍同#334基线,见性能目录 `http-timings-339-final.json`、`comparison-339-final.json`。此前#338的36次完整计时保留,不将12次说成36次。原两箱12表哈希不变,见 `protected-metadata-final.json`;原批次/车次消费者回读正确、仍PENDING/actual为空。技术补验无剩余部署或SQL授权项;原业务链仍缺对方预约确认号/时间窗/证明、真实发运签收证据及原收货当地时间的时区依据,不能伪造材料或据合成样本宣称真实履约完成。
|
||||||
|
|
||||||
|
21:46 同轮退货自提补验:Lastleg #338 精确提交 `b8739eebf010e48336e83f64cb26fc995ba08a1e`、Admin #624 精确提交 `148085286ded26483201553101d73c156638b6eb` 均 SUCCESS/healthy;新建退货直接出库一次读取权威客户/仓名称,逐实物箱冻结重量与体积,多 SKU 只在稳定首行承载一次物理量。缺测保持空值,三张表的体积列已按授权精确调整为可空,未改业务行;两套初始化基线同步。299 项定向测试、12 项依赖检查、Admin 14 项及构建、SQL 28 项和索引 1,124 项通过。复用已盘点独立退货箱新建一张亚马逊自提换标单,37 项真实 HTTP 检查通过,派送 `DL-WH-20261015-006785` 正确显示客户、仓库、1 箱/1kg/0.008m³,3 件 SKU 守恒,唯一出库且幂等,三个自有会话退出、无盘点会话;未拣货或发运。报告 `reports/relabel-metadata-TEST-METADATA-20261015-2144/report.json`。原 D1672 两箱仍只读,12 表哈希未变。Admin 1920×1080/scale1 列表业务号完整显示、客户/仓名称和详情测量正确;列表/筛选/详情各一次业务 GET,96/57/48ms,SKU 切换零请求。页面另发现 SKU 目的仓仍读原退货箱而非换标出库冻结值,正在修复,不能据上述通过关闭该显示缺口。
|
||||||
|
|
||||||
|
同次 #338 发布后九类查询三轮及三路并发三轮共 36 请求均 HTTP200/业务200 且小于1秒,最高808.4ms;FOLLOW_TODAY 为780.4/716.8/733.7ms。完整返回内容、顺序及总数仍与原 #334 基线一致,证据 `reports/appointment-search-performance-20261015/http-timings-338.json`、`comparison-338.json`。此结论限定当前 TEST 数据与并发方式。
|
||||||
|
|
||||||
|
本轮按用户授权完成匹配 SQL 与四项发布:IAM #177 为 `4f9a63fb0136fe3fbc18d2e1360ddcabeaed9eb0`;Firstleg #496 为 `23ce486539b268ebab6f172fa822b843c568e246`;Lastleg #332 为 `204ae1073700e5e4e84bbe897c2316c515fe8e41`;Admin #619 为 `60378fea9b98648bc4973a500e886b947d0eafb7`,均 SUCCESS,容器健康与实际提交已核对。Admin healthz 和入口引用的 60 个 JS/CSS 资源均 HTTP 200,最终运行清单见根 `.codex-temp/appointment-final-release-runtime.json`、`appointment-admin-final-assets-619.json`。Gateway、Nacos 本轮未变更。Admin 首次 #616 因 TS7006 构建失败,修复回调参数类型后发布成功,失败构建未替换运行容器。
|
||||||
|
|
||||||
|
Firstleg 新增直送卸货表,IAM 新增预约工作管理、直送卸货确认两项权限及平台管理员关联。用户单独授权旧预约精确重建后,17:12:19 在 Lastleg 停写窗口再次核对 3 主单、22 明细、7 命令历史,按当前模型重建这三表并创建核实资料表及五张工作相关表;订单、计划和库存原业务表不在重置范围。匹配版恢复后已产生新预约和事项,旧重建脚本不得重放。SQL 执行及结构证据见根 `.codex-temp/appointment-test-reset-executed-20261015.json`、`appointment-test-schema-after-20261015.json`。
|
||||||
|
|
||||||
|
全量同步现场修复了已知货源配置前提缺失导致整轮中止,以及捕获业务拒绝后内层事务仍标记回滚的问题;不支持预约的来源保留待核实事项,其他错误和远端故障继续拒绝。真实 Spring 事务代理回归在内的 20 项定向测试通过。17:41:55 同步初始化完成,事项 3,295 条,需求版本与同步版本均为 6;17:47 独立新会话通过全局摘要、月日历、事项分页 HTTP 200/业务 200,随后退出。该快照数量不是固定业务总量,证据为根 `.codex-temp/appointment-http-smoke-work-1792057640889.json`。
|
||||||
|
|
||||||
|
17:58 慢查询修复已随 Firstleg #496 发布:事实批次共用一次权威来源清单,消除逐柜重复全量扫描;下一批重新读取,不跨请求缓存事实。100 柜/200 事项的清单调用次数、逐柜身份和已移除来源拒绝测试通过,相关 9 项测试及 5 项网关合同通过。真实全局摘要/月日历/事项分页由 25.98/27.02/26.79 秒降为 7.74/7.00/7.59 秒;按页面首次并发的摘要和日历均约 8.1 秒,低于当前 Admin 15 秒超时,均 HTTP 200/业务 200。证据为根 `.codex-temp/appointment-http-smoke-work-1792058338340.json` 及 `appointment-http-smoke-work-concurrent-1792058364623.json`;这只是当前样本和并发模式的定向计时,不是全站容量验收。
|
||||||
|
|
||||||
|
同一两箱合成样本 `FL2110663764278312961`/`BYHK2610150001` 已通过独立核实 2→1 且原订单不变、恢复 2、取消及同键重放、2→1+1→2 拆分合并、数量守恒、旧版本拒绝与替代链核对;保留预约 `AP-20261015-450E69B7DD28`,稳定键 `FBA_APPOINTMENT:2110665331459538945`。原货柜 `TSTU8836696` 的两箱已通过正式 PDA 接口实收,托盘 `D1672-126-001`;同一实物/来源/批次实际生成排车 `DS-WH-20261015-200770`,绑定车次 `TR-1CE18EF35FF6419E`,回读数量 2、状态 PLANNED。当前预约仍 PENDING,无对方确认材料;未伪造外部确认号来完成发车签收,实际发车/签收和全部装载前置满足后的发车拒绝分支未覆盖。
|
||||||
|
|
||||||
|
工作跟进 11 项 HTTP 检查通过:匿名/客户域拒绝、只读平台身份不能写、正确 Auth 主体负责人、只读无写入、同键重放不新增历史、异载荷和旧版本拒绝。首轮 fixture 误用 IAM 档案 userId,返回 S0503;经内部只读探针确认目录实际 A0404,原事项仍版本 0、历史空,改为准确 authUserId 后复验通过,失败报告保留。前端同时修复普通 JSON.parse 舍入 19 位 JWT 数字账号 ID 的真实缺陷,复用既有安全整数解析;真实解码→登录/恢复→跟进表单 ownerId 回归通过。Admin 最终全量 392 文件/3,197 项、类型检查和构建通过;测试首次放在 core 引用业务组件触发依赖门禁,移到业务测试目录后复验通过,未放宽门禁。
|
||||||
|
|
||||||
|
原主档 ABE4=`UTC-5`、US-LAX-01=`UTC-8` 分别阻塞路线生成和已关联车次事实读取。两仓的地址逐项匹配当前 `warehouse-public-master-data.sql` 基线后,仅通过正式 Warehouse API 分别修为 `America/New_York`、`America/Los_Angeles`,其他业务主档字段和能力保留,未执行额外 SQL 或全量时区回填;原预约按当前版本更新刷新地点时区、稳定批次不变,原车次 UTC 计划时间未改。18:18:42 全量同步追平需求/同步版本 11/11;18:20 最终三个全局查询均 HTTP 200/业务 200,耗时 7.97/7.21/7.44 秒。18:22 总控独立新会话回读原柜事项及运输详情,TRANSFER 路线、原稳定批次、原车次及送仓前置关联全部准确,运输仍 PENDING、actual 为空,未伪造完成;会话退出成功。证据为根 `.codex-temp/appointment-http-smoke-work-1792059613885.json`、`appointment-http-smoke-consumer-1792059738187.json`。原接仓事项按真实收货完成,原记录只有未带时区的当地时刻,因此保留 SOURCE_TIMEZONE 待核实提示,不用修正后的当前仓时区倒推原实际时刻。
|
||||||
|
|
||||||
|
真实排车联调发现默认装车分组已生成但托盘锁保存空分组的问题,重试还会额外建组。Lastleg #332 修为保存实际分组 ID、复用唯一分组、多组时要求明确选择、同锁重放不重复建组且不能悄然换组;44 项排车及批次绑定定向测试、5 项网关合同通过。18:48 已按用户追加授权用独立合成样本完成默认分组真实 HTTP 复验:新订单 `FL2110680680845869058`、入仓码 `BYHK2610150002`、新柜 `TSTU5125251` 经正式业务 API 和 PDA 实收形成托盘 `D1673-126-001`,2 箱;未创建新预约或车次。计划转换后的 RESERVED 托盘不可直接作为候选,因此实际补齐实收后验证,未伪造库存。首轮发现默认容量 500 与正式 15/30 托规格不符,已修默认 30、分组预排拒绝非法容量,Lastleg #334 精确发布 `2631bd3af42d8cfa0598cb7eb36537c495bf6f55`,SUCCESS/healthy。46 项排车及批次绑定测试、5 项网关合同通过;最终 `reports/default-group-independent-20261015/report-r2.json` 的 11 项真实 HTTP 检查全部通过,包含容量 30、首次绑定、同载荷重放不增组、多组未指定拒绝、不得跨组移锁、解锁释放和 2 箱候选恢复。首轮及失败记录保留,不覆盖旧 `default-group-http-retest.json` 的历史未验结论。
|
||||||
|
|
||||||
|
本次独立样本验收结束后,3 张自建草稿均 RELEASED,相关活动托盘锁 0、草稿分组 0、新排车明细 0;首轮 38 次和最终复验 1 次自有登录均正常退出,独立实物样本保留。原两箱样本未写入,12 张相关表的定向全行 SHA256 前后完全一致,原排车 HTTP 详情也一致;18:48 总控独立回读原批次、车次和送仓依赖仍正确,运输 PENDING、actual 为空。证据为根 `.codex-temp/appointment-protected-before.json`、`appointment-protected-after.json`、`appointment-default-group-final-cleanup.json`、`appointment-default-group-runtime-334.json`、`appointment-http-smoke-consumer-1792061303166.json`。复验开始时另一个业务发布 #333 处于切换,曾读取到 503;新来源同步期间曾读到 A0409,均保留证据,健康及同步完成后回读通过。本轮未执行新增 SQL;#333 与 Admin #620 为其他业务发布,不以本轮结果代替其验收。
|
||||||
|
|
||||||
|
19:14 搜索性能定向验收通过:此前全局查询 7–8 秒只证明低于前端超时,不能代表交互性能合格,精确 FOLLOW_TODAY 此前也未单独计时。现按用户小于 1 秒要求,Firstleg #497 精确发布 `abf4e45e398d4e9549ad32d0cab98645190e5f3c`,Lastleg #335 精确发布 `097bec33b1b99eed4f23cca68bfbc5b94959d1da`,均 SUCCESS/healthy。Firstleg 将逐柜货源、路线、节点、历史及卸货事实改为批量读取;Lastleg 批量读取接仓、核实资料、来源及预约派送事实,并在权威事实读取前筛选安全的候选条件。没有跨请求事实缓存,没有变更权限、HTTP 合同、Schema 或执行新增 SQL;最终权限、实际状态、准确日期、关键词、总数及分页仍以实时事实计算。
|
||||||
|
|
||||||
|
同一 TEST 数据与平台身份,经统一 Gateway 记录从发起请求到响应体读取完成的耗时:九类查询各三轮,加 FOLLOW_TODAY/全类型日历/摘要三路同时请求各三轮,共 36 次 HTTP 200/业务 200,全部小于 1,000ms;包含部署后首个计时请求,没有丢弃慢样本。精确 `items?view=FOLLOW_TODAY&page=1&size=8` 从 #334 的 7,403.2ms 降为 906.1/713.1/642.1ms;三路并发各请求为 778.9–820.9ms。ALL、OVERDUE、UNDATED、REVIEW、关键词、全类型日历、仅提柜日历及摘要均覆盖;36 次完整返回语义与修复前逐项一致,包含记录顺序和总数。证据为根 `.codex-temp/appointment-search-baseline334-1792061553965.json`、`appointment-search-candidate335-1792062808860.json`、`appointment-search-comparison-1792062834692.json`;脱敏发布与汇总副本位于后端 `reports/appointment-search-performance-20261015/`。本结论限定当前数据规模及单请求/三路并发模式,不等同于任意规模容量保证。自有会话均退出;原两箱 12 表全行哈希仍不变,原批次/车次消费者 HTTP 回读通过,见 `appointment-protected-after.json`、`appointment-http-smoke-consumer-1792062841921.json`。
|
||||||
|
|
||||||
|
性能修改的 Firstleg 5 类/16 项、Lastleg 157 项定向回归及全部目标服务测试源码编译通过;原源版本哈希形状、单项/批量事实等价、客户与批次隔离、缺失失败和时区边界均有定向检查。完整 Lastleg 历史回归曾暴露 8 项断言失败、6 项错误、7 项跳过;其中车次权限 fixture 缺 Mock、预约分页旧合同断言已修并纳入上述回归,其余退货/换标/Schema/自营失败仍未关闭,不宣称全量通过。
|
||||||
|
|
||||||
|
工作与实物证据统一位于后端 `reports/appointment-producer-ADMIN-API-20261015092515485/` 的 `stage-evidence.json`、`physical-chain.json`、`origin-timezone-correction.json`;最终 `final-work-consumer-proof.json` 的 8 项原样本关联/实际事实检查通过,`session-cleanup.json` 确认 7 组本轮自建会话最终均已退出,无剩余。工作权限/幂等报告为 `reports/appointment-work-aw-route-ownerfix-20261015092515485/report.json`。验收脚本已同步当前取消接口、分批守恒、Long 字符串计数及可省略空字段合同,4 文件/33 项通过,提交 `caff693ad` 仅含脚本,无需再次发布服务。历史 producer 报告保留一条已修正并复验的脚本数量断言失败,不宣称原报告全绿。HTTP、静态资源和自动测试不替代 1920×1080、100% 人工视觉验收。
|
||||||
|
|
||||||
|
### 同轮内置浏览器补验与发现项
|
||||||
|
|
||||||
|
用户另行明确授权 AI 内置浏览器操作,Admin/Client 使用 1920×1080、缩放 100%,国内/海外 PDA 使用 390×848。Admin #621 发布 `9f51392754e57708c223bd3f7f0ee7c21d16b11f`(合并后 3,204 项测试、typecheck/build 通过),恢复覆盖式工作面板、展开/收起、固定标题和分页、紧凑日历工具栏。真实浏览器进一步发现长操作按钮两行行距只有 13px,修为 20px 且高度自适应;Admin #622 精确发布 `baee81f4594893a7ecb2d1d52c72db62fddc1815`,SUCCESS、healthy、healthz 正常。该小修的 50 项定向测试和 typecheck 通过,发布构建通过。
|
||||||
|
|
||||||
|
Admin 浏览器复验覆盖全局今日需跟进、分页、关键词、只读详情、关联工作展开、月/周切换和当天明细。各动作仅发起对应一条业务查询;首次页面并发读取日历与摘要各一次。#621 实测日历/摘要 677/678ms、今日跟进 627ms、第二页 629ms、关键词 609ms、详情 660ms、周日历 679ms、当天明细 685ms;#622 最终初始日历/摘要均 658ms、今日跟进 595ms,均 HTTP 200,无截断取证。最终按钮与内部文本计算行高均 20px、两行高度 54px,日历未被侧栏挤窄,页面无横向溢出。证据位于后端 `reports/appointment-browser-20261015/` 的 `network-admin-621.json`、`network-admin-622.json` 和对应 1920 截图。
|
||||||
|
|
||||||
|
两 PDA 以当前源码 H5、进程级明确 TEST 代理验收,未覆盖原 `.env.local`。国内登录、仓库与 47 条待拣任务列表正常;海外登录、仓库、排车列表及原两箱排车详情只读正常,详情仍为 2 箱、已拣 0 箱且调度审核前不可拣货。单个页面操作对应一条业务查询,两个自有会话 logout 均 HTTP 200,已关闭标签和本轮自有 H5/HBuilder 进程,两个 PDA 源码均无修改。证据为同目录 `network-pda.json`、`domestic-*-390.png`、`overseas-*-390.png`;本地准备及清理记录为根 `.codex-temp/pda-h5-readiness-20261015.json`。这只证明所列 H5 页面与 TEST 接口,不替代 Android 扫码硬件或实体作业验收。
|
||||||
|
|
||||||
|
Client 同轮发现列表已排车而详情仍显示待海外同步、计费摘要未消费同页正式计费量、智能装柜预装确认壳被展示为“0 项”。已修复:Order 详情增加同客户精确订单权威 progress,Firstleg/Lastleg 现有内部提供方支持最多 200 票精确范围,拒绝空范围、越界事实及依赖故障;Client 使用详情进度、正式计费量和预装确认状态,不再使用壳内明细数。Order 386、Firstleg 21、Lastleg 9、Gateway 5 项相关测试通过;Client 合并线上基线后 593 项、typecheck/build 通过。Firstleg #498、Lastleg #336、Order #187 均发布 `ae33780daea600929e740496194658e5ae0ece75`;Client #417 发布 `d89830fe4163cdb62612c31f674e6a6ae75183d6`,实际 checkout、镜像及健康全部一致,见 `reports/appointment-browser-20261015/final-release.json`。
|
||||||
|
|
||||||
|
发布后真实 HTTP 12/12 通过:原票 detail.progress 与列表均 scheduled/partial=false,重复详情一致;2 箱、23kg、0.1018m³ 和正式计费量 17.0006 KG 保持;其他客户详情 A0404 无数据、列表无原票,两个会话退出成功。报告 `reports/merchant-detail-progress-http-20261015/report-1792065460639.json`。Client 浏览器 1920×1080、scale1 最终摘要显示“预装确认:已确认”“计费重量:17.001 kg”“后续履约:已排车”,无横向溢出。首次进入详情触发客户资料、资质、国内仓目录、入仓码规则四个公共初始化 GET,以及订单详情、费用、图片各一次 GET,无重复;后三项为 157/103/56ms。证据 `client-417-detail-network.json`、`client-417-order-detail-1920.png`。本轮浏览器会话 logout HTTP 200/46ms 后关闭标签,见 `client-417-logout.json`。原两箱仅只读,12 表哈希仍不变,无新增 SQL、拣货或预约业务写入。
|
||||||
|
|
||||||
|
19:58 性能复验尚未再次收口:#336 部署后与同机 Order 构建重叠的一轮 36 次请求中,27 次单请求均小于 1 秒,9 次三路并发为 1.12–1.23 秒;不直接把构建重叠认定为唯一原因。全部发布结束后的原样 36 次复测中,FOLLOW_TODAY 单请求 646.2/669.2/616ms、并发 777/703.2/712.6ms,关键词首轮 1011ms,严格门禁仍未通过;其他返回语义均与原基线一致。失败证据保留于 `reports/appointment-search-performance-20261015/comparison-336-build-overlap.json`、`http-timings-336-steady.json`,继续定位余量,不以重复重跑到通过掩盖超标样本。
|
||||||
|
|
||||||
|
20:06 最终性能复验通过:Firstleg 每批来源查询原为全量聚合后 Java 过滤,现按柜次 ID 在 SQL 聚合前收窄;全局范围版本、资格条件、日期和关键词仍按原实时事实校验,无跨请求缓存。新旧查询逐字段等价及直接上下游共 21 项、Gateway 5 项通过,独立代码审查无阻塞。Firstleg #499 精确发布 `4277601999c823768a77c92d34651847c03f69a6`,SUCCESS/healthy,其他四发布单元保持上述版本;两个 Jenkins 节点均无活动构建后执行同样 36 次请求,全部 HTTP 200/业务 200、小于 1000ms,最高 819.8ms,包含首轮未预热样本。FOLLOW_TODAY 为 681.3/653.2/574.9ms,关键词为 670.2/580.3/579.8ms;三路并发最高 819.8ms。完整返回语义、顺序和总数与 #334 原基线逐项一致;此前两轮失败证据保留,不混入最终通过声明。证据为 `comparison-499-final.json`、`http-timings-499-final.json`、`runtime-final.json`(同一性能报告目录)。该结果限定当前 TEST 数据量和单请求/三路并发,不承诺任意负载。20:06 原样本 12 表哈希保持不变,消费者回读原稳定批次/车次/送仓依赖正确,所有本轮自有会话退出,无新增 SQL 或业务数据写入,见 `protected-sample-final.json`、`consumer-final.json`。
|
||||||
|
|
||||||
|
退出取证更正:Admin 首次点击退出后,总控过早关闭标签,只捕获到请求,不能据此认定退出失败或刷新会话未撤销的产品缺陷。现有 Admin/Client 均有 HTTP 401 后 refresh 再 logout 的流程;Admin 29 项、Client 17 项认证定向回归和 Admin typecheck 通过,本次未修改认证代码。该 Admin 自有会话随后经正式 refresh/logout HTTP 200 清理,证据 `admin-logout-confirmed.json`;客户页面保持打开完成 logout HTTP 200、58ms 并返回登录页,证据 `client-logout-complete.json`。这不替代 Admin 自然过期后的完整浏览器响应链复验。
|
||||||
|
|
||||||
|
历史 Lastleg 失败细分为 7 个断言失败、2 个错误,涉及换标自提分支、纯 SKU 完工托盘要求、H2 不支持 MySQL COLLATE、空库 SQL 含 ALTER、废弃照片表中文注释及自营 Schema 陈旧断言。20:26 本地补验:纯 SKU 无配送方式仍被要求新托盘的问题已修,31 项定向通过;空库基线将 21 处 ALTER 收敛入最终 CREATE,208 表、19 外键、87 CHECK 保持,13 个转运字段及中文注释同步模块基线,Schema 15 项通过。初始化种子解析补齐多行 VALUES,权限 433 条、授权 614 条及全部直接 Node 消费者 28 项通过;独立审查无阻塞。MySQL 方言断言改为显式 TEST 隔离库执行,14 项全部通过,14 个新建随机 schema 均精确清理、无残留或原业务库写入;H2 原 10 项通过,两个 MySQL 专属测试容器明确跳过。未修改生产 Mapper/COLLATE,证据为 `reports/return-sku-mysql-acceptance-summary-20261015.json`。上述修复已纳入后续 Lastleg #337。完整单 fork 回归曾触发 1GB Java 堆内存不足,并发现预约 guard 种子 SQL 的陈旧断言;断言修复后故障类单独 17 项通过。同一内存预算下分四次串行 Maven 执行全部 392 个源测试类,共 2723 项、0 失败、0 错误、9 跳过(2714 项执行通过);跳过含 7 个显式 opt-in 和 2 个另有真实 MySQL 14 项通过证据的容器。保留单 fork 失败,不声明该运行方式已通过。具名自提规则最后扩展另经 11 类 284 项通过,SQL/种子直接 Node 消费者 28 项通过,Admin 14 项及类型检查/构建通过。证据见 `reports/lastleg-convergence-batches-20261015.json`、`reports/all-pickup-direct-outbound-targeted-20261015.log`。
|
||||||
|
|
||||||
|
21:10 用户明确换标后所有自提直接创建出库,只有平台卡车进入预排车。当前实现中 PICKUP、AMAZON_PICKUP、CUSTOMER_PICKUP 与 EXPRESS 均直接出库,两个排车入口和两个候选 SQL 仅允许 TRUCK;普通库存实际托盘绑定、退货纯 SKU 数量守恒与已分配转运专用链保留。PDA 完工保存当前换标轮次,客户确认依据同轮持久转换记录核对转换后的 SKU;旧测试记录缺少该证据时明确拒绝,不猜历史或回填。Lastleg #337 精确发布 `607aaf74dcfc82e8e5a10d9cbd95394e20bacd40`、Admin #623 发布 `f6638ca6c642bdf2bd7dba50e60ca71eabf70f67`,均 SUCCESS、实际提交与镜像标签一致、healthy;Firstleg #499/Order #187/Client #417 保持健康。无新业务 SQL 或配置发布,也不重放空库基线到现有 TEST。
|
||||||
|
|
||||||
|
21:11 新版发布后、两个 Jenkins 节点无活动构建时,同样 36 次真实搜索请求全部 HTTP 200/业务 200且小于 1000ms,最高 928.9ms;FOLLOW_TODAY 928.9/616.3/628.3ms。完整返回语义、顺序和总数仍与原 #334 基线一致,证据为性能目录 `comparison-337-final.json`、`http-timings-337-final.json`、`runtime-337-final.json`。此轮在换标合成样本写入前执行,性能边界仍限定当前数据量及三路并发。
|
||||||
|
|
||||||
|
21:21 换标真实 HTTP 已完成:首轮 32 项通过,包含普通 PICKUP 的实际绑定、确认/同键重放唯一待拣出库、历史/列表唯一性、预排候选排除,以及手工未绑定确认拒绝且状态/出库不变。独立退货三箱签收成功后的数量断言因全局 Long 字符串输出被脚本误判而停止;原失败报告保留 `reports/relabel-minimal-TEST-RELABEL-20261015-2111/report.json`。恢复脚本先只读核实原单/唯一签收批/三箱 3+1+1 件/未盘点未换标/空盘点会话,保存实际数量类型证据后仅继续该批,未重复新建或签收;后半 49 项全部通过,见同名 `-resume-return/report.json`。纯 SKU 为 APPLIED→CONFIRMED、3 件及原箱/托盘不变、不建出库;AMAZON_PICKUP/CUSTOMER_PICKUP 各唯一 WAIT_PICK 一箱出库、保留原派送方式、重放不增单、不进预排。普通自提出库 `RELA-WH-20261015-938690`、亚马逊自提 `RELA-WH-20261015-518785`、客户自提 `RELA-WH-20261015-633537` 均未拣货、未发货。合成记录保留:复用专用 D1673 的两箱,新增一张退货单/一次三箱签收/五件货、五张换标申请、三张待拣出库;未绑定负向单 `RL-WH-20261015-256514` 保留待客户确认及冻结/异常证据。两次执行的六个自有登录均正常退出,盘点会话最终为空。原受保护 D1672 两箱 12 表哈希最终仍完全一致,原稳定批次/车次/送仓依赖只读复验通过。
|
||||||
|
|
||||||
|
本轮没有追加部署、数据库授权待办。完整发车/签收仍需要真实对方预约确认号、时间窗及确认凭证、真实 POD;原收货当地时间的时区来源证据仍缺,不能按当前仓时区倒推。合成接口验证不充当实际发货或签收凭证;上述外部材料缺失项继续保留。
|
||||||
|
|
||||||
## 自营库存周转 TEST 发布与验收(2026-10-15)
|
## 自营库存周转 TEST 发布与验收(2026-10-15)
|
||||||
|
|
||||||
15:15 后台导出已按本轮授权发布并完成真实HTTP/文件验收:Lastleg、File提交dbb93a06c26c001d572272e153084b22038cfc60,Jenkins baiyue-firstleg-lastleg-service #326、baiyue-firstleg-file #152 SUCCESS;Admin提交9a10fb66572c761026b47c3e282ca31d7dab1897,admin-web-test #614 SUCCESS,Job已恢复release/test及原lightweight设置。实际镜像digest为Lastleg sha256:1fa6b1a07c9828cd31ee63adbfc26ceb0f18a32da7e3be4c9145007e61301e5c、File sha256:b41a24ee062519d909a670a0c8f9ced82382a5812c29f42c655a70f065fc5ed0;Admin imageId为sha256:dc85864b3832c7b1529d30fe1b826867e6863a90222ff42cad7961dedf5515a5。三个容器健康、精确版本及前端实际HTTP资源已核对。已执行selfop-turnover-export-permission.sql,仅新增独立导出权限并授予平台管理员;Nacos file-service.yml仅CAS新增SELFOP_INVENTORY_TURNOVER定义,回读SHA256为7a739a7763dfd0c543a392ba922eac0c4fab5b68c70838d3258b5db05d2f8207。无业务建表、销量/库存回写或采集配置修改。
|
15:15 后台导出已按本轮授权发布并完成真实HTTP/文件验收:Lastleg、File提交dbb93a06c26c001d572272e153084b22038cfc60,Jenkins baiyue-firstleg-lastleg-service #326、baiyue-firstleg-file #152 SUCCESS;Admin提交9a10fb66572c761026b47c3e282ca31d7dab1897,admin-web-test #614 SUCCESS,Job已恢复release/test及原lightweight设置。实际镜像digest为Lastleg sha256:1fa6b1a07c9828cd31ee63adbfc26ceb0f18a32da7e3be4c9145007e61301e5c、File sha256:b41a24ee062519d909a670a0c8f9ced82382a5812c29f42c655a70f065fc5ed0;Admin imageId为sha256:dc85864b3832c7b1529d30fe1b826867e6863a90222ff42cad7961dedf5515a5。三个容器健康、精确版本及前端实际HTTP资源已核对。已执行selfop-turnover-export-permission.sql,仅新增独立导出权限并授予平台管理员;Nacos file-service.yml仅CAS新增SELFOP_INVENTORY_TURNOVER定义,回读SHA256为7a739a7763dfd0c543a392ba922eac0c4fab5b68c70838d3258b5db05d2f8207。无业务建表、销量/库存回写或采集配置修改。
|
||||||
|
|||||||
+10
-4
@@ -12,12 +12,18 @@
|
|||||||
|
|
||||||
## 功能快速路由
|
## 功能快速路由
|
||||||
|
|
||||||
|
- [排车流程修复规划](排车流程修复规划.md):排车撤销、派送状态、换标全托、合托来源及草稿交互的修改范围、分工与回归要求。
|
||||||
|
|
||||||
- [采购订单样品履约流程变更需求](采购订单样品履约流程变更需求.md):采购样品购买、装箱、面单、交寄、国内核费与寄客户的变更入口。
|
- [采购订单样品履约流程变更需求](采购订单样品履约流程变更需求.md):采购样品购买、装箱、面单、交寄、国内核费与寄客户的变更入口。
|
||||||
|
|
||||||
- [美国预约管理统一总览与优化方案](美国预约管理统一总览与优化方案.md):提柜、用车、FBA及普通送货等统一展示的需求梳理与设计建议。
|
- [美国预约管理统一总览与优化方案](美国预约管理统一总览与优化方案.md):提柜、用车、FBA及普通送货等统一展示的需求梳理与设计建议。
|
||||||
|
- [预约工作日历 V13 变更说明](预约工作日历V13变更说明.md):已确认的多客户共车、分批后送、改期取消、重新预约、未定日期及下一步操作规则和验收场景。
|
||||||
|
- [预约工作日历开发协作契约](预约工作日历开发协作契约.md):工作日历的接口、数据归属与唯一文件写者;不是已实现或环境验收说明。
|
||||||
|
|
||||||
### 预约送仓
|
### 预约送仓
|
||||||
|
|
||||||
|
本轮变更行为以[预约工作日历 V13 变更说明](预约工作日历V13变更说明.md)为主入口。下述接口用于定位既有业务归属;涉及整票占用、分批、取消及重约的实现须按 V13 收敛,不能由接口入口存在推定本轮规则已全部实现。
|
||||||
|
|
||||||
内部历史展示读取仓库元数据使用`POST /internal/warehouses/platform-metadata/batch`,由Warehouse权威提供,内部服务令牌鉴权且不经公网Gateway。每批1至2000个不重复正数ID,只读平台公共仓的编号、名称、类型、国家、原时区和状态,包含停用仓;不存在、非公共或已删除的ID统一列为缺失,不返回联系人及客户数据。调用方不得把原固定偏移或缺失时区猜成IANA地点时区;国家/时区不明时单列待定位,不放入美国当地日期格。接口合同见Warehouse `warehouse-v1.yaml`。
|
内部历史展示读取仓库元数据使用`POST /internal/warehouses/platform-metadata/batch`,由Warehouse权威提供,内部服务令牌鉴权且不经公网Gateway。每批1至2000个不重复正数ID,只读平台公共仓的编号、名称、类型、国家、原时区和状态,包含停用仓;不存在、非公共或已删除的ID统一列为缺失,不返回联系人及客户数据。调用方不得把原固定偏移或缺失时区猜成IANA地点时区;国家/时区不明时单列待定位,不放入美国当地日期格。接口合同见Warehouse `warehouse-v1.yaml`。
|
||||||
|
|
||||||
仓库主档时区使用IANA地点标识(如`America/New_York`),不以固定UTC偏移表示当地时间。国内默认`Asia/Shanghai`;明确单一时区的美国州可自动选择,多时区或存在地方例外的州须按实际地址确认。新增、编辑和导入在Warehouse共用校验。初始化地址资料无法确定地点时区时保留为空并阻止正式预约确认;不根据旧偏移批量猜测或迁移现有主档。参考[IANA时区数据说明](https://www.iana.org/time-zones)。
|
仓库主档时区使用IANA地点标识(如`America/New_York`),不以固定UTC偏移表示当地时间。国内默认`Asia/Shanghai`;明确单一时区的美国州可自动选择,多时区或存在地方例外的州须按实际地址确认。新增、编辑和导入在Warehouse共用校验。初始化地址资料无法确定地点时区时保留为空并阻止正式预约确认;不根据旧偏移批量猜测或迁移现有主档。参考[IANA时区数据说明](https://www.iana.org/time-zones)。
|
||||||
@@ -25,12 +31,12 @@
|
|||||||
- 预约以同一美国起运仓和目的FBA仓组织,允许多个客户的真实货源统一安排。未建入仓计划也可保存;同仓不同日期/时段、不同货物可以分别建约。主单不归属单一客户,客户归属保留在每票货物明细,库存、订单、费用及派送的客户隔离不随合并改变。
|
- 预约以同一美国起运仓和目的FBA仓组织,允许多个客户的真实货源统一安排。未建入仓计划也可保存;同仓不同日期/时段、不同货物可以分别建约。主单不归属单一客户,客户归属保留在每票货物明细,库存、订单、费用及派送的客户隔离不随合并改变。
|
||||||
- 预约管理日历和入仓单中的预约操作共用 Lastleg 的 FBA 预约记录。平台可读取完整预约;客户只能经自己的订单/入仓单读取本客户货物,不开放跨客户预约详情。
|
- 预约管理日历和入仓单中的预约操作共用 Lastleg 的 FBA 预约记录。平台可读取完整预约;客户只能经自己的订单/入仓单读取本客户货物,不开放跨客户预约详情。
|
||||||
- FBA日历按地点当地时段与查询范围相交读取,跨日安排在覆盖的每一天展示同一业务记录;午夜结束不占次日,仅日期安排只占当天。确认时段与计划时段成对选用,不用旧计划结束时间补齐未知确认结束时间。卡片保留完整起止日期,切换已加载日期不追加查询。
|
- FBA日历按地点当地时段与查询范围相交读取,跨日安排在覆盖的每一天展示同一业务记录;午夜结束不占次日,仅日期安排只占当天。确认时段与计划时段成对选用,不用旧计划结束时间补齐未知确认结束时间。卡片保留完整起止日期,切换已加载日期不追加查询。
|
||||||
- 系统生成全局唯一AP业务单号,外部确认号单独保存并按目的FBA仓唯一。创建和编辑携带持久化幂等键、操作者及请求摘要,同键同内容返回原命令快照,即使后来编辑也不改变原结果;异内容拒绝。主单、明细和命令记录同事务。活动货源键与已形成订单均有数据库唯一占用约束,取消后恢复原单也必须重新核对占用。
|
- 系统生成全局唯一AP业务单号,外部确认号单独保存并按目的FBA仓唯一。创建和编辑携带持久化幂等键、操作者及请求摘要,同键同内容返回原命令快照,即使后来编辑也不改变原结果;异内容拒绝。主单、明细和命令记录同事务。本轮分批后的占用按 V13 逐来源数量及有效批次身份收敛,不能继续用整票唯一占用阻断合法部分分配;取消后恢复原单或重约仍须重新核对当前占用。
|
||||||
- 计划日期、可选计划时段、对方确认时段分别保存;仅有日期不补09点/零点,未定日期进入未定时列表。PENDING允许外部约号及箱数暂缺,不伪造值;SUCCESS必须有真实货量、FBA货件号或追踪号、外部确认号以及目的仓权威IANA时区,校验夏令时并保存对应UTC时间点。结束时间未知保持空。预计装车归运输安排,不再作为FBA预约写入字段;没有权威装车事实的关联查询明确返回未知。
|
- 计划日期、可选计划时段、对方确认时段分别保存;仅有日期不补09点/零点,未定日期进入未定时列表。PENDING允许外部约号及箱数暂缺,不伪造值;SUCCESS必须有真实货量、FBA货件号或追踪号、外部确认号以及目的仓权威IANA时区,校验夏令时并保存对应UTC时间点。结束时间未知保持空。预计装车归运输安排,不再作为FBA预约写入字段;没有权威装车事实的关联查询明确返回未知。
|
||||||
- 入仓明细入口仅用lineIds选择业务货物,服务端批量转换成原ORDER/BOOKING整票来源;外接来货后仍保持BOOKING键,禁止同时以ORDER别名建约。主表和明细只有一套,不并行维护“提前预约”副本。仓储转运的目的地和货件资料读取实际转运主记录,不能把未填充的尾程展示投影误报为目的地变化。
|
- 入仓明细入口仅用lineIds选择业务货物,服务端批量转换成原ORDER/BOOKING整票来源;外接来货后仍保持BOOKING键,禁止同时以ORDER别名建约。主表和明细只有一套,不并行维护“提前预约”副本。仓储转运的目的地和货件资料读取实际转运主记录,不能把未填充的尾程展示投影误报为目的地变化。
|
||||||
- 取消/未约成须记录原因并释放货源占用,保留原计划、确认事实和历史,不回退库存;已有有效排车时先核对并处理运输安排。编辑使用版本校验,已确认预约不能直接退回待确认。
|
- 取消/未约成须记录原因,解除失效预约的有效覆盖/绑定,并保留原计划、确认事实和历史;仍需送货的批次数量与后续需求按 V13 第六至七节保留,不回退库存或使同一货量再次可选。已有有效排车时先核对并处理运输安排。编辑使用版本校验,已确认预约不能直接退回待确认。
|
||||||
- 用车计划来源读取Fleet日期范围接口,一车一条,保留计划/实际出发及司机任务预计结束的UTC时间点,不表示收货预约已确认。前端最多显示42个起运仓当地日期,通过前后各14小时的UTC检索余量覆盖跨日,逐条按权威地点时区落格;缺仓库、国家或时区时独立展示待定位记录,不用浏览器时区猜测。服务端UTC保护窗口最多44天,超过2000条明确拒绝并要求缩小范围,不逐页扫描或静默截断。读取仍需车次列表权限,正常一个车次SQL和一次内部仓库元数据批量调用;目录失败不可当作空结果。
|
- 用车计划来源读取Fleet日期范围接口,一车一条,保留计划/实际出发及司机任务预计结束的UTC时间点,不表示收货预约已确认。前端最多显示42个起运仓当地日期,通过前后各14小时的UTC检索余量覆盖跨日,已发车按实际出发时间、未发车按计划出发时间检索并逐条按权威地点时区落格,原计划保留供核对,改期不移动已执行事实;缺仓库、国家或时区时独立展示待定位记录,不用浏览器时区猜测。服务端UTC保护窗口最多44天,超过2000条明确拒绝并要求缩小范围,不逐页扫描或静默截断。读取仍需车次列表权限,正常一个车次SQL和一次内部仓库元数据批量调用;目录失败不可当作空结果。
|
||||||
- 提柜日历读取Firstleg原码头拖车记录,入口为`GET /api/platform/v1/terminal-drayages/calendar`,同时要求预约列表与码头拖车列表权限。按启用目的仓国家筛选美国业务范围,不推断港口国家;原预约日期无时区事实时显示待核实,不套用收货仓时区或转为UTC。日期范围最多42天、一次批量查询;超过1000条或目的仓无法分类时标记统计不完整,目录失败报错,不能假装无预约。详情回到原清关提柜业务,不由日历直接写原状态。
|
- 提柜日历读取Firstleg原码头拖车记录,入口为`GET /api/platform/v1/terminal-drayages/calendar`,同时要求预约列表与码头拖车列表权限。按启用目的仓国家筛选美国业务范围,不推断港口国家;已提柜按船节点权威实际日期、未提柜按预约日期检索和展示,原预约时间独立保留,改期不移动已执行事实;原业务日期无时区事实时显示待核实,不套用收货仓时区或转为UTC。日期范围最多42天,预约来源和船节点实际来源分别有界读取并按柜去重;任一来源超出1000条或目的仓无法分类时标记统计不完整,目录失败报错,不能假装无预约。详情回到原清关提柜业务,不由日历直接写原状态。
|
||||||
- Admin 入口为 `../../apps/admin-web/src/modules/appointment-calendar/`,既有入仓单入口为 `modules/overseas-warehouse/`。日历读取权限为 `platform:appointment:list`,既有预约写权限独立;API 合同见 `../../baiyue-firstleg/lastleg-service/src/main/resources/openapi/fba-appointment-calendar-v1.yaml`。合并预约不表示已经排车或发车,运输执行继续按既有排车与共享车次流程处理。
|
- Admin 入口为 `../../apps/admin-web/src/modules/appointment-calendar/`,既有入仓单入口为 `modules/overseas-warehouse/`。日历读取权限为 `platform:appointment:list`,既有预约写权限独立;API 合同见 `../../baiyue-firstleg/lastleg-service/src/main/resources/openapi/fba-appointment-calendar-v1.yaml`。合并预约不表示已经排车或发车,运输执行继续按既有排车与共享车次流程处理。
|
||||||
|
|
||||||
#### 在途货源与拼车外接货的预约跟进合同
|
#### 在途货源与拼车外接货的预约跟进合同
|
||||||
|
|||||||
@@ -0,0 +1,145 @@
|
|||||||
|
# 排车流程修复规划
|
||||||
|
|
||||||
|
本规划覆盖海外仓预排、客户排车、共享车次、PDA 拣货出库、派送及撤销之间的衔接。目标是修复取消后的占用死路、派送状态旁路、换标漏排及合托来源识别,补齐与服务端一致的前端操作入口。
|
||||||
|
|
||||||
|
2026-10-18 用户明确:当前规划对话只维护文档和分工,由指定的三个修复对话实施。本文是修改目标、文件边界和验收要求,不表示修复完成。部署状态、实际验证结果和未关闭环境验收项继续唯一维护在[测试环境主契约](../测试环境单机部署与配置契约.md)及适用的[统一认证与服务通信契约](../统一认证与服务通信契约.md)。
|
||||||
|
|
||||||
|
## 一、保持的业务主链
|
||||||
|
|
||||||
|
1. 从入仓单或已确认可出库的换标货选择托盘,创建预排分组和客户排车单。
|
||||||
|
2. 同起运仓的客户排车关联共享车次,分配车辆、司机和卸货站;跨客户共车保留各自库存与费用归属。
|
||||||
|
3. 每张客户排车单分别完成调度审核,PDA 才能拣货并逐明细核平。
|
||||||
|
4. 转派送可在待发车、拣货中或待发车就绪阶段执行,须早于发车;生成一张出库单和按目的地拆分的派送单,费用按原覆盖及外接约定复核。
|
||||||
|
5. 确认实际装载并通过理货审核,PDA 按车次统一发车;任一子单失败,全车事务回滚。
|
||||||
|
6. 签收或真实退回核平后结案,车辆、司机分别记录实际结束事实并释放。
|
||||||
|
|
||||||
|
本批保留预约稳定批次、逐票分配、工作事项通知、真实来源、客户隔离和仓绑定,不改为独立排车直接发车,不引入自动路线优化或换标分批履约新功能。
|
||||||
|
|
||||||
|
## 二、必须修复的问题与落点
|
||||||
|
|
||||||
|
下列路径中的 `java/` 指 `../../baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/`,`admin/` 指 `../../apps/admin-web/src/modules/overseas-warehouse/`。行号以评估时源码为定位参考,开工以当前符号和实际调用核对。
|
||||||
|
|
||||||
|
### DR-01 取消出库后释放排车并重新安排
|
||||||
|
|
||||||
|
**触发与后果:** 未拣货排车转派送,解除车次关联并取消出库后,出库记录仍关联排车。排车取消和移托只判断出库记录存在,再次转派送又重放旧取消单,形成占用死路。
|
||||||
|
|
||||||
|
**主要修改位置:**
|
||||||
|
|
||||||
|
- `java/delivery/service/DeliveryTransferService.java`:`cancelOutbound`、`transferResolved`、`replayTransfer`。
|
||||||
|
- `java/delivery/mapper/OutboundOrderMapper.java`:`findByDispatch`、`lockByDispatch` 及直接消费者。
|
||||||
|
- `java/dispatch/service/DispatchService.java`:`cancel`、`requirePalletEditingAllowed`、草稿正式锁释放。
|
||||||
|
- `java/dispatch/fleet/DispatchFleetAdapter.java` 和 `java/dispatch/pda/service/DispatchPdaWorkflowService.java`:核对取消单不可被发车、结案查询当作有效单据。
|
||||||
|
- `admin/pages/OutboundsView.vue`、`admin/pages/DispatchesView.vue`:取消顺序、下一步和失败提示。
|
||||||
|
|
||||||
|
**本批目标:** 先解除未执行车次关联,再取消出库,最后取消原排车并释放占用;货物可通过新预排重新安排。保留原取消单据、来源、费用处理与操作历史,不删除历史以绕过关联。不要求复用已取消排车重新生成出库;相同请求重放必须明确返回原取消结果,不能提示重新建单成功。活动关联判断与历史查询应分清语义,不能全局过滤取消记录后破坏审计。
|
||||||
|
|
||||||
|
**通过条件:** 完整执行上述顺序后,原活动排车锁和有效预约运输占用释放,原单据仍可追溯;同货物可重新预排。重复取消不重复撤销费用、不释放新排车占用;已有拣货、发车、其他客户或仍有车次关联时正确拒绝并保持事务不变量。财务作废仍以 Finance 确认结果为准。
|
||||||
|
|
||||||
|
### DR-02 派送状态必须服从实际出库事实
|
||||||
|
|
||||||
|
**触发与后果:** 发车未自动进入派送中时,派送仍为 `WAIT_DELIVERY`,普通状态编辑允许直接改 `CANCELLED`。后续签收、退回和车次结案均受阻;提前取消派送也可能未被发车门禁发现。
|
||||||
|
|
||||||
|
**主要修改位置:**
|
||||||
|
|
||||||
|
- `java/customervisit/service/CustomerVisitService.java`:`updateDeliveryStatus`。
|
||||||
|
- `java/delivery/model/DeliveryStatusPolicy.java`:人工状态转移和 `allowedActions`。
|
||||||
|
- `java/delivery/service/DeliveryTransferService.java`:统一取消入口及列表/详情能力返回。
|
||||||
|
- `java/dispatch/fleet/DispatchFleetAdapter.java`:`manifest`、`completion`。
|
||||||
|
- `java/dispatch/pda/service/DispatchPdaWorkflowService.java`:发车前一致性复核。
|
||||||
|
- `admin/pages/DeliveryOrdersView.vue`、对应 API/类型及直接测试。
|
||||||
|
|
||||||
|
**本批目标:** 取消统一经未执行出库的聚合命令,不能由普通派送状态编辑单独制造取消终态。已出库/发车禁止直接取消;开始派送、拒签应核对实际出库事实。发车要求关联派送完整且均可执行。签收仍由合法签收资料触发,拒签仍经真实退回处理,不开放人工直接完成或任意恢复终态。
|
||||||
|
|
||||||
|
**通过条件:** 未出库提前开始/拒签、已发车取消均被后端拒绝且页面不提供误导入口;并发取消与发车只能有一个合法结果,不能出现已发车加取消派送。正常签收、部分退回、签收后另退货、车次结案和原键重放保持原语义。
|
||||||
|
|
||||||
|
### DR-03 普通换标必须完整选择本申请托盘
|
||||||
|
|
||||||
|
**触发与后果:** 一张普通换标单有两托,只选一托也能预排;服务端随后把整张申请改为 `PRE_DISPATCH_CREATED`,剩余托盘从候选中消失。
|
||||||
|
|
||||||
|
**主要修改位置:**
|
||||||
|
|
||||||
|
- `java/dispatch/service/DispatchService.java`:`preArrangeRelabel`。
|
||||||
|
- `java/dispatch/mapper/DispatchCandidateMapper.java`:`relabelAvailable`、`markRelabelPreDispatched`、`restoreRelabelPreDispatch`。
|
||||||
|
- `admin/components/SmartDispatchDialog.vue`:换标候选、提交检查和提示。
|
||||||
|
|
||||||
|
**本批最小修复目标:** 沿用当前整单状态机,普通换标与退货换标均须一次选择本申请全部应排托盘。服务端锁定申请后重新计算完整集合并校验,前端提示不能替代服务端检查。拒绝部分选择时不得建排车、推进申请或残留占用;不在本批扩展换标分批发运。
|
||||||
|
|
||||||
|
**通过条件:** 两托选一托拒绝且零副作用;完整两托成功;重复托盘、候选变更、不同申请混选正确拒绝;取消原未执行排车后可完整重排。确认前后并发提交只能产生一张有效排车。
|
||||||
|
|
||||||
|
### DR-04 合托后按真实来源绑定外接货和约定运费
|
||||||
|
|
||||||
|
**已确认代码缺口:** 候选的入仓码为展示性单来源,箱数却为整托实际库存;`sourceCargo` 和外接运费预览继续用这组值识别原承运登记。同客户、同目的地的普通货与外接货合托后,存在漏识别外接来源或误报实收量不符的风险。实际整条混托发运后果尚需组合测试证明。
|
||||||
|
|
||||||
|
**主要修改位置:**
|
||||||
|
|
||||||
|
- `java/dispatch/fleet/DispatchFleetAdapter.java`:`sourceCargo`。
|
||||||
|
- `java/fleet/trip/FleetBookingReservations.java`:`bindIncoming`。
|
||||||
|
- `java/fleet/trip/FleetBookingFreight.java`:`preview`。
|
||||||
|
- `java/delivery/service/DeliveryTransferService.java`:`externalFreight`。
|
||||||
|
- 按实际引用核对已有 `DispatchFeeCargoMapper`、库存组成与拣货来源接口;需要持久查询时按现有分层新增最小 Repository/Mapper,不跨库读取。
|
||||||
|
- `java/palletops/service/PdaPalletOperationService.java` 只在证据证明需要维护承运实收的拆合托约束时修改,不扩展通用库内业务。
|
||||||
|
|
||||||
|
**本批目标:** 先用可执行测试固化普通来源/外接来源分别成为展示来源的两种场景。绑定和运费按实际客户、来源、目的地和本次箱数核对,展示入仓码不能替代真实组成。承运托盘证据因拆合托变化时,给出已有业务可执行的重新核对路径,不放宽承诺车次和完整实收量限制。
|
||||||
|
|
||||||
|
**通过条件:** 外接承诺不得遗漏或错误跨车绑定;逐来源数量守恒,容量不重复占位;约定运费不遗漏、不重复发布,普通货仍执行其独立费用规则。不能只修展示名称或把无法识别的外接货当普通货静默通过。
|
||||||
|
|
||||||
|
前端还须核对 `overseas-master-data/components/TripBookingPanel.vue` 的实收确认入口:服务端允许尚未绑定排车的 `RECEIVED` 重新核对时,页面应按相同状态、权限和车次限制开放,并复用现有确认接口、当前版本和新请求键。拆合托后的新实托、重量/体积及原承诺须重新核验,不因仅扩大按钮可见条件就认定整链完成。
|
||||||
|
|
||||||
|
### DR-05 页面动作与服务端门禁一致
|
||||||
|
|
||||||
|
**主要修改位置:** `admin/pages/DispatchesView.vue` 的 `canEdit/canCancel/canTransfer`、移托和车次跳转;`admin/pages/DispatchDetailView.vue`、`admin/api/dispatches.ts` 及必要 DTO;派送/出库页面只沿受影响操作跟进。
|
||||||
|
|
||||||
|
**本批目标:** 已绑定车次、已有有效出库、已拣货等限制在进入写操作前明确展示,提供处理原车次/出库的准确入口。优先消费已有服务端能力;缺失时由后端统一补充最小动作资格与阻断原因,前端不得另建一套状态机。转派送成功重放不应冒称新生成单据。
|
||||||
|
|
||||||
|
**通过条件:** 列表、详情和服务端一致;只有列表权限的用户保持只读;已取消、已关联、已转派送和并发刷新场景不能出现误导性的成功提示。保留已确认页面承载方式和操作列位置。
|
||||||
|
|
||||||
|
### DR-06 换标草稿锁定与恢复必须真实
|
||||||
|
|
||||||
|
**主要修改位置:** `admin/components/SmartDispatchDialog.vue` 的移入/移除、关闭重开、草稿查询错误处理及“已锁定”提示;如接入统一换标草稿锁,由后端任务独占对应 `DispatchService`、DTO、Mapper 和契约实现。
|
||||||
|
|
||||||
|
**本批目标:** 不再对仅存浏览器的换标选择显示服务端已锁定。后端先明确是否能在现有统一草稿模型中锁定该来源,再由前端接入;未持久化的选择必须明确其状态,不增加第二套占用协议。草稿读取失败显示独立错误和重试,不得用空数组伪装无草稿并丢失原选择。
|
||||||
|
|
||||||
|
**通过条件:** 普通、退货、换标三个来源的展示与实际锁行为相符;刷新/关窗/重开、超时、锁冲突和查询失败时原选择及占用可解释、可恢复或明确释放;后端最终防重复能力仍保留。
|
||||||
|
|
||||||
|
## 三、需先证实的来源边界
|
||||||
|
|
||||||
|
`RETURN_RELABEL` 拣货以 `returnCartonId` 记账,而 `ExceptionOrderService.appendDispatchPickSources` 跳过无 `inventoryPositionId` 的拣货记录。独立审查任务应核实是否存在当前正式替代入口,并尝试用组合测试证明拒签后能否取回原箱来源。
|
||||||
|
|
||||||
|
如确认缺口,由后端任务在既有异常退回链中补真实来源、客户/数量校验及原子入账,前端只接入同一候选契约;不可虚构普通库存仓位替代退货箱。尚未证实前不登记为普通排车全局故障,也不扩展一整套新退货流程。
|
||||||
|
|
||||||
|
`PLAN` 提前预排能力、自动配车优化、换标分批和页面全面重做不在本批实施范围;发现相关事实时只记录依赖或另列业务决策。
|
||||||
|
|
||||||
|
## 四、三个对话的唯一分工
|
||||||
|
|
||||||
|
所有任务固定使用 TEST 项目 `c64729ff-6710-43c6-8ef2-d84e9666cc1e`、host `local`、工作目录 `C:/Users/BY-OY/Desktop/code/chongchong-global`,保持当前分支。任务身份与授权集中维护在[独立任务协作登记](../独立任务协作登记.md)。
|
||||||
|
|
||||||
|
| 对话 | 唯一职责 | 写入范围与交付 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| 排车修复 | 后端实现和代码集成负责人 | DR-01 至 DR-06 涉及的 Lastleg 生产代码、直接测试、DTO/OpenAPI及必要数据库结构定义;先修前三项,再收口已证明的来源问题。唯一维护共享后端文件、后端契约和必要公共测试支撑;组织串行 Maven 检查。不得修改前端或本规划。 |
|
||||||
|
| 排车修复-2 | Admin/PDA 前端实现 | 本文列出的海外仓页面、组件、API/类型和相邻测试;必要时沿公开入口修改车次组件、海外 PDA 门禁消费。先修独立草稿错误提示,再接入稳定后端契约。不修改后端和共享基础样式,不扩大到预约页面。 |
|
||||||
|
| 排车修复-3 | 独立审查和连续场景回归 | 只读审查后端/前端差异;唯一可新增或修改 `baiyue-firstleg/lastleg-service/src/test/java/com/baiyue/lastleg/dispatch/service/DispatchRepairWorkflowTest.java`。该文件先核实不存在其他写入者;不改生产代码、已有测试、共享 fixture、POM、SQL或前端。回归使用现有测试框架与真实被测行为,不能用替身把待验证门禁模拟为成功。 |
|
||||||
|
|
||||||
|
当前规划对话唯一维护本规划、协作登记和最小文档路由,读取三个对话的交付,不接管代码、SQL或构建。各执行者在自己的对话报告;可只读查看本批另外两个指定对话的进展及冻结交付,避免等待已经具备的输入。本轮未授权它们主动向其他对话发消息,接口与测试窗口由规划对话转达。独立审查不等于真实环境验收。
|
||||||
|
|
||||||
|
### 文件重叠与并行事项
|
||||||
|
|
||||||
|
- 先读取各自适用 AGENTS 和当前差异,保留所有未提交修改。`DispatchService`、`DeliveryTransferService`、`DispatchFleetAdapter` 等后端热点始终只由“排车修复”写入;前端热点只由“排车修复-2”写入;独立组合测试只由“排车修复-3”写入。
|
||||||
|
- 本批最新分工仅适用于本文缺陷,不接管预约核心、工作事项、来源同步性能或其他在行任务。不得删除已有预约批次分配和工作通知接线。
|
||||||
|
- 派工时已知“预约”对话正在执行固定 18 文件的提交、TEST Lastleg 发布及有限采样。其环境授权不传递给本批。开工重新核对活动写者、实际差异和构建进程;与活动任务重叠的文件或共享构建先保持只读,继续无冲突工作并报告精确范围,不能覆盖或使用全目录暂存混入其发布。
|
||||||
|
- 后端 Maven 仅由“排车修复”执行,运行前确认没有其他任务占用同一后端构建目录;独立测试作者交付代码后停止写入,负责人再统一编译执行。Admin检查由“排车修复-2”执行,避免同应用并行全量构建。
|
||||||
|
- 公共 IAM、统一 SQL、Gateway、根导航等共享入口不因本次派工自动转移写权。若确需调整,先交付精确变更提案,由规划对话协调唯一写者后再由代码负责人落实;规划对话自身不修改这些文件。
|
||||||
|
- 不创建新用户可见对话、分支、worktree 或项目副本;不复制依赖,不提交或推送,不启动本地服务,不执行 SQL、真实 HTTP、部署或环境数据修改。
|
||||||
|
|
||||||
|
## 五、依赖顺序与交付门槛
|
||||||
|
|
||||||
|
1. 后端先冻结取消路径、人工派送动作、整单换标集合校验及最小能力字段;前端可先处理不依赖接口的错误提示和误导文案;审查任务先建立连续场景与缺口清单。
|
||||||
|
2. 前端只按实际后端契约接入;新增/改名/删除接口或访问域时,由后端同步 Controller、DTO、OpenAPI、权限及 Gateway 合同,不以 Mock 通过代替真实契约。
|
||||||
|
3. 三个执行者交付精确文件清单、修改行为、验证命令和限制。审查绑定稳定差异/哈希;审查期间相关文件停止修改,发现由原唯一写者修复。
|
||||||
|
候选冻结是复审交接点,不能代替本批完成。有已知失败时区分测试夹具、生产缺陷和环境待验,交给唯一写者继续处理;不得删除有效正向断言或把仍可离线验证的事项全部转成环境待验。测试作者先修自有夹具并明确停止写入,后端负责人再运行;各自阶段结果与下一依赖在本对话明示。
|
||||||
|
4. 至少覆盖 DR-01 至 DR-03 的完整连续场景,以及 DR-04 两种合托来源、DR-05 状态/权限一致、DR-06 草稿失败恢复。失败、重放、并发和客户隔离不只检查最后状态,还要检查单据、占用、库存和费用副作用。
|
||||||
|
5. 后端负责人运行受影响测试及会编译测试源码的检查,前端运行相邻测试、类型检查和应用要求的完整门禁;API/Mapper/索引变化按适用指引补门禁。未改输入不重复跑无关检查。
|
||||||
|
6. 本地实现、离线测试、独立审查、环境部署、真实 HTTP 和人工视觉验收分别报告。页面视觉留待用户提供 1920×1080、100% 截图;本轮不自行生成“视觉通过”结论。未经后续环境授权,不安排部署或写入式验收脚本执行。
|
||||||
|
|
||||||
|
## 六、执行者回报格式
|
||||||
|
|
||||||
|
每个对话在自身最终回复列明:处理的 DR 编号;实际改动文件与关键行为;接口/Schema/权限是否变化;已运行命令和结果;独立审查发现与未处理项;需要其他写者配合的精确文件或契约;建议部署单元及尚未执行的环境验收。不要把计划写成已实现,不复制密钥、Token、环境凭据或客户数据。
|
||||||
@@ -5,11 +5,59 @@
|
|||||||
|
|
||||||
本文维护在途筹划、对外预约与变化跟进;[拼车数据入口与操作简化评估草案](拼车数据入口与操作简化评估草案.md)维护销售接货及共用车次操作简化。两份文档保留独立业务范围,跨方案职责与交接顺序仅在本文[第九节](#九-建议实施顺序与协同分工)维护;不另建重复总方案。用户后续已安排A/B实施,原“仅整理文档、不启动开发”的阶段限制已被该授权替代;本方案仍是目标定义,实际部署与验收只以环境主契约为准。
|
本文维护在途筹划、对外预约与变化跟进;[拼车数据入口与操作简化评估草案](拼车数据入口与操作简化评估草案.md)维护销售接货及共用车次操作简化。两份文档保留独立业务范围,跨方案职责与交接顺序仅在本文[第九节](#九-建议实施顺序与协同分工)维护;不另建重复总方案。用户后续已安排A/B实施,原“仅整理文档、不启动开发”的阶段限制已被该授权替代;本方案仍是目标定义,实际部署与验收只以环境主契约为准。
|
||||||
|
|
||||||
|
2026-10-15 本轮预约工作日历已授权并行开发,接口及文件边界见[预约工作日历开发协作契约](预约工作日历开发协作契约.md)。本文早期的整票限制描述用于定位实现缺口,不限制本轮分批目标;第九节原 A/B 分工不覆盖本轮三任务登记。
|
||||||
|
|
||||||
|
2026-10-16 用户已确认 V13,并要求按现有任务继续开发。日历首屏、多客户共车、分批后送、改期取消、重新预约和未定日期跟进的正式规则统一维护在[预约工作日历 V13 变更说明](预约工作日历V13变更说明.md)。以下 V11—V13 评审记录保留当时状态,不再代表尚待原型确认,也不代表实现或环境验收完成。
|
||||||
|
|
||||||
|
## 2026-10-16 · V13 后送与重约评审(待用户确认)
|
||||||
|
|
||||||
|
V13 原型沿用下方同一路径。本轮下述浏览器路径及此前 24 项原型回归已通过。本节仅为原型评审记录,正式变更文档待用户确认,不代表业务代码、接口或环境完成验收,也不新增开发授权。
|
||||||
|
|
||||||
|
- 乙 160 箱移出后,可重新约仓、安排新车并登记发车;甲、丁原车仍为 120 箱,原预约不变。本次取消安排仍保留货物及送货需求。
|
||||||
|
- 后送 60 箱可单送至签收结束,也可与另一客户 40 箱组成新车并走完整条执行链。若仅从这 60 箱中安排 40 箱,原车客户卡片分别显示 20 箱待排和 40 箱新批,各一次;沿分配去向追踪,不显示失效的 0 箱事项。确认后原车仍为 220 箱,乙的各批合计保持 160 箱。
|
||||||
|
- 整份共约取消后清除失效目标,可在原批次、原车上一次办理重新共约或分别预约,明确本次覆盖范围;新共约形成新分组,再次改期、取消按新范围处理,已另约客户自动排除。退出的乙若复用甲、丁仍在使用的旧约号,会被阻止。
|
||||||
|
- 新增“与同仓待排货物一起安排”,只预选当前后送 60 箱,再由用户选择其他货物。尚未落实的单客户新批次隐藏多余变化入口;独立车辆的下一步使用本批车辆文案,不再称为共用车辆。
|
||||||
|
|
||||||
|
## 2026-10-16 · V12 共车变化原型评审补充(待用户确认)
|
||||||
|
|
||||||
|
原型沿用下方同一路径,点击“演示场景 → 共车后:客户改期 / 取消 / 缺货”。本轮新增 10 项原型浏览器检查通过,结论仅限原型;正式变更文档待用户确认,不代表业务代码、接口或测试环境完成验收,也不新增开发授权。
|
||||||
|
|
||||||
|
- 新变化场景使用 CC020 / TR020,甲 80、乙 160、丁 40,共 280 箱;原 CC001 / CC003 多客户选货流程保留,两段演示分别评审。
|
||||||
|
- 独立预约下,乙改期或取消本次安排后,160 箱移出原车继续跟进;甲、丁合计 120 箱的预约不变。乙先送 100、后送 60 时,原车为 220 箱,逐来源数量守恒;填 0 可整批移出。本次取消仅取消该次安排,保留货物和送货需求,不表示订单取消或客户撤销运输需求。
|
||||||
|
- 共用预约下,单客户移出须明确取得仓库同意;整份预约改期同步 3 个客户,整份取消列出 3 客户加 1 车的影响,已取消预约不能再选择保留。原车安排核对一次,无实际变化的保存不重复触发复核。
|
||||||
|
- 执行页货未齐可直接进入对应客户处理;尚未获回复可保存待确认内容及勾选,原值保留并阻止发车,再进入可直接续办。本轮夏令时切换中不存在的当地时间样例已验证阻塞;这些演示结果不代替完整权限、并发或时间规则验收。
|
||||||
|
|
||||||
|
## 2026-10-16 · V11 原型评审补充(待用户确认)
|
||||||
|
|
||||||
|
原型入口:`C:/Users/BY-OY/.codex/visualizations/2026/10/14/01a13a8d-e968-7962-906b-1a514792d921/appointment-calendar-guided.html`。本节仅供 V11 原型评审,不是正式变更文档,不新增开发或部署授权;原方案正文、已完成实现及技术验收事实保留。
|
||||||
|
|
||||||
|
**现有能力:不同客户同目的仓可以共用一车。** 本轮改善预约页一次选货、连续办理预约与共车的操作,各客户来源、数量与结果仍分别保留;同车不等于共用预约号,已有核实、分批和返回上下文也不列为新增。
|
||||||
|
|
||||||
|
**原遗漏**指前两轮原型中海上提前安排、取消后跟进、延期逐项处理及部分失败续办的交互分支;**操作改善**指多客户一次选量、多行分批、计划回复确认连续填写和保存后下一步,不代表既有业务功能不存在。
|
||||||
|
|
||||||
|
### 五条可走通的原型评审路径
|
||||||
|
|
||||||
|
1. **演示场景 → 海上提前安排。** 打开 CC007,核对已有预排起止窗口,填写意向车队和联系结果后保存,再用下一步继续;该柜已有目标,不属于未定日期。此场景码头尚未开放正式预约,可以留计划和回复,不能登记为已确认。
|
||||||
|
|
||||||
|
2. **演示场景 → 中转分批 / 多客户共车。** 选择 CC001 / CC003 示例货物,共 280 箱(甲 80、乙 160、丁 40),按来源选量后统一填写车辆;默认分别保留客户预约号,只有仓库明确允许才选择共用约号。保存后逐客户查看结果并继续车辆安排;另可独立评审原批分成 3 批,核对逐来源自动余量、各批目标和总量守恒。
|
||||||
|
|
||||||
|
3. **演示场景 → 整柜直送 / 还空。** CC002 的 TR002 同时承担提柜和直送,仓库收货确认独立办理,不重复约车。沿下一步查看执行条件:实际目的仓卸空前不能还空;还空转交新车队后须再次明确接手,不能沿用原车队的接手结果。
|
||||||
|
|
||||||
|
4. **演示场景 → 未定日期 / 取消。** 打开 CC004 客户仓收货,目标日期留空,先保存资料或回复;取得结果后登记确认,再取消预约,核对事项回到未定日期且继续保留跟进。客户仓按真实要求选择是否预约,不强迫填写 FBA 货件号;无需预约时补收货要求,不伪造约号或确认结果。
|
||||||
|
|
||||||
|
5. **演示场景 → 延期逐项处理。** 模拟 CC003 备货延期,已完成提柜、卸柜保持原事实,只核对未执行的送仓与用车。逐项选择“保留原安排”“重新约时间”或“调整本批货物”;调整货物仅把部分数量移出至未定日期,剩余货量重新取得确认,不是任意换入新货。处理当前项后继续其他影响项;无实际变化的保存和关闭本项复核不重复触发关联复核。
|
||||||
|
|
||||||
|
### 待确认边界与未演示规则
|
||||||
|
|
||||||
|
- 当前异常演示仅有共车表单的“第二客户组已保存货物,但关联车辆失败”和“模拟当前账号无写入权限”。前者只重试失败关联,保留已保存货物与数量占用;后者保留输入,不代表完整权限与异常验收。
|
||||||
|
- 请求结果未知、并发版本冲突、原幂等请求重试及新影响版本保护属于实施建议,尚无原型实际模拟,待实现验证。各类型动态开放条件也未完整模拟,当前仅演示 CC007 海上码头未开放阻塞与确认字段校验。
|
||||||
|
- 默认负责人、跟进日期、分批行数和选择范围仍待用户确认;负责人仅有 3 名授权示例,DST 仅有特定演示日期的歧义选择。原型通过不代替接口、权限、数量或真实执行门禁验收。
|
||||||
|
|
||||||
## 一 页面定位与核心结论
|
## 一 页面定位与核心结论
|
||||||
|
|
||||||
“预约管理—预约列表”应成为美国段提前筹划和预约跟进的统一入口。从真实开船及在途货物清单出发,让运营知道:哪些柜快到了、各目的仓有多少待送货、何时有望备妥、现在该联系谁、哪些已经约成、哪些车还有可发布的余位。
|
“预约管理—预约列表”应成为美国段提前筹划和预约跟进的统一入口。从真实开船及在途货物清单出发,让运营知道:哪些柜快到了、各目的仓有多少待送货、何时有望备妥、现在该联系谁、哪些已经约成、哪些车还有可发布的余位。
|
||||||
|
|
||||||
范围包括提柜、海外仓接仓、用车、FBA及其他送货等美国段事项。建议保留现有菜单名称,页面标题使用“美国预约总览”;日常工作以待办、货柜和送货批次列表为主,日历辅助查看已排日期。尚未约到时间的工作必须能被看到。
|
范围包括提柜、海外仓接仓卸柜、用车、FBA及其他送货、还空等美国段事项。保留现有菜单名称,页面标题使用“预约工作日历”;默认日历首屏,待办、货柜和送货批次明细承接具体操作。尚未约到时间及未定日期的工作必须能被看到。
|
||||||
|
|
||||||
统一的是查看入口、关联信息和操作入口。提柜、车次、派送、收货仍由各自业务模块保存权威事实;总览读取和联查这些记录,修改时回到对应业务命令,避免运营在多个页面重复维护同一事实。
|
统一的是查看入口、关联信息和操作入口。提柜、车次、派送、收货仍由各自业务模块保存权威事实;总览读取和联查这些记录,修改时回到对应业务命令,避免运营在多个页面重复维护同一事实。
|
||||||
|
|
||||||
@@ -150,7 +198,7 @@
|
|||||||
| 送仓与排车 | 尚未安排的同仓同窗口候选组,或已建立的送货批次;二者明确标识 | 操作、起运仓→目的仓、预计备妥窗口、货量/可用状态、收货预约、承运安排、余位发布资格、负责人;选货保存安排、登记预约结果,带入共用车次入口,不另建建车/发布表单 |
|
| 送仓与排车 | 尚未安排的同仓同窗口候选组,或已建立的送货批次;二者明确标识 | 操作、起运仓→目的仓、预计备妥窗口、货量/可用状态、收货预约、承运安排、余位发布资格、负责人;选货保存安排、登记预约结果,带入共用车次入口,不另建建车/发布表单 |
|
||||||
| 预约日历 | 去重后的预约事件;内部作业及预报可选显示 | 按日/周查看对方确认时段及待确认安排,可切换列表;按类型、地点或车次查看,不用一条综合状态覆盖所有事项 |
|
| 预约日历 | 去重后的预约事件;内部作业及预报可选显示 | 按日/周查看对方确认时段及待确认安排,可切换列表;按类型、地点或车次查看,不用一条综合状态覆盖所有事项 |
|
||||||
|
|
||||||
日常进入列表工作视图,顶部用紧凑待办计数定位“待联系、等对方回复、已约未配车、船期变更待处理”,点击后作用于对应视图。每条待办展示负责人、下一步和下次跟进日期;同一柜或批次的多个问题合并提示,展开后逐项处理,避免提醒数量淹没实际货量。
|
日常进入预约工作日历,顶部全局待办显示全部、今日跟进、超期、未定日期和需复核,不受月份、流程与类型勾选影响。点击后进入对应明细。每条待办展示负责人、下一步和下次跟进日期;同一柜或批次的多个问题合并提示,展开后逐项处理,避免提醒数量淹没实际货量。
|
||||||
|
|
||||||
“送仓与排车”增加目的仓货量汇总,默认按实际起运仓及未来可备妥窗口查询,可按需要切换7/14/30天。每个目的仓分别展示在途、在仓未备妥、已备妥货量及待安排量;未确定备妥日期的货物单列“日期待定”。已安排货物不再次进入未安排候选,跨窗口统计不能重复累计同一批货。
|
“送仓与排车”增加目的仓货量汇总,默认按实际起运仓及未来可备妥窗口查询,可按需要切换7/14/30天。每个目的仓分别展示在途、在仓未备妥、已备妥货量及待安排量;未确定备妥日期的货物单列“日期待定”。已安排货物不再次进入未安排候选,跨窗口统计不能重复累计同一批货。
|
||||||
|
|
||||||
@@ -158,9 +206,9 @@
|
|||||||
|
|
||||||
前两个视图使用工作列表;第三个统一承载月/周/日历及对应时间安排列表,不为每个工作视图再建一套日历。月视图负责概览,周/日视图负责排班,列表负责搜索、批量核对和导出。统一日历与其列表切换时保留筛选;跨业务视图保留通用条件并清楚显示各自日期口径。操作列按Admin规范放在第一列;大量货物明细只在展开或详情按需读取。
|
前两个视图使用工作列表;第三个统一承载月/周/日历及对应时间安排列表,不为每个工作视图再建一套日历。月视图负责概览,周/日视图负责排班,列表负责搜索、批量核对和导出。统一日历与其列表切换时保留筛选;跨业务视图保留通用条件并清楚显示各自日期口径。操作列按Admin规范放在第一列;大量货物明细只在展开或详情按需读取。
|
||||||
|
|
||||||
日历每格最多显示3条,标明剩余数,悬停显示总数。右侧当天安排按时间排序,未定时事项进入“待安排”区域,不伪造09:00或00:00占位。
|
月历单格固定高度,按已勾选工作类型聚合数量,点击类型或状态数量进入当天明细,不随事项数量堆叠卡片。明细按实际、确认或目标日期与时间展示;未定日期事项进入独立待办,不伪造09:00或00:00占位。
|
||||||
|
|
||||||
到港、预计到仓、还柜提醒通过独立开关显示;预约数量只统计真实预约。历史已取消事项可以筛选查看,保留原取消信息。
|
到港参考通过独立开关显示,不计工作量;还空属于必需工作类型。工作数量包含未安排、已确认、无需预约、需复核及已完成,并明确统计口径;预约取消保留原记录、工作需求与继续安排入口,不能从待办漏掉。
|
||||||
|
|
||||||
以上为信息结构建议,尚不是已冻结视觉原型。实施时逐操作核对现有新增、详情、编辑的承载方式;未定义操作形成评审矩阵,人工按1920×1080、100%缩放确认,不以本方案代替视觉验收。
|
以上为信息结构建议,尚不是已冻结视觉原型。实施时逐操作核对现有新增、详情、编辑的承载方式;未定义操作形成评审矩阵,人工按1920×1080、100%缩放确认,不以本方案代替视觉验收。
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,186 @@
|
|||||||
|
# 预约工作日历 V13 变更说明
|
||||||
|
|
||||||
|
确认日期:2026-10-16。用户已确认 V13 原型,并要求按现有开发分工继续实施。本文是本轮产品行为、业务约束与验收场景的正式变更依据;确认需求不表示业务代码、部署或真实环境验收已经完成。
|
||||||
|
|
||||||
|
接口和唯一文件写者继续由[开发协作契约](预约工作日历开发协作契约.md)维护。本文维护业务规则,不另建开发进度台账;实现进度由“预约”开发总控维护既有检查点,部署与整体验收事实仍归环境主契约。早期[优化方案](美国预约管理统一总览与优化方案.md)及 V11/V12 评审记录用于追溯,冲突时以本次确认和现行正式契约为准。
|
||||||
|
|
||||||
|
## 1. 确认范围与原型基线
|
||||||
|
|
||||||
|
本轮目标是:船已开后,运营从“预约管理 → 预约列表”进入“预约工作日历”,能看到所有应办事项,包括未预约、未定日期和变化后尚未处理的事项;每条工作直接给出当前可执行的下一步。
|
||||||
|
|
||||||
|
- 日历为默认首屏,提柜、接仓卸柜、送仓/FBA、用车、还空五类可勾选;日期格定高,按类型汇总,不随事项数量无限堆叠。点击数量查看并操作明细。
|
||||||
|
- 全部待办、今日需跟进、超期、未定日期、需复核不随日历月份、流程或类型筛选而遗漏。不同待办集合允许重叠;同一事项在一个结果集中只出现一次。
|
||||||
|
- 支持海外仓中转分批和整柜直送,支持不同客户同起运仓、同目的仓共用真实车次。多客户共车是已有业务能力,本轮重点补齐统一操作、变化后的续办和完整跟进。
|
||||||
|
- 不把本轮扩大成完整车队、库存或费用模块重构;不增加自动向仓库/车队发送预约、取消通知的承诺。登记联系结果与对方实际确认是不同动作。
|
||||||
|
|
||||||
|
已确认原型:`C:/Users/BY-OY/.codex/visualizations/2026/10/14/01a13a8d-e968-7962-906b-1a514792d921/appointment-calendar-guided.html`,页头 V13。确认时 SHA-256:`61902e410be755aa9cbf9fcfaa9d393bfa49dd8d592cd8773af5396e78c29836`。该文件为交互依据,不是生产 API、状态机或数据库结构;原型中的演示字段名、固定负责人、固定日期及示例数据不得直接当成业务合同。
|
||||||
|
|
||||||
|
## 2. 对象、数量与客户归属
|
||||||
|
|
||||||
|
| 对象 | 正式规则 |
|
||||||
|
| --- | --- |
|
||||||
|
| 货物来源 | 每条保留客户、稳定来源键、目的地、业务票号、货件/追踪号、柜次及核实数量/版本。沿用原 `ORDER` / `BOOKING` 来源身份,不因建订单、分批、换车而产生来源别名。 |
|
||||||
|
| 送货需求与批次 | 未约、取消安排、日期未知都不消灭仍需送货的需求。批次有稳定身份及版本;移车或重新预约不重新占一次货量。只有真实分批/合并才调整分配,并保留旧批次到当前批次的去向。 |
|
||||||
|
| 对外预约 | 预约确认号、有效覆盖范围、确认时段与预约身份分开保存。一个共同预约可覆盖多个客户的批次;不能用相同文本约号代替明确的共同预约关系。 |
|
||||||
|
| 运输 | 一个真实车次可承运多个客户、多个批次;各客户的排车/货物归属保留。送仓预约与车辆安排分别确认,不能互相冒充。后送用车待办不等于已经创建实际车次、锁定托盘或承运资源。 |
|
||||||
|
| 工作事项 | 关联权威业务对象,承担展示、跟进、复核和下一步引导,不再维护第二本可编辑数量账或另一份预约/实际完成结果。 |
|
||||||
|
|
||||||
|
按每个“客户+稳定来源+目的地”核对数量,而不是只核对总箱数:
|
||||||
|
|
||||||
|
`核实可履约总量 = 尚未分配到批次的数量 + 当前有效批次的分配数量之和`
|
||||||
|
|
||||||
|
这里的有效批次包含已经实际完成的履约数量,不能因完成后退出待办而再次变成可选余量;已被替代的历史批次不重复计入。后送批次即使没有日期或预约,其货量仍属于该批次,只能从该批次继续分配,不能再按整票新增一遍。逐来源不超分、不为负、总量不丢;未知数量保持未知,不当成 0,也不能未经核实拆分。
|
||||||
|
|
||||||
|
补箱数和各票货件号只保存预约货物核实资料,不覆盖原尾程订单;已分配数量不能被核实为更小。客户库存、托盘、订单、费用及对外可见范围仍按原客户隔离规则执行。
|
||||||
|
|
||||||
|
## 3. 两条履约流程
|
||||||
|
|
||||||
|
### 3.1 海外仓中转
|
||||||
|
|
||||||
|
开船后生成/读取本柜应办工作 → 提柜 → 海外仓接仓卸柜 → 各送货批次分别约仓及安排运输 → 真实备货、装车、发车、签收。提柜、接仓卸柜、还空按柜级稳定身份去重,不随客户数、送货批数或车次数重复生成。
|
||||||
|
|
||||||
|
实际卸柜完成后,还空按真实条件独立跟进,不等待所有送货批次完成。一柜可以分多批、多车;不同柜、不同客户的货物在符合原业务资格时也可同仓共车。
|
||||||
|
|
||||||
|
### 3.2 整柜直送
|
||||||
|
|
||||||
|
开船后 → 提柜安排及目的仓收货预约 → 同一运输链直送目的仓 → 真实卸货 → 还空。不得为了直送生成海外仓接仓/入库事项、库存或假卸柜事实。提柜和直送共用一趟运输时只计算一个真实车次,不重复约车;还空可由原车执行或转交明确接手方。
|
||||||
|
|
||||||
|
实际目的仓卸货未完成不能登记还空;交接责任不等于已还空。直接送往客户仓且对方无需预约时,保存明确的收货要求,不伪造 FBA 货件号、外部约号或“预约成功”。路线未知时先提供“确认路线”,确认后幂等生成应办清单。
|
||||||
|
|
||||||
|
## 4. 多客户同仓共车
|
||||||
|
|
||||||
|
1. “与同仓待排货物一起安排”或“按目的仓统一安排”只展示当前有资格的货物。候选以稳定起运仓/目的仓身份及真实业务资格核对,不只比较仓名;已安排或已分配的量不能重复选入。
|
||||||
|
2. 从某个后送批次进入时,只预选该批次的当前可安排量;其他客户由操作人明确加选。每票允许填写本次箱数,客户、来源和货件随货保留。
|
||||||
|
3. 共车不等于共用仓库预约。可分别保存各客户的预约结果,也可在仓库明确确认覆盖全部所选客户和数量后使用共同预约;页面必须明确显示采用哪一种方式。
|
||||||
|
4. 外部约号按目的仓执行既有唯一性规则。共约成员通过同一预约身份引用这个约号,不各自创建重复主单。其他有效预约已使用的约号不能直接填入,冒充该客户已加入共同预约。
|
||||||
|
5. 保存后逐客户显示成功、待补资料、关联失败等真实结果,提供下一步;一辆车在日历工作量中只计一次,各批送仓工作分别计数。
|
||||||
|
6. 实际车辆、司机、托盘、容量、审核、装载和发车走原 Fleet/Dispatch 资格与命令。原型中的直接登记执行仅表达流程衔接,不替代这些门槛。
|
||||||
|
|
||||||
|
## 5. 分批、缺货与后送
|
||||||
|
|
||||||
|
以甲 80、乙 160、丁 40,共 280 箱送 ONT8 为统一验收样例;每条场景独立恢复基准,不能将不同演示的数量相加。
|
||||||
|
|
||||||
|
| 变化 | 原车 | 后续需求 | 下一步 |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| 乙整批移出 | 保留甲 80+丁 40=120 箱;其预约不变 | 乙 160 箱保留原来源与需求,另期或未定日期 | 乙重新约仓并安排车辆;原车按剩余货量核对后继续 |
|
||||||
|
| 乙 100 箱已齐、60 箱后送 | 甲 80+乙 100+丁 40=220 箱 | 60 箱单独后送;没有目标也保留待办 | 可单送,或选择与同仓待排货物一起安排 |
|
||||||
|
| 后送 60 再选 40 安排 | 原车仍为 220 箱 | 40 箱进入新批次,20 箱仍待排;乙 100+40+20=160 | 原车客户卡片同时列出两份当前去向,各可直接继续 |
|
||||||
|
| 后送 60 与另一客户 40 共车 | 原车仍为 220 箱 | 新车共 100 箱,客户和来源分别保留 | 分别/共同约仓后确认新车,按各客户实际执行 |
|
||||||
|
|
||||||
|
“本次先送量”允许为 0,表示该客户全部移出原车留待后送;不得强迫留一箱。先送量等于全部原数量时,没有后送分配,不额外新建空批次。部分改变已经确认预约的货量,必须取得仓库对保留量和移出量的明确处理结果;剩余货物是否备妥按实际核对,不因仓库同意而自动标记货齐。
|
||||||
|
|
||||||
|
后送目标日期可空,但必须保留负责人和跟进入口。原车客户卡片追踪分配/替代关系直到当前批次;全量再分配后直接显示新安排,部分再分配后同时显示仍待排的量和已分配的去向。不能显示失效的“0 箱待办”,不能只在历史文字中记录去向,不能将同一后续批次重复列出。
|
||||||
|
|
||||||
|
## 6. 改期、取消与影响范围
|
||||||
|
|
||||||
|
普通改期、取消、缺货移出用于尚未实际执行的安排。车辆已经发车或相关货物已经执行时,进入原运输异常处理,不提供普通移车操作来抹掉事实。
|
||||||
|
|
||||||
|
### 6.1 仅处理某个客户
|
||||||
|
|
||||||
|
- 默认明确展示本客户、原车、货量、其他客户及是否共用预约;操作者选择本客户另期、取消本次安排或本次先送部分数量。
|
||||||
|
- 确认前保留原安排。已有有效预约,尤其是共同预约时,须明确仓库同意本次调整范围;未收到回复先记录待确认,不能把沟通中状态当成取消/改期成功。
|
||||||
|
- 确认后只移动该客户/该部分货物。其他客户的约号、确认时段和客户归属保持不变;原车对剩余货量及发车时间核对一次。车队已确认原时间可继续时,不无故要求其他客户重新约仓。
|
||||||
|
- 待确认变化进入持续待办;涉及当前装载或预约有效性尚未解决时,原车不能直接发车。保存输入与已确认的信息,重新进入直接续办;不能用“关闭复核”跳过未解决的业务条件。
|
||||||
|
- 原车无任何有效货物且尚未执行时,经原车辆业务取消/调整处理后关闭相应运输工作并保留历史,不留下空车待办。不能据此取消其他客户或其他仍有效的车次任务。
|
||||||
|
|
||||||
|
### 6.2 整份共同预约变更
|
||||||
|
|
||||||
|
- 页面明确区分“仅本客户”和“整份共同预约”,展示所有当前覆盖客户、数量、预约和关联车辆。以服务端当前有效成员为准,不能靠外部约号文本相等推断范围。
|
||||||
|
- 整份改期:所有覆盖成员更新为同一已确认的新时段;相关车辆核对新收货时段是否可达。无实际变化的再次保存不重复产生复核。
|
||||||
|
- 整份取消:旧预约失效,保留旧计划、确认信息、取消原因和历史;当前确认及已经失效的目标日期从活动安排中清除,未重新确定的进入未定日期。全部未完成货物需求保留,各关联车辆列为待核对。
|
||||||
|
- 已取消的预约不能选“保留原预约”直接恢复有效。车辆原安排是否仍可执行可单独核对,但发车仍须所有相关收货/备货条件成立。
|
||||||
|
- 真实变化只影响直接关联且已经安排的事项;尚未安排的继续待安排。复核动作本身不再触发另一轮复核;处理旧影响版本不得清掉后来产生的新变化。
|
||||||
|
|
||||||
|
### 6.3 取消后的占用边界
|
||||||
|
|
||||||
|
本轮“取消”指取消本次预约/运输安排,不是取消订单或客户撤销全部运输需求。
|
||||||
|
|
||||||
|
失效预约释放其有效预约覆盖和绑定;仍需履约的批次数量分配继续存在,或在同次变更中转到明确的后送批次。不能把同一箱数同时留在原批次并重新作为整票可选余量,也不能先清空需求再等待以后人工补建。已完成数量保持不可再次分配。
|
||||||
|
|
||||||
|
取消预约不回退库存,不自动注销整辆车。已有正式排车、托盘或运力占用时,由其权威业务按真实关联调整;工作事项仅读取结果。恢复/重新预约仍重新核对来源、当前分配、版本和唯一性。
|
||||||
|
|
||||||
|
## 7. 移出后的重新预约与整组重约
|
||||||
|
|
||||||
|
### 7.1 单客户或后送批次续办
|
||||||
|
|
||||||
|
结果页直接提供“继续给本客户约仓”和有资格时的“与同仓待排货物一起安排”。从未定日期、搜索或原车客户卡片再次进入,也到达同一份当前需求。
|
||||||
|
|
||||||
|
单送路径为:核对货物 → 记录仓库回复/确认 → 继续安排本批车辆 → 核对真实备货条件 → 原业务发车、签收和运输完成。未约成可以保存计划和联系结果,不必编造时间;已取得确认后直接进入车辆安排。确认后的货物不能重新从“待排货物”入口新增一遍;车辆关联沿既有安排继续。
|
||||||
|
|
||||||
|
重新预约不会重新生成一份相同货量。完成后退出未完成待办,原批次和运输记录仍能查到;其他尚未完成的后送、原车或还空工作继续保留。
|
||||||
|
|
||||||
|
### 7.2 整份取消后的重新预约
|
||||||
|
|
||||||
|
1. 提供“重新预约这组货物”,展示本次仍需重新约仓的客户、批次与数量。已退出、已单独另约、已完成或正在处理其他变化的成员不被静默纳入;页面说明其当前去向。
|
||||||
|
2. 可以一次填写一个共用的新预约,也可以一次填写各客户独立预约。共同预约必须有仓库明确确认的客户和货量覆盖依据;分别预约不能通过重复填写相同约号绕开共同预约确认。
|
||||||
|
3. 沿用现有批次及可继续使用的原车,保存新有效预约关系;不重复分批、不重复占量、不仅为重约再创建一辆车。旧取消关系留历史,新共同预约使用新的有效关联身份。
|
||||||
|
4. 退出客户不能直接填写其他客户仍使用的旧约号,生成不同时间的孤立预约。若确需加入已有共同预约,必须经显式范围调整和仓库确认;普通填写约号不完成该操作。
|
||||||
|
5. 保存后主要下一步是“核对本车发车安排”。核对全部当前客户的收货时段和车辆条件;不能让车辆先于尚未完成的重约被标记可执行。后续再次整份改期/取消只作用于新的有效覆盖范围。
|
||||||
|
|
||||||
|
## 8. 未定日期、跟进与操作简化
|
||||||
|
|
||||||
|
- “没有作业日期”和“没有跟进日期”是不同含义。有跟进日仍可属于未定日期;不能把催回复日期填成送货日期。
|
||||||
|
- 日期留空时保留需求、负责人、联系记录及下一步,显示在全局未定日期/全部待办;取消、分批、部分失败不能让它消失。缺负责人或下一次跟进安排时明确提示补齐,不假定原型中的固定人员是生产默认值。
|
||||||
|
- 日期有目标但未约成时,日历按目标展示并标明未落实;确认时间、目标窗口和实际时间分别保存。实际发生后按权威实际日期展示,改期不移动历史事实。时间、时区、跨日、DST 和缺失原事实的处理沿开发协作契约第三节。
|
||||||
|
- 每个结果页优先给一个主要下一步,其他去向为明确次要入口;缺货在车辆执行入口可直接打开对应客户的“调整本次装载/移出本车”,不绕到其他客户或目的仓总列表。
|
||||||
|
- 未落实且只涉及本批货物时展示普通计划表,不展示多余的共车变化表单;独立车辆按钮称“继续安排本批车辆”,实际共车才称共用车辆。
|
||||||
|
- 返回保留原日期、柜、批次、筛选、分页和原事项上下文。旧批次已全部转入新安排时直接到新安排;历史仍可独立查看。
|
||||||
|
|
||||||
|
## 9. 失败、重试与权限
|
||||||
|
|
||||||
|
以下是正式实现和集成验收要求,不能用原型浏览器检查代替证明:
|
||||||
|
|
||||||
|
- 按原来源核实量、批次、预约范围及车辆关系版本校验。并发编辑、分批或共车成员变化时拒绝过期提交,保留用户输入,重新展示实际范围;服务端保证不超分。
|
||||||
|
- 同一用户操作使用持久化幂等身份;同键同内容返回原结果,异内容拒绝。超时/断网导致结果未知时沿原请求查询或重试,不自动当失败新建批次、预约或车辆。
|
||||||
|
- 货物已保存但关联车辆失败时,返回成功批次及准确失败步骤;成功货物保持已占用,重试只补失败步骤,不能重新建批/建车,也不能把已退出的客户重新挂回原车。
|
||||||
|
- 一次调整中原数量、后送数量、去向和待办必须一致。跨业务步骤未全部成功时明确显示尚未完成的部分和下一步,不宣称全部成功;不得产生既无原需求又无后续需求的窗口。
|
||||||
|
- 平台列表权限包含详情只读,写权限由各权威业务核验;多客户管理仅在授权平台范围内进行,客户侧只能看自己的货物。无权限、来源不可用、校验冲突均给明确原因,不能伪造成功或“0 项”。
|
||||||
|
- 真实备货、托盘、装载、发车、签收、还空及运输完成仍由原业务事实决定。通知或联系记录不能代替这些事实。
|
||||||
|
|
||||||
|
## 10. 开发接口交接与唯一写者
|
||||||
|
|
||||||
|
不复制旧接口、不建立前端数量账、不直接照搬原型对象。已有工作事项 v1 继续使用[开发协作契约第三节](预约工作日历开发协作契约.md#3-工作事项-http-接口-v1);本轮新增语义由真实业务生产者先补 DTO/OpenAPI 与定向测试,再由消费者接入。精确 HTTP 路径、字段与错误码以生产者冻结的真实合同为准,本文不虚构已可用端点。
|
||||||
|
|
||||||
|
| 必须交付的语义 | 生产者与消费边界 |
|
||||||
|
| --- | --- |
|
||||||
|
| 当前批次逐来源分配、剩余量、全部/部分再分配去向、版本 | 预约核心提供权威数据;工作事项只读关联,前端据其显示当前去向,不凭历史文字推断。 |
|
||||||
|
| 单客户/整份共约变更的当前范围、旧安排、新安排、受影响客户/车辆、未完成原因 | 预约核心与原预约写者统一业务命令和版本;工作事项返回准确受影响事项与复核版本。 |
|
||||||
|
| 整份取消后的待重约成员、已排除成员及原因、共同/独立重约结果和新的有效预约关联 | 预约核心主导合同;保留原批次及运输关系,消费者不能自行造共同预约身份。 |
|
||||||
|
| 幂等结果、逐步骤成功/待补/失败、后续目标及可重试动作 | 各命令生产者返回真实结果;前端保留输入并继续失败步骤,工作事项不制造成功兜底。 |
|
||||||
|
| 允许动作、唯一主要下一步、缺项/阻塞原因、关联与去向 | 工作事项后端提供白名单动作和稳定目标引用;前端映射既有入口/表单。跨域业务写入不能塞进通用“改状态”命令。 |
|
||||||
|
|
||||||
|
现有三任务不增加、不更换工作区、不扩大其他业务写权:
|
||||||
|
|
||||||
|
| 现有任务 | V13 继续工作 | 依赖及停止点 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| “预约” `01a13df2-c639-7560-a3e2-30bc23a579b3` | 开发总控兼预约核心:核对已实现差异,先冻结数量/去向、预约范围、取消和重约合同;协调原预约写者,统一共享文件、检查点及验证窗口 | `InboundFbaAppointmentService` 及核心预约/分批测试已明确交回总控;工作适配和 Dispatch/Fleet 仍由后端专项独占。后续移交须明确唯一写者,不按同文件不同方法并写。 |
|
||||||
|
| “工作事项后端” `01a13e1c-9101-7a43-8445-771685ff315e` | 完整待办、未定日期、准确影响集合、复核版本、下一步、真实车辆/预约同步;负责本批已移交的原域适配与直接测试 | 不另建数量分配账;先完成可独立部分,新增核心合同冻结后接入。共享 DDL、IAM、Firstleg 和公共门禁仍归总控。 |
|
||||||
|
| “预约页面前端” `01a13e1c-db36-73e3-a231-d6649c51664b` | 按 V13 完成范围选择、后送续办、当前去向、整组重约、结果与失败续办、未定日期入口和上下文;更新直接测试及操作矩阵 | 不猜后端字段、未交付接口不做假成功;先做现有合同可支持的部分,新增写入按冻结合同接入。保留已有页面和弹框改动。 |
|
||||||
|
|
||||||
|
精确文件路径、共享文件归属及串行构建窗口沿协作契约第五节。总控负责收集三个任务的差异、接口准备情况和直接验证证据,不能仅转述“已收到”。本轮用户授权文档同步和继续开发;部署、SQL、测试环境写入等不因本文新增授权,已有另行授权由对应开发总控按原范围核验。
|
||||||
|
|
||||||
|
## 11. 最小验收矩阵
|
||||||
|
|
||||||
|
HTTP 性能门槛(2026-10-16 用户确认):本预约链路涉及的每个接口、每次验收请求,从客户端发起到完整响应体读取结束均不得超过 1,000ms;同时独立校验 HTTP 状态、预期业务结果和数量/状态事实。不能以平均值或 P95 代替逐请求门槛,也不能把快速返回的同步中、非预期错误或缺少计时当作通过。预期拒绝场景须核对准确业务码,仍计入耗时。保留首次、超时、失败及重试记录,网络超时结果未知时先回查,不能盲目重放写操作;报告标明场景、方法/路径、耗时、requestId/traceId、运行版本及尚未覆盖项。HTTP 通过不代替页面验收,单轮全部达标也不构成任意负载下的性能保证。
|
||||||
|
|
||||||
|
| 编号 | 场景 | 必须结果 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| V13-01 | 乙 160 箱取消本次安排后重新约仓、配车、发车、签收、结束运输 | 原车甲丁 120 箱及其预约不变;乙来源和数量唯一;完成后待办退出、记录可查。 |
|
||||||
|
| V13-02 | 乙 100 先送、60 后送,后送独立执行完成 | 原车 220 箱;乙始终 160;后送未定日期可反复进入直到完成,不重复创建。 |
|
||||||
|
| V13-03 | 从后送入口选本批 60,加另一客户 40 共车 | 初始只选 60;新车 100,客户来源和预约结果分开;约仓、发车、各客户签收及运输完成可衔接,原车仍 220。 |
|
||||||
|
| V13-04 | 后送 60 仅选 40,另 20 待排 | 原车卡片各显示 20 待排和 40 新批一次,直接可操作;20 持续留在未定日期并可再次安排,乙各批始终合计 160;不显示失效 0 箱或遗漏已分配去向。 |
|
||||||
|
| V13-05 | 全部后送量再分配后从旧入口返回 | 直接找到当前新批次及车辆;重复点击/重试不重复占量,历史可追溯。 |
|
||||||
|
| V13-06 | 单客户未收到仓库回复;先记待确认再续办 | 原预约保留,输入可续办,相关未解决变化阻止误发车;确认后仅处理目标客户。 |
|
||||||
|
| V13-07 | 单客户从共约退出,填其他客户仍使用的旧约号 | 服务端拒绝孤立重约,不改其他成员;正确新约可继续;校验失败保留输入。 |
|
||||||
|
| V13-08 | 整份共约改期 | 当前全部覆盖客户一致更新,影响车辆清楚;核对一次,无变化保存不反复复核。 |
|
||||||
|
| V13-09 | 整份共约取消并重新共约 | 清失效目标/确认,保留原批次与原车;一次确认覆盖范围,形成新有效关联;再次整份变更按新范围。 |
|
||||||
|
| V13-10 | 整份取消后分别重约,或甲先单独另约再办理剩余组 | 独立约号/时段分别保存;已另约甲排除且不被覆盖;车辆核对所有当前时段后才能执行。 |
|
||||||
|
| V13-11 | 货没齐,保留量为 0;原车最终无有效货物 | 全部货量继续待办,不强留一箱;其他客户不被移动;无货原车按原业务取消/调整后正确关闭。 |
|
||||||
|
| V13-12 | 未定日期关闭后再进、换月、取消类型勾选、返回分页 | 需求和跟进不丢,送仓/用车各按稳定身份显示;下一步及返回上下文准确。 |
|
||||||
|
| V13-13 | 部分成功、关联失败、超时结果未知、重复提交、并发变化 | 复用原成功结果,只重试未完成步骤;不超分、不挂回已退出成员,过期版本不能清除新复核。 |
|
||||||
|
| V13-14 | 只读/跨客户权限、来源失败、缺时区、跨日与 DST | 权限及时间按正式合同校验;未知/失败不伪造零值、日期或成功;已有真实事实保留。 |
|
||||||
|
| V13-15 | 中转多批、整柜直送、还空转交及已发车异常 | 柜级工作不重复;中转还空不等尾程送完;直送无海外仓入库,实际卸货才可还空;转交新车队须重新明确接手,原车队结果不沿用,未落实继续跟进;发车后不走普通移车取消。 |
|
||||||
|
|
||||||
|
V13 本地原型已走过多客户变化、后送单送/共车、部分再分配、整份取消重约、约号冲突与返回续办,相关浏览器检查及原有 24 项原型回归通过。可追溯脚本位于原型同目录:`check-v11.cjs`、`check-v12.cjs`、`review-rebook-v13.cjs`、`review-partial-v13.cjs`、`review-v13-shared-rebooking.cjs`、`check-v13-usability.cjs`。这只是交互证据;尤其 V13-13/14 的真实权限、持久幂等、并发、外部接口和完整时区规则仍须生产代码和集成验证。
|
||||||
|
|
||||||
|
交付时分别列出业务代码、定向检查、部署清单和待真实验收项;Admin 人工视觉验收按 1920×1080、100% 缩放。不得把原型确认或本地检查通过写成环境已上线、全链已验收。
|
||||||
@@ -0,0 +1,221 @@
|
|||||||
|
# 预约工作日历开发协作契约
|
||||||
|
|
||||||
|
建立日期:2026-10-15;V13 确认同步日期:2026-10-16。用户已确认 V13 原型,正式业务变更见[预约工作日历 V13 变更说明](预约工作日历V13变更说明.md)。本文继续维护接口、数据归属和文件边界,不重复维护产品规则或作为已实现说明;当前部署与验收事实只维护环境主契约。
|
||||||
|
|
||||||
|
本文承接[预约优化方案](美国预约管理统一总览与优化方案.md),日历首屏、多客户共车、分批后送、改期取消、重新预约与完整待办的确认行为以 V13 正式变更说明为准;不扩展为拼车、车队或海外仓的全面重构。任务身份与唯一写者见[协作登记](../独立任务协作登记.md)。
|
||||||
|
|
||||||
|
当前开发总控为用户明确指定的 `01a13df2-c639-7560-a3e2-30bc23a579b3`,负责开发设计、任务调度、接口对齐、共享集成、开发检查点及验证收口;原型对话 `01a13a8d-e968-7962-906b-1a514792d921` 只负责业务梳理、原型和变更文档。用户再次明确:设计确认后交开发总控安排,不由原型对话继续派工或跟踪开发。本文“总控”均指当前开发总控。两个专项保留原范围,精确触点以第五节为准。
|
||||||
|
|
||||||
|
## 1. 输入与共同目标
|
||||||
|
|
||||||
|
原型只读入口:`C:/Users/BY-OY/.codex/visualizations/2026/10/14/01a13a8d-e968-7962-906b-1a514792d921/appointment-calendar-guided.html`,当前确认交接为 V13,确认指纹见正式变更说明第一节。它承载交互示例,不作为真实 API、数据总量或权限来源。
|
||||||
|
|
||||||
|
- 实际开船后,所有必需工作进入统一事项范围,未预约、未定日期也有记录与负责人跟进;不能等创建预约后才出现。
|
||||||
|
- 默认进入“预约工作日历”。月格固定高度,提柜、接仓卸柜、送仓/FBA、用车、还空五类勾选显示数量,点击数量进入明细。到港参考单独开关,不计工作量。
|
||||||
|
- 全部待办、今日需跟进、超期、未定日期、需复核独立于月历月份、流程和类型勾选;全局统计由服务端计算。明细明确显示其范围,不能把月历条件偷偷带入全局待办。
|
||||||
|
- 目标日期、对方确认时间、实际完成时间分别保存。按作业地点时区落日;无日期进入未定日期区,不伪造日期或 00:00/09:00。
|
||||||
|
- 主按钮直接给下一步,返回时保留原柜、批次、日期和筛选;查看当前项与跳到前置事项是两个明确入口。
|
||||||
|
|
||||||
|
## 2. 数据归属与两条流程
|
||||||
|
|
||||||
|
| 业务 | 本轮约束 | 唯一生产者 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| 来源/核实资料/数量分配 | 保留客户、原来源、目的地及核实版本;补箱数和各票货件号只写预约核实资料,不覆盖原订单;并发按原来源加锁,总分配量守恒 | 预约核心任务 |
|
||||||
|
| FBA 预约申请、确认、取消、分批合并 | 沿原预约写服务执行;取消预约保留工作需求、历史和后续跟进;分批不能只移除原整票唯一约束 | 预约核心任务 |
|
||||||
|
| 工作事项/路线/跟进/复核 | 工作关系、未安排需求、责任和操作入口由工作事项模块维护;已有业务计划和实际事实只关联,不另建第二份可编辑数量或预约结果 | 工作事项后端 |
|
||||||
|
| 提柜计划和实际提柜/还空 | 以 Firstleg 原业务命令及事实为准 | 预约核心任务协调原域最小适配 |
|
||||||
|
| 实际接仓卸柜 | 以真实海外仓/PDA 收货为准,不能由事项勾选完成代替 | 原海外仓业务;本轮只读消费 |
|
||||||
|
| 车辆计划、出车、完成 | 以 Fleet/Dispatch 原业务命令及事实为准 | 工作事项后端维护本轮 Lastleg 原域适配及直接消费者 |
|
||||||
|
| 客户仓无需预约、还空责任交接 | 保存明确收货要求、责任及交接历史,不生成假确认号、不改提柜承运历史;实际还空仍走 Firstleg | 工作事项后端保存要求和责任,核心任务适配实际执行入口 |
|
||||||
|
|
||||||
|
中转:同柜共用提柜、接仓卸柜、还空;每个送货批次独立关联收货预约与用车,可以一柜多批、多车,也允许同一真实车次覆盖多个批次。批次变更不能重复生成柜级工作。实际卸柜后即可按真实条件还空,不必等待全部尾程送货完成。
|
||||||
|
|
||||||
|
直送:没有海外仓接仓卸柜事项;提柜、目的仓收货/卸货、运输、还空形成关联,可同车执行,也可转交独立还空。不得调用会建立海外仓库存的 PDA 入库命令来证明直送卸货。现有 Firstleg 还空若只认可海外仓卸柜,核心任务必须补真实目的仓卸货依据及守卫,未补齐前保持明确阻断,不能把事项状态写成完成。
|
||||||
|
|
||||||
|
路线未确认:显示一条“确认路线”需求,确认后事务内幂等生成对应清单,并立即可查询。已执行的路线不能通过切换选项抹掉事实;有安排时必须先评估关联影响。
|
||||||
|
|
||||||
|
稳定身份:柜级事项用柜次内部标识与类型去重,送货/用车需求用不可变 requirementKey/batchKey 关联。原来源键沿用 `ORDER:` / `BOOKING:`;不得用柜号文本、目的仓名称或可变预约号作为唯一键。未分批阶段先有送货/运输需求;真正分批后以明确的替代关系衔接,旧需求不和新批次重复计数,也不能消失但未生成后续。批次、预约、车次的内部键仅用于关联,界面展示业务号,缺失显示“—”。
|
||||||
|
|
||||||
|
事项完整来源不能直接复用目前仅 FBA 的 cargo 查询或排除完成订单的 containers 查询。新后端负责独立覆盖核对:已开船无海外仓绑定、非 FBA 目的仓、未知路线、货已送完但柜未还空均须保留。不得靠前端翻完所有页拼全局统计;GET 不隐式写库。生成/同步须有可验证的服务端幂等入口,不能依赖用户先打开某个柜。新增 Firstleg 提供端触点先交总控确认精确文件后由核心任务实施。
|
||||||
|
|
||||||
|
## 3. 工作事项 HTTP 接口 v1
|
||||||
|
|
||||||
|
平台路径前缀:`/api/platform/v1/last-leg/appointment-work`。沿用项目 ApiResponse/PageResult、鉴权与分页约定;平台列表权限包含详情只读。新后端同时维护 `appointment-work-v1.yaml` 与 Controller/DTO,不通过多路径或别名兼容旧草案。
|
||||||
|
|
||||||
|
| 方法与路径 | 输入 | 输出与口径 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| GET `/calendar` | `from`、`to`(当地日期,均包含);可选 `flow`、重复 `types` | `CalendarResult`,整个区间的日聚合,不能按明细分页结果算数量;最大 62 天 |
|
||||||
|
| GET `/summary` | 无月历筛选参数 | `Summary`,当前权限可见的全部活动事项;跨月份、类型和路线 |
|
||||||
|
| GET `/items` | `view=ALL/FOLLOW_TODAY/OVERDUE/UNDATED/REVIEW`,`page`、`size`;明细可显式传 `date/flow/types/containerBookingId/bucket/keyword` | 项目分页结构的 `WorkItem`;全局卡片调用不传月历条件;无 date 的 ALL 为全部未完成事项,有 date 的 ALL 包含当日已完成事项;bucket 对应日历互斥统计桶 |
|
||||||
|
| GET `/items/{workItemKey}` | 稳定事项键 | `WorkDetail`,当前项、前置/后续、原业务引用和历史 |
|
||||||
|
| POST `/items/{workItemKey}/commands` | `command`、`expectedVersion`、`idempotencyKey`、判别式 `payload` | `{item, affectedWorkItemKeys}`;成功后刷新摘要与当前日历;版本冲突 409,刷新后保留用户输入 |
|
||||||
|
|
||||||
|
`flow` 枚举 `TRANSFER/DIRECT/UNKNOWN`,省略为全部。`types` 为 `PICKUP/WAREHOUSE_RECEIPT/DELIVERY/TRANSPORT/EMPTY_RETURN`;未知路线需求为 `ROUTE`,独立保留在全局待办中,不因五类勾选被遗漏。日历无条件命中时返回空聚合,数据源不可用不能返回伪造零值。
|
||||||
|
|
||||||
|
DTO 冻结的共同字段:
|
||||||
|
|
||||||
|
```text
|
||||||
|
WorkItem
|
||||||
|
workItemKey: string, version: integer
|
||||||
|
type, flow: 上述枚举
|
||||||
|
title: string, businessNo: string|null
|
||||||
|
containers: ContainerReference[]
|
||||||
|
requirementKey: string|null, batchKey: string|null, batchNo: string|null
|
||||||
|
originName: string|null, destinationName: string|null
|
||||||
|
planStatus: UNPLANNED|TARGET_SET|AWAITING_REPLY|CONFIRMED|NOT_REQUIRED
|
||||||
|
executionStatus: PENDING|IN_PROGRESS|COMPLETED
|
||||||
|
reviewRequired: boolean
|
||||||
|
target: Slot|null, confirmed: Slot|null
|
||||||
|
actual: Actual|null
|
||||||
|
calendarDate: YYYY-MM-DD|null
|
||||||
|
dateBasis: ACTUAL|CONFIRMED|TARGET|NONE
|
||||||
|
timezone: IANA zone|null
|
||||||
|
owner: {id: string, name: string}|null
|
||||||
|
followupDate: YYYY-MM-DD|null, overdueReasons: string[]
|
||||||
|
allowedActions: Action[], nextAction: Action|null
|
||||||
|
blockReasons: string[], missingFields: string[]
|
||||||
|
Actual = {occurredAt: Instant|null, localOccurredAt: LocalDateTime|null, timezone: IANA zone|null}
|
||||||
|
Slot = {date: YYYY-MM-DD, startTime: HH:mm|null, endDate: YYYY-MM-DD|null, endTime: HH:mm|null, timezone: IANA zone|null}
|
||||||
|
ContainerReference = {containerBookingId: string, bookingNo: string|null, containerNo: string|null}
|
||||||
|
SourceReference = {customerId: string, sourceKey: string, destinationKey: string|null}
|
||||||
|
Action = {code: ActionCode, label: string, targetWorkItemKey: string|null, target: ActionTarget}
|
||||||
|
ActionCode = VIEW_DETAIL|SAVE_PLAN|REQUEST_BOOKING|RECORD_CONFIRMATION|CHANGE_BOOKING|CANCEL_BOOKING|
|
||||||
|
VERIFY_CARGO|EDIT_BATCH|ARRANGE_TRANSPORT|RECORD_EXECUTION|CONFIRM_ROUTE|SAVE_FOLLOWUP|
|
||||||
|
RESOLVE_REVIEW|SAVE_REQUIREMENT|HANDOFF_RETURN|ACCEPT_RETURN|VIEW_HISTORY
|
||||||
|
ActionTarget 是按 kind 判别的联合:
|
||||||
|
WORK_COMMAND {command: 工作命令枚举}
|
||||||
|
CARGO_VERIFICATION {source: SourceReference}
|
||||||
|
FBA_APPOINTMENT {appointmentId: string|null, batchKey: string|null, sources: SourceReference[]}
|
||||||
|
FIRSTLEG_CONTAINER {containerBookingId: string}
|
||||||
|
FLEET_TRIP {tripId: string|null, batchKeys: string[]}
|
||||||
|
WAREHOUSE_RECEIPT {inboundPlanId: string|null, containerBookingId: string}
|
||||||
|
READ_ONLY {references: BusinessReference[]}
|
||||||
|
WorkDetail = {item: WorkItem, relatedItems: WorkItem[], references: BusinessReference[], history: HistoryEntry[],
|
||||||
|
review: {version: integer, reasons: string[]}|null,
|
||||||
|
requirement: {bookingRequired: boolean, receivingRequirements: string, reason: string|null}|null,
|
||||||
|
returnHandoff: {version: integer, from: Responsibility, to: Responsibility,
|
||||||
|
status: PENDING_ACCEPTANCE|ACCEPTED, reason: string}|null}
|
||||||
|
Responsibility = {kind: USER|SUPPLIER|EXTERNAL, id: string|null, name: string}
|
||||||
|
BusinessReference = {kind: string, key: string, businessNo: string|null, label: string}
|
||||||
|
HistoryEntry = {occurredAt: ISO instant, operatorName: string|null, action: string, summary: string}
|
||||||
|
Summary = {all: integer, followToday: integer, overdue: integer, undated: integer, review: integer}
|
||||||
|
CalendarResult = {from: YYYY-MM-DD, to: YYYY-MM-DD, total: integer,
|
||||||
|
counts: BucketCounts, days: DayAggregate[]}
|
||||||
|
DayAggregate = {date: YYYY-MM-DD, total: integer, typeCounts: Map<type,integer>, counts: BucketCounts}
|
||||||
|
BucketCounts = {pending: integer, confirmed: integer, noBookingRequired: integer, review: integer, completed: integer}
|
||||||
|
```
|
||||||
|
|
||||||
|
Slot 的 `date` 为开始日期;`endDate` 与 `endTime` 必须同时有值或同时为空。结束不能没有开始时间:填写结束日期/时间时,`startTime` 必填。完整结束时间必须严格晚于开始时间,不允许相等;跨日必须显式填写结束日期,不能因为结束钟点小于开始钟点就自动推断次日。只有日期、没有开始时间时,结束日期和结束时间都为空;前后端按同一规则校验。例如开始 `2026-10-15 23:00`、结束 `2026-10-16 01:00` 可以明确表达跨日;仅填写结束 `01:00` 而未填结束日期应拒绝。
|
||||||
|
|
||||||
|
时间事实扩充合同已冻结:`Actual` 非空时,`occurredAt` 与 `localOccurredAt` 至少一种有值。`occurredAt` 表示绝对时间(Instant),`localOccurredAt` 表示原业务保存的无偏移当地时间(LocalDateTime)。原业务只有 local 实际事实且没有时区时,直接保留其当地日期用于日历,`timezone=null`,并在事项 `missingFields` 中标记 `SOURCE_TIMEZONE`;不得给 local 时间附加 `Z` 或伪装成 UTC,也不得从服务器、浏览器或计划时区推导实际时间。缺少时区不能抹去真实完成事实或让事项回退为待完成;有 local 实际时间时继续按实际日期展示,不能退回目标/确认日期。
|
||||||
|
|
||||||
|
跨地点实际先后比较必须基于可确定的绝对时间。原提柜/还空只有无时区 `LocalDateTime` 时,不能直接与有 IANA 时区的直送目的仓当地钟面值比较先后,也不能擅自套用目的仓或其他时区。真实提柜存在、全来源真实卸货完成仍是直送还空的硬门槛;缺少源时区时,跨地点实际先后尚无法证明,不能把时序校验记为已通过,也不能因此跳过真实业务前置条件。
|
||||||
|
|
||||||
|
多目的地直送的完成时间选择各目的地真实完成时间中最晚的 `Instant`,不按当地钟面值取最大。72 小时提醒按基准 `Instant` 之后的绝对 72 小时时长计算,跨夏令时(DST)也保持相同时长,不能以当地日期加三天或当地钟面差值替代。
|
||||||
|
|
||||||
|
来自原业务的 `Slot.timezone` 允许为 null,并同样标记 `SOURCE_TIMEZONE`;保留原日期与时间,不擅自转换。新 `SAVE_REQUIREMENT` 的用户输入仍要求有效 IANA 时区:只要提交非空 `target`,`target.timezone` 就必填,不能用原业务读取允许空值的规则放宽新录入校验。合同冻结不代表实现、部署或验收已完成。
|
||||||
|
|
||||||
|
内部 `ContainerSource` 的时间字段扩充如下(其余既有字段不变):
|
||||||
|
|
||||||
|
```text
|
||||||
|
departedAt: Instant|null
|
||||||
|
departedLocalAt: LocalDateTime|null
|
||||||
|
sailedEvidenceLocalAt: LocalDateTime|null
|
||||||
|
```
|
||||||
|
|
||||||
|
三种时间至少一种有值。`departedAt` 或 `departedLocalAt` 是确切开船时间;`sailedEvidenceLocalAt` 仅证明存在实际发生且节点序号大于等于开船节点的事实,可用于确认已开船来源资格,不能显示为确切开船时间,也不能复制成 `departedAt`/`departedLocalAt`。仅有后续实际节点证据时,保留证据及其语义,不能把该节点发生时间冒充开船时间。
|
||||||
|
|
||||||
|
所有统计按稳定事项键去重;全局五项统计是不同集合,允许重叠,不能相加作为工作量。日历五个 BucketCounts 互斥,依次按已完成、需复核、已确认、无需预约、其余待安排归类,相加等于 total;无需预约单独表达,不能冒充已确认。同一真实车次在一天按一项运输工作计数,关联批次在明细中展示;批次送货工作仍各计一项。containers 保存全部关联柜,按任一关联柜筛选均能命中,共享车次仍只计一个事项。keyword 仅过滤当前明细,匹配业务号、柜号、批次号和地点,不影响全局摘要。`calendarDate` 优先实际、确认、目标;日期已过而未完成进入超期,不能从全局消失。事项无日期但有跟进日期仍属于未定日期;“今日跟进”按该事项作业当地今日判断,无地点时使用明确的业务默认时区并展示口径,不能取服务器默认时区。
|
||||||
|
|
||||||
|
Action 的 code/target 是白名单业务动作,不下发任意 URL 或 HTTP 方法。前端映射既有入口或工作命令表单;不能只凭 code 发车/完成,原业务命令仍复核权限、版本及前置事实。缺权限可以看详情和明确原因,不能以禁用按钮替代完整下一步说明。首屏一个主要下一步,其余放详情;若需要先处理其他事项,targetWorkItemKey 指向前置项,关闭后回原上下文。
|
||||||
|
|
||||||
|
工作命令只覆盖工作模块自身拥有的数据:
|
||||||
|
|
||||||
|
| command | payload 必需语义 | 边界 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `CONFIRM_ROUTE` | `flow=TRANSFER/DIRECT`,`reason` 可选 | 核对业务事实、版本与已有安排,事务幂等生成清单 |
|
||||||
|
| `SAVE_FOLLOWUP` | `ownerId`、`followupDate`(可空)、`note` | 只写跟进;不能清除未接手、未预约或未完成需求 |
|
||||||
|
| `RESOLVE_REVIEW` | `reviewVersion`、`note` | 对已展示的影响版本复核;若原安排本身需改,先走原业务命令,不能用复核代替改期 |
|
||||||
|
| `SAVE_REQUIREMENT` | `target: Slot|null`、`bookingRequired: boolean`、`receivingRequirements`、`reason` | 非空 target 必须填写有效 IANA timezone;仅用于原业务尚无计划实体的接仓需求、客户仓收货要求及还空目标;FBA、提柜、车次计划仍写原模块;无需预约必须有明确收货要求依据 |
|
||||||
|
| `HANDOFF_RETURN` | `recipient: Responsibility`、`reason` | 保留原预约、原责任与交接记录;新接手未确认仍待办;重复提交不重复交接 |
|
||||||
|
| `ACCEPT_RETURN` | `handoffVersion`、`note` | 服务端核验当前责任与有效转交版本;用户本人可接手,外部承运方由具备写权限的运营记录明确反馈依据,保留真实操作人;只确认责任,不等于实际还空 |
|
||||||
|
|
||||||
|
服务端拒绝不支持的 command/payload,不提供通用“改状态/标为完成”。跟进、复核使用 `platform:appointment:followup`;路线、缺失计划要求及责任转交使用新写权限 `platform:appointment:manage-work`,接手操作还需身份约束;读取使用 `platform:appointment:list` 并核验关联来源的读取资格。权限种子/菜单绑定由总控集成,不通过移除鉴权让前端联调。
|
||||||
|
|
||||||
|
首次设置目标、首次同日落实和首次配车建立基线,不触发无意义复核。真正改期/货量或执行关系变化仅标记已有相关目标或已落实的下游;未定日期、尚未安排的项继续待安排。复核动作本身不再传播一轮复核;旧影响版本不能覆盖新变化。取消预约不取消工作需求。普通回复、复核、取消不能清除还空转交待接手提醒。
|
||||||
|
|
||||||
|
## 4. 预约核心向消费者提供的边界
|
||||||
|
|
||||||
|
已落源码的货物核实接口可据此并行消费,但仍须测试通过才能作为完成交付:
|
||||||
|
|
||||||
|
- GET `/api/platform/v1/last-leg/appointment-planning/sources/{sourceKey}/cargo-verification`,query 为 `customerId`,可选 `destinationKey`。返回 `Context{source, verification, allocatedPackages, unknownAllocationCount, effectivePackages, availablePackages, sourceChanged, allowedActions, blockReasons}`;可分配数无法确定时为 null,不得显示为 0。
|
||||||
|
- POST 同路径,query 为 `customerId`;body:`destinationKey, expectedSourceVersion, expectedVersion, packageCount, shipmentReferences[], remark, idempotencyKey`。返回 `Verification{version, sourceVersion, destinationKey, sourcePackages, packageCount, shipmentReferences[], remark, operatorName, verifiedAt}`。未知原箱数可保存经核实箱数,已知原箱数不能超出,已分配量不能被覆盖到更小;不改原订单。
|
||||||
|
- source 字段以 `AppointmentSourceService.Source` 和 `appointment-cargo-verification-v1.yaml` 为准;现有 `VERIFY_CARGO` 只代表核实能力,不代表分批已开放。
|
||||||
|
|
||||||
|
分批能力以实际 Controller/DTO/OpenAPI 和直接验证为准,不得以旧整票 preview/create 假定 V13 已全部具备。核心任务核对并冻结本轮新增或调整的合同,必须包含稳定 batchKey/version、每个 customerId/sourceKey/destinationKey 的分配量、核实版本、来源版本、幂等键、取消/替代关系,以及所影响的批次/事项引用;对同仓合并保留逐票来源,不把客户归属抹平。新工作模块通过单向只读适配获得批次身份和覆盖,不能回调形成包循环;原业务命令成功后按相关键重新读取/协调工作项,不建立第二本数量台账。
|
||||||
|
|
||||||
|
本轮 V13 接口补充按正式变更说明第十节核对:全部/部分分配去向、当前共同预约范围及版本、待重约和排除成员、失效预约与仍有效数量分配的边界、逐步骤结果及受影响事项。沿既有真实合同补齐,不照搬原型字段名,也不另建同功能端点。具体新增字段、动作和错误码由生产者先冻结并同步消费者。
|
||||||
|
|
||||||
|
V13 生产者与消费者使用下列明确边界;这是接口合同,不表示已部署验收:
|
||||||
|
|
||||||
|
- 批次上下文沿 `GET /appointment-planning/batches/{batchKey}`,`currentBatches` 返回全部当前去向;`originalSourceRefs` 保留当前和已移出货物的客户、原来源、目的地,仅用于过滤当前去向。可写分配量仍取 `sources` 及服务端资格,不能将历史来源重新作为可用余量。
|
||||||
|
- 收货范围命令归 `inboundplan/receiving/`,HTTP 根为 `/api/platform/v1/last-leg/appointment-receiving`;具体七个读写入口、字段与权限以 `appointment-receiving-v1.yaml` 为准。稳定批次、独立收货预约及真实车次是不同身份。共同或独立重约产生新的有效预约关系,旧取消范围保留历史。
|
||||||
|
- 待确认变化提交 `ownerId`,平台人员目录校验身份并给出姓名;响应 `Pending.followup` 保存权威姓名及可空跟进日期。后送批次与再次分批由工作域继承负责人和跟进记录,不将自由文本当账号,不将跟进日代替作业日。合批遇到同客户不同跟进安排时须先明确统一,不能猜选覆盖。
|
||||||
|
- `FbaAppointmentTransportPort` 负责真实移货;`FbaAppointmentExecutionPort` 按客户、批次及原履约证据给出重约资格。`Book.executionVersion` 绑定涉及批次的执行事实,写入只核对所选客户;同批已完成客户不阻断未完客户重约。锁顺序为车次、排车/执行、批次,取得批次锁后再次读取执行版本防止间隙新增关联。
|
||||||
|
- 确认变化同事务核平原量、后送量及运输关系;失败整体回滚。撤回未生效变化不改货量、原确认或车辆,不因运输开始而失去撤回入口,仍校验变化版本及幂等。保存后的独立约仓、配车失败只续办该步骤,不重复创建已成功批次。
|
||||||
|
|
||||||
|
新增或调整部分采用阶段门禁:生产者先产出真实合同与直接测试,消费者再接写入;现有已冻结能力及不依赖新增接口的工作继续并行。生产链不得用 Mock、空数组或成功兜底假装未交付能力;缺依赖在开发交接中列明,不向用户呈现不可用的假成功按钮。
|
||||||
|
|
||||||
|
- 同批部分客户已正式确认时,其余客户通过 `POST /api/platform/v1/last-leg/appointment-receiving/plans` 保存本客户未确认计划。请求 `Plan` 使用 `member(batchKey,batchVersion,customerId)`、`details`、`executionVersion` 和幂等键;只允许 `PENDING`/`FAILED`,正式确认字段必须为空,目标日期可空,未约成须说明原因。`Context.plans` / `BatchReceiving.plans` 返回权威客户计划,存在但目标为空表示真实清空,不回退其他客户日期。计划不占用新的货量、不形成有效收货确认、不修改其他客户确认。当前计划归核心 `ll_fba_receiving_plan`,工作域仅作投影;批量读取为三条有界查询。
|
||||||
|
|
||||||
|
- 整组重约允许明确选择本次客户子集。跨批次组只选部分批次时,通过只读 `POST /api/platform/v1/last-leg/appointment-receiving/execution-scope` 以 `ExecutionQuery.members` 获取实际所选范围的执行资格及版本;该入口使用列表权限,不建立预约。前端重新核对选择,写入继续校验原批次和取消组版本,不能自行合成 token 或静默刷新用户未核对的批次事实。
|
||||||
|
|
||||||
|
- 独立核实资料更新后,当前未确认客户通过 `POST /api/platform/v1/last-leg/appointment-receiving/cargo-refresh` 明确采用最新资料。请求 `RefreshCargo` 包含原 `member`、完整逐来源期望版本、`executionVersion` 和幂等键;先展示最新核实量与货件资料供操作者核对。只更新本客户原批次资料快照,不改分配量、客户/来源/目的地身份或其他客户确认。有效确认、待确认变化、已执行、来源身份改变或数量不守恒均拒绝;不以放松Plan/Book版控恢复,不在独立核实保存后自动采用。
|
||||||
|
|
||||||
|
## 5. 唯一文件写者与阶段交付
|
||||||
|
|
||||||
|
以下代码路径相对工作区 `C:/Users/BY-OY/Desktop/code/chongchong-global`。修改前读适用最近指引,保留已经存在的未提交更改。包级范围只覆盖预约工作本轮直接相关文件,不授权重写整包无关业务。
|
||||||
|
|
||||||
|
| 写者 | 独占文件/触点 | 不得写入 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| 开发总控兼预约核心 `01a13df2-c639-7560-a3e2-30bc23a579b3` | `baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/appointmentplanning/` 来源、核实、覆盖、批次与预约桥接,以及 `inboundplan/` 核心预约和直接消费者,排除下述本批交给后端专项的触点及直接测试;现有预约规划、核实、批次及 FBA OpenAPI;本轮全部 Firstleg 来源接口和直送卸货/还空守卫;既有检查点、共享 DDL/SQL、IAM/权限种子、根路由导航、Gateway/公共门禁集成及验证窗口 | 两个专项独占文件、原型及业务主文档;不能与专项并写 |
|
||||||
|
| 工作事项后端 `01a13e1c-9101-7a43-8445-771685ff315e` | 原 `baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/appointmentwork/`、同包测试、`src/main/resources/openapi/appointment-work-v1.yaml`、独立 DDL 提案 `src/main/resources/db/appointment-work.sql` 保留;增加下述 Lastleg 原域适配及精确同步触点 | Firstleg;未列入本批适配的预约核心和 PDA 写类;共享 SQL/配置/IAM/权限种子/架构门禁 |
|
||||||
|
| 预约页面前端 `01a13e1c-db36-73e3-a231-d6649c51664b` | `apps/admin-web/src/modules/appointment-calendar/` 全部页面、组件、API、直接测试与操作矩阵;共享 `overseas-warehouse/components/FbaAppointmentFields.vue`、`appointmentForm.ts`/直接测试;`api/inboundOrders.ts`/测试仅预约消费段;`index.ts` 仅相关导出;`pages/InboundOrdersView.vue`/测试仅预约弹窗衔接;增加下述跨页面工作流触点 | 后端、根路由/导航、本轮工作流之外的业务功能、原型与业务文档 |
|
||||||
|
| 原型与文档支持 `01a13a8d-e968-7962-906b-1a514792d921` | 业务梳理、原型、本文及必要业务正式文档/入口;设计确认后向开发总控交接 | 代码、共享 SQL、构建、开发检查点写入、开发派工及持续进度跟踪;接口对齐和验证安排由开发总控负责 |
|
||||||
|
|
||||||
|
模块 `lastleg-service/src/main/resources/db/lastleg.sql`、`deploy/sql/海外区域统一增量-MySQL8.sql` 与 `reset-test-fba-appointments.sql` 统一由当前开发总控 `01a13df2-c639-7560-a3e2-30bc23a579b3` 集成,保留各专项已有改动,新后端仅维护独立 DDL 提案,不并写共享文件;本轮只编辑文件,不执行 SQL。
|
||||||
|
|
||||||
|
本批工作事项后端新增写权,以下 Java 路径相对 `baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/`:
|
||||||
|
|
||||||
|
- 本轮 Lastleg 原业务域与工作事项间的真实读取/同步适配。
|
||||||
|
- `inboundplan/work/`:本轮原预约域的工作事项适配。`inboundplan/service/InboundFbaAppointmentService.java` 及核心预约/分批测试已由后端专项明确停止修改并交回开发总控,V13 核心调整由总控唯一写入;本条覆盖早期“专项增加最小同步钩子”的临时移交。
|
||||||
|
- `dispatch/service/DispatchService.java`、`dispatch/dto/DispatchRequests.java`、`fleet/trip/FleetTripExecutionService.java`,以及以上适配直接涉及的 Mapper、DTO 和对应测试;只为本轮工作流衔接修改,不扩展为原业务域整体重构。
|
||||||
|
|
||||||
|
上述保留给后端专项的触点及其直接测试由专项唯一写入;总控不同时编辑。已交回的预约核心服务及核心测试由总控唯一写入。再次调整写权时须明确移交后再写,不按同文件不同方法安排并写。后端专项仍不能改 Firstleg、共享 SQL/IAM/公共门禁。
|
||||||
|
|
||||||
|
本批预约页面前端新增以下最小工作流衔接写权,路径相对 `apps/admin-web/src/modules/`;可同步对应直接测试,不改页面中无关业务:
|
||||||
|
|
||||||
|
- `container-loading/pages/ContainerDetailView.vue`、`container-loading/api/terminalDrayages.ts`。
|
||||||
|
- `overseas-master-data/pages/TripsView.vue`、`overseas-master-data/pages/TripDetailView.vue`、`overseas-master-data/components/TripPlanDialog.vue`。
|
||||||
|
- `overseas-warehouse/pages/DispatchesView.vue`、`overseas-warehouse/components/SmartDispatchDialog.vue`、`overseas-warehouse/api/dispatches.ts`、`overseas-warehouse/pages/InboundOrderDetailView.vue`。
|
||||||
|
|
||||||
|
本轮全部 Firstleg 来源接口、直送实际卸货/还空守卫及相应原域事实适配由开发总控负责;工作事项后端消费和提出所需 DTO,不写 Firstleg。提柜后还空责任与原承运历史分离的业务约束不变。Firstleg 无时区 local 实际事实与开船证据按第三节已冻结时间合同衔接,不能把证据时间当作确切开船时间。共享 DDL、IAM、根公共权限常量及门禁仍归总控,不能借上述原域适配授权扩大写权。
|
||||||
|
|
||||||
|
1. 核心保持核实与数量分配开发;新后端按 v1 实现工作合同;前端接入已冻结的工作 v1 和核实接口。分批消费者等待真实分批合同,其他部分并行。
|
||||||
|
2. 每个任务在自己对话报告实际修改、接口偏差、缺口、测试证据与可集成基线。总控读取,不要求自动跨对话回信;不新增任务或递归派工。
|
||||||
|
3. Maven/共享构建输出按总控分配窗口串行;前端只运行本模块直接验证,完整测试/build 先核对其他专项的窗口。当前先开发和准备测试,由总控安排执行时段。
|
||||||
|
4. 原型由原型与文档支持对话统一维护;V13 已获用户确认并形成正式变更说明。实现偏差先报当前开发总控,必要时请求文档支持,不能各自改原型或偷偷改变 DTO。开发总控沿本节原分工推进,不新增任务或扩大文件写权。
|
||||||
|
|
||||||
|
## 6. 必须保留的验收场景
|
||||||
|
|
||||||
|
V13 本批新增及强化场景以[正式变更说明第十一节](预约工作日历V13变更说明.md#11-最小验收矩阵)为准;下列既有场景继续保留,不能用原型通过代替真实合同和实现验收。
|
||||||
|
|
||||||
|
- 已开船但未创建预约、未知路线、没有海外仓绑定的直送、非 FBA 客户仓、货已送完但未还空,全部能进入正确待办;跨月份、全关类型、只看单流程不能误清全局数量。
|
||||||
|
- 中转一柜分三批、两车运输,柜级不重复;部分取消/改期/合并后数量仍守恒、逐票客户和货件信息未丢失;并发或重复点击不超分、不中断剩余需求。
|
||||||
|
- 直送不生成海外仓入库,不伪造卸货事实;同车或转交还空均可追踪原预约、新责任、接手状态及真实完成前置条件。
|
||||||
|
- 未定日期仅补货物资料不自动预约;有跟进日仍未定作业日期;首次计划无多余复核,真实变更仅影响相关已安排项,复核不产生复核循环。
|
||||||
|
- 日期跨时区、实际发生时间晚于目标、改期/取消后的旧事实仍正确;同一车次多批不重复计车辆工作量;只读用户不能通过通用命令越权执行。
|
||||||
|
- 原业务无时区 local 实际事实保留当地日期与完成状态,并标记 `SOURCE_TIMEZONE`;原业务 Slot 可缺时区但新录入不可缺;仅有 `sailedEvidenceLocalAt` 时可证明已开船,不能展示为确切开船时间。
|
||||||
|
- 外部来源或权威事实读取失败有明确失败反馈,不能展示“0 项/全部完成”;生产接口不能返回原型 Fixture。
|
||||||
|
|
||||||
|
生产代码、离线检查、部署与真实验收分别交付。人工视觉验收仍按 1920×1080、100% 缩放,由用户截图确认;本轮不部署、不运行 SQL、不写测试环境数据、不启动本地后端、不自行提交或创建分支/worktree。
|
||||||
+42
@@ -1,5 +1,31 @@
|
|||||||
# 测试环境独立任务协作登记
|
# 测试环境独立任务协作登记
|
||||||
|
|
||||||
|
## 2026-10-18 预约演示问题交接与原总控退出
|
||||||
|
|
||||||
|
用户明确指定既有对话 `01a14f36-9fae-7dc0-90e6-1d3c54d22de6`(Bug 处理-1)处理 D1674 演示中的三个问题:保存预约后页面 A0409、查看原排车单后事项弹窗未关闭、继续安排本批车辆提示操作资格已变化;并明确 `01a13df2-c639-7560-a3e2-30bc23a579b3`(预约)不再担任总控。原对话已将操作指南、四张用户截图路径、已有诊断和保护边界发送给指定对话,停止开发调度、修改与部署。下方历史预约总控身份不再代表当前授权;本次不指定新的全局总控、不新建长期专项。
|
||||||
|
|
||||||
|
接收对话 cwd 为 `C:/Users/BY-OY/Desktop/code/chongchong-global`、host local,属于本表 TEST 项目范围。本次交接仅覆盖这三个缺陷的定位、局部修复及离线验证;不自动授权提交发布、SQL、真实 HTTP 或测试环境写入。原两箱样本及用户已操作的领导演示数据保持,禁止重建或重置来绕过故障。涉及本表排车修复任务仍持有的文件时先核对当前写入状态,不覆盖其修改;原对话不再并行处理。接收对话直接向用户交付结果。
|
||||||
|
|
||||||
|
## 2026-10-18 排车修复分工
|
||||||
|
|
||||||
|
用户先创建三个待分工对话,随后明确由规划对话 `01a14cd6-4647-7b32-b719-f009dec87ae0` 只做文档规划并向以下三个对话分派修复。规划与精确文件边界见[排车流程修复规划](海外仓业务/排车流程修复规划.md);本轮为有限缺陷修复,不新建长期专项。三个对话均已核对归 TEST 项目 `c64729ff-6710-43c6-8ef2-d84e9666cc1e`、host `local`、cwd `C:/Users/BY-OY/Desktop/code/chongchong-global`。
|
||||||
|
|
||||||
|
| task_id | 对话 | 当前职责与写权 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `01a14d16-8631-7de2-acde-67050ce902b9` | 排车修复 | Lastleg后端修复与代码集成唯一写者;取消释放、派送状态、换标全托、合托来源及最小前端能力契约;直接测试与必要OpenAPI/结构定义,唯一后端Maven执行者。 |
|
||||||
|
| `01a14d17-02a2-7890-90bb-33067a1eb42f` | 排车修复-2 | Admin/PDA直接消费页面、组件、API/类型与相邻测试;修复动作提示、换标草稿和恢复错误,接入稳定后端契约;不改后端或预约核心页面。 |
|
||||||
|
| `01a14d17-17d8-7072-849b-37250083b676` | 排车修复-3 | 独立只读审查与连续场景回归设计;仅独占新增 `lastleg-service/src/test/java/com/baiyue/lastleg/dispatch/service/DispatchRepairWorkflowTest.java`,不改生产实现、已有测试或共享fixture;Maven交后端负责人执行。 |
|
||||||
|
|
||||||
|
用户本轮已授权以上修复实施及必要离线验证;规划对话仅写规划、登记和最小路由,不改代码。执行者在自身对话报告,由规划对话读取并转达,不因派工自动获得向其他对话发送消息的授权。保持当前工作区和分支,不提交/推送,不新建对话、worktree或项目副本,不启动服务,不执行SQL、真实HTTP、部署或环境写入。
|
||||||
|
|
||||||
|
本批仅覆盖规划中精确缺陷,不接管预约核心或同步性能。既有预约批次分配和工作事项接线必须保留。派工时“预约”对话正在执行固定18文件提交发布;与其活动写入或共享构建重叠时先只读核对并报告,继续无冲突范围。前序任务环境授权不传递;不同任务不得并行写相同文件或运行共享后端Maven。部署与实际验收事实仍只维护两份环境主契约。
|
||||||
|
|
||||||
|
2026-10-18 用户在本规划对话追加明确授权“请提交代码,且帮我部署,然后验收”。本轮仅将已独立复审通过的排车修复候选提交、按发布需要推送,并部署到上述 TEST 项目的 Lastleg 与 Admin;覆盖前段针对本批提交、部署及真实 HTTP 的禁止,其他边界保持。后端“排车修复”唯一负责精确候选提交、Lastleg 发布及本批新建合成样本的接口验收;前端“排车修复-2”唯一负责 Admin 精确候选提交及配套发布,等待 Lastleg 就绪后串行发布;“排车修复-3”只读复核候选、部署版本和验收证据,测试文件继续冻结。规划对话维护分工与环境主契约,不接管代码或执行器。
|
||||||
|
|
||||||
|
发布前核对当前分支、冻结哈希、实际环境与 Schema,保留其他窗口未提交修改,不全目录暂存、不切分支、不创建 worktree。本轮真实接口的非破坏性业务写入仅用于可识别的新合成样本,不操作既有业务样本、不伪造外部真实凭证。执行 SQL、删除、重置及无关配置发布不包含在上述概括授权内;若实际结构不满足新版本,先交付具体差异、最小 SQL 与影响范围,再落实单独授权。未取得结构前置条件不得发布不匹配的服务。人工页面与 PDA 硬件验收仍按现行规则独立报告,不能由 HTTP 或 Job 成功代替。
|
||||||
|
|
||||||
|
用户随后通过本规划对话的确认项明确回答“授权执行这份两表 SQL 并继续”。授权仅限 TEST `baiyue_lastleg` 的 `lastleg-service/target/dispatch-repair-test-schema-20261018.sql`,SHA-256 `0d016752bac700d67de943e82a03db50853986c5dc3efa35f178ca8eb3ab0f6b`:调整 `ll_exception_return_item` 的原箱字段、索引及约束,并新建 `ll_return_carton_stock_receipt`。由后端“排车修复”唯一执行,执行前重新核对实际环境、文件哈希与当前结构,执行后只读核验;不包含其他 SQL、业务数据删除/重置/回填。结构核验通过后沿既有授权继续 Lastleg、Admin 发布与新样本验收,无需重复请求相同授权。
|
||||||
|
|
||||||
## 2026-10-15 库存历史还原并行只读验收
|
## 2026-10-15 库存历史还原并行只读验收
|
||||||
|
|
||||||
用户明确授权复用现有“库存分析-1”和“库存分析-2”,总控为“平台销量总控” / `01a13496-1713-7ac3-9981-1ae9ed551571`;TEST 项目 `c64729ff-6710-43c6-8ef2-d84e9666cc1e`、host local、cwd `C:/Users/BY-OY/Desktop/code/chongchong-global` 已核对。仅本轮临时验收,不创建长期任务,不改变原业务代码写权。
|
用户明确授权复用现有“库存分析-1”和“库存分析-2”,总控为“平台销量总控” / `01a13496-1713-7ac3-9981-1ae9ed551571`;TEST 项目 `c64729ff-6710-43c6-8ef2-d84e9666cc1e`、host local、cwd `C:/Users/BY-OY/Desktop/code/chongchong-global` 已核对。仅本轮临时验收,不创建长期任务,不改变原业务代码写权。
|
||||||
@@ -13,6 +39,22 @@
|
|||||||
|
|
||||||
用户随后明确授权让“库存分析-2”直接修改新发现的同秒长唯一余额链误判,覆盖其只读限制。仅移交 `InventoryHistoryCalculator.java`、`InventoryHistoryBuilder.java` 的计算修订签名和对应history直接测试;使用已有流水本地重算,公开日末口径保持,禁止额外领星请求、环境写入、提交或部署。该任务获得一次定向Maven测试窗口,总控暂停并行Maven;总控负责审查、提交、发布及真实复核。
|
用户随后明确授权让“库存分析-2”直接修改新发现的同秒长唯一余额链误判,覆盖其只读限制。仅移交 `InventoryHistoryCalculator.java`、`InventoryHistoryBuilder.java` 的计算修订签名和对应history直接测试;使用已有流水本地重算,公开日末口径保持,禁止额外领星请求、环境写入、提交或部署。该任务获得一次定向Maven测试窗口,总控暂停并行Maven;总控负责审查、提交、发布及真实复核。
|
||||||
|
|
||||||
|
## 2026-10-15 预约工作日历开发分工
|
||||||
|
|
||||||
|
用户明确要求保留现有开发任务,并新建“工作事项后端”“预约页面前端”两个独立任务。用户随后在“预约”对话明确指定 `01a13df2-c639-7560-a3e2-30bc23a579b3` 接任开发总控,原总控 `01a13a8d-e968-7962-906b-1a514792d921` 仅保留原型及业务文档支持;本次交接覆盖此前原型对话的开发调度与共享文件写权。三个开发任务均使用 TEST 项目 `c64729ff-6710-43c6-8ef2-d84e9666cc1e`、host `local`、cwd `C:/Users/BY-OY/Desktop/code/chongchong-global`;不切换到另一开发环境目录。以下是本轮预约工作日历的唯一分工,不改变其他业务专项的写权和环境授权。
|
||||||
|
|
||||||
|
| task_id | 对话 | 稳定职责及独占边界 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `01a13df2-c639-7560-a3e2-30bc23a579b3` | 预约 | 当前开发总控兼预约核心后端:保留来源、核实、覆盖、批次和预约核心写权,但本批移交后端专项的原域适配触点及其直接测试除外。负责本轮全部 Firstleg 来源接口、直送卸货/还空守卫,开发调度、检查点、共享 DDL/SQL、IAM/公共门禁集成和 Maven/验证窗口;不得与两个专项并写。 |
|
||||||
|
| `01a13e1c-9101-7a43-8445-771685ff315e` | 工作事项后端 | 原 `appointmentwork/`、同包测试、独立 OpenAPI/DDL 提案写权保留;新增本轮 Lastleg 原域适配、`inboundplan/work/`、`DispatchService`、`DispatchRequests`、`FleetTripExecutionService` 及其直接 Mapper/DTO/测试写权。V13 首批已明确将 `InboundFbaAppointmentService` 及核心预约/分批测试交回开发总控,专项不再写入。精确路径见开发协作契约;不改 Firstleg、共享 SQL/IAM/公共门禁。 |
|
||||||
|
| `01a13e1c-db36-73e3-a231-d6649c51664b` | 预约页面前端 | 原预约页面范围保留;新增货柜详情/码头拖车 API、车次列表/详情/计划弹窗、排车列表/智能排车/API、入仓单详情的工作流衔接最小修改权,精确文件见开发协作契约。对齐真实工作与批次接口,不改后端。 |
|
||||||
|
|
||||||
|
当前开发总控 `01a13df2-c639-7560-a3e2-30bc23a579b3` 唯一维护开发检查点、调度两个专项,并负责本轮模块 `lastleg.sql`、统一增量 SQL、重置脚本、权限初始化、根路由/导航、Gateway 和架构门禁的最小集成及共享构建窗口。原型/文档支持对话 `01a13a8d-e968-7962-906b-1a514792d921` 停止代码、共享 SQL、构建和开发调度,仅维护原型及业务正式文档;检查点写权已交回,本次仅更新登记及开发契约。两个专项保留原范围,并按上表增补本批精确集成触点;发生原核心文件重叠时,以本批后端专项写权为准,总控不得同时写同一文件。接口生产者负责对应 OpenAPI/DTO,变更先同步消费者;具体文件和接口以[预约工作日历开发协作契约](海外仓业务/预约工作日历开发协作契约.md)为准。各任务在自己对话报告,由当前开发总控读取,不因收到消息自动跨对话回信或递归创建任务。
|
||||||
|
|
||||||
|
用户已授权本轮代码开发和必要离线验证;未授权部署、执行 SQL、环境写入、启动本地后端或真实 HTTP。保持当前工作区和分支,不创建分支、worktree 或项目副本,不提交。两个新任务已完成只读准备,按上述边界解锁实施;每个文件一个写者,Maven/共享构建串行协调,不能把原型通过当作真实业务验收。
|
||||||
|
|
||||||
|
2026-10-16 用户再次明确角色:`01a13df2-c639-7560-a3e2-30bc23a579b3` 是开发设计与总控对话,负责安排开发、接口对齐和验证收口;原型/文档对话完成设计与文档后交接,不继续派工、进度跟踪或开发审查。此前一次跟进产生的进度与问题交回开发总控,不改变三个开发任务现有写权,也不新增环境操作授权。
|
||||||
|
|
||||||
## 2026-10-14 列表优先采集紧急修改接管
|
## 2026-10-14 列表优先采集紧急修改接管
|
||||||
|
|
||||||
用户在 `01a137b9-87ca-7db0-a400-7c48c301ae9b` 指定接续原总控 `01a13496-1713-7ac3-9981-1ae9ed551571` 的本批工作;原总控已明确释放本批代码、文档、共享 Maven 和发布调度权。本批唯一协调与实现写者为接管对话,继续使用 TEST 项目 `c64729ff-6710-43c6-8ef2-d84e9666cc1e`、host local、cwd `C:/Users/BY-OY/Desktop/code/chongchong-global`,不创建新对话、分支、worktree 或内部子代理。
|
用户在 `01a137b9-87ca-7db0-a400-7c48c301ae9b` 指定接续原总控 `01a13496-1713-7ac3-9981-1ae9ed551571` 的本批工作;原总控已明确释放本批代码、文档、共享 Maven 和发布调度权。本批唯一协调与实现写者为接管对话,继续使用 TEST 项目 `c64729ff-6710-43c6-8ef2-d84e9666cc1e`、host local、cwd `C:/Users/BY-OY/Desktop/code/chongchong-global`,不创建新对话、分支、worktree 或内部子代理。
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
# 统一认证与服务通信契约
|
# 统一认证与服务通信契约
|
||||||
|
|
||||||
|
2026-10-15 23:58 用户确认本轮均为测试假数据,无需真实外部业务材料;此前对应阻塞撤销。现有自提样本经统一Gateway的25项只读复验通过,独立会话已退出;当前发布提交及健康一致。结合已完成的权限、稳定批次/消费者、四端页面请求和性能验收,本轮测试技术验收完成;不将合成预约PENDING或无真实POD作为认证/通信缺陷,也不宣称真实货物履约完成。完整结论及证据见测试环境主契约最新记录。
|
||||||
|
|
||||||
|
本轮最终版本Lastleg #339/Admin #624健康且实际提交匹配。目的仓冻结值修复经原样本25项GET-only检查和页面复核通过,单详情1个GET/51ms,浏览器logout200后关闭。#339最终保留首轮并补足两轮共36次搜索全部<1秒、最大973ms,完整语义同#334;两个性能验证会话及只读复验会话均注销。下述21:46记录的SKU目的仓缺口现已关闭,无新增Token、权限、路由或事件变更。
|
||||||
|
|
||||||
|
2026-10-15 21:46 同轮补验:Lastleg #338 新建退货换标直接出库复用现有受服务身份保护的 IAM 客户与 Warehouse 仓目录,各读取一次并校验主体后冻结名称;重放不重复目录查询,列表/详情读取快照,不新增跨服务逐行补全。新合成样本37项真实HTTP通过,三独立会话注销、无残余盘点会话;当前测试搜索36次全部小于1秒、最大808.4ms,完整语义同原基线。SKU目的仓页面缺口仍在补修,当前发布及最终验收以《测试环境单机部署与配置契约》的最新记录为准。本次未改Token、权限、Gateway路径或事件协议。
|
||||||
|
|
||||||
|
2026-10-15 预约工作日历 TEST 权限补验:IAM #177 已发布,两项新增权限 `platform:appointment:manage-work`、`platform:firstleg:terminal-drayage:direct-unload:confirm` 及平台管理员关联已按匹配 SQL 落库。独立新登录确认权限集合含两项权限,工作全局摘要、月日历、事项分页均经统一 Gateway 返回 HTTP 200/业务 200,验证会话退出成功。工作跟进 11 项 HTTP 检查已覆盖匿名/客户域拒绝、只读平台写入拒绝、正确 Auth 主体负责人、幂等与旧版本拒绝;首轮验收 fixture 把 IAM 档案 userId 当成 authUserId 的失败保留,确认未落库后修正复验。Admin #619 另修 JWT 数字长账号 ID 解码精度,真实解码→登录/恢复→负责人提交回归及最终 3,197 项前端测试通过,不改变 Token 签发和权限模型。18:48 独立托盘默认分组复验经 Lastleg #334 的 11 项检查通过,省略分组、重放及跨组拒绝均经统一 Gateway。19:14 Firstleg #497/Lastleg #335 批量事实读取修复后,九类查询各三轮及三路并发各三轮共 36 次统一 Gateway 请求全部 HTTP 200/业务 200、小于 1 秒,完整返回语义与旧版一致;后续 #336 的超标复测另保留。20:06 Firstleg #499 再缩小批次来源聚合范围后,同样 36 次请求全部小于 1 秒、最高 819.8ms,完整语义与原基线一致,当前性能边界以主契约最新补验为准。21:11 Lastleg #337/Admin #623 发布后,同样 36 次统一 Gateway 请求仍全部小于 1 秒、最高 928.9ms,完整语义不变。换标三种自提直接出库、未绑定确认拒绝、纯 SKU 数量守恒及成功后幂等重放已用独立合成样本经 Gateway 验证,首次脚本数量类型误断言保留并按原批续验通过,六个自有登录全部注销、盘点会话为空。客户详情精确进度联合发布后,12 项 HTTP 检查覆盖原票状态与列表一致、跨客户 A0404 无数据及自有会话退出。未改变 Token、权限或 Gateway 路由;Admin 首次浏览器退出取证被过早关页中断,不能判定产品缺陷,该会话已补充正式撤销,Client/PDA 浏览器退出均有 HTTP 200。发布版本、精确重建、实物消费证据、性能样本边界及未关闭项以[测试环境主契约](测试环境单机部署与配置契约.md)“预约工作日历 TEST 发布与定向联调”节为准。
|
||||||
|
|
||||||
2026-10-12 自营统计 TEST 身份验收进行中:六项权限及平台管理员关联已落库;独立最小只读平台身份可以查询、不能提交采集命令,无权限平台身份被 A0403 拒绝,客户身份不能进入平台统计域,匿名请求为 401/A0401。平台管理员在采集 OFF 时收到中文业务拒绝 B0001,未新增任务;内部调用无令牌被 A0401 拒绝,Lastleg 出口预算授权在 OFF 时被 `EGRESS_MODE_REJECTED` 拒绝。首轮业务查询验收脚本的六项错误已按正式合同修正,r2 完整 Gateway 矩阵 86/86 通过;这只证明合成查询和当前身份边界,不外推为真实来源、性能、发布恢复及人工页面验收。发布版本、合成数据边界及未关闭项统一见测试环境主契约“自营统计 TEST 发布与验收”节。
|
2026-10-12 自营统计 TEST 身份验收进行中:六项权限及平台管理员关联已落库;独立最小只读平台身份可以查询、不能提交采集命令,无权限平台身份被 A0403 拒绝,客户身份不能进入平台统计域,匿名请求为 401/A0401。平台管理员在采集 OFF 时收到中文业务拒绝 B0001,未新增任务;内部调用无令牌被 A0401 拒绝,Lastleg 出口预算授权在 OFF 时被 `EGRESS_MODE_REJECTED` 拒绝。首轮业务查询验收脚本的六项错误已按正式合同修正,r2 完整 Gateway 矩阵 86/86 通过;这只证明合成查询和当前身份边界,不外推为真实来源、性能、发布恢复及人工页面验收。发布版本、合成数据边界及未关闭项统一见测试环境主契约“自营统计 TEST 发布与验收”节。
|
||||||
|
|
||||||
2026-10-08 TEST回归后灰度发布、10月9日恢复核对:灰度IAM #10更新至 `d4eb0ef0233c`,权限5107004与唯一关联主体授权版本按现行契约同事务同步,未改角色授权;新会话的废弃审批及八类导出所需权限均核对通过,正式HTTP验收后已退出。六部署目标与17容器健康、TEST故障恢复证据、灰度验收边界详见测试环境主契约“TEST 回归后灰度发布”节;不能将运行健康或接口冒烟外推为灰度全流程及真机均已验证。
|
2026-10-08 TEST回归后灰度发布、10月9日恢复核对:灰度IAM #10更新至 `d4eb0ef0233c`,权限5107004与唯一关联主体授权版本按现行契约同事务同步,未改角色授权;新会话的废弃审批及八类导出所需权限均核对通过,正式HTTP验收后已退出。六部署目标与17容器健康、TEST故障恢复证据、灰度验收边界详见测试环境主契约“TEST 回归后灰度发布”节;不能将运行健康或接口冒烟外推为灰度全流程及真机均已验证。
|
||||||
|
|||||||
Reference in New Issue
Block a user