@@ -8,12 +8,20 @@
仓储转运审核、转运驳回:Admin 尾程订单 `apps/admin-web/src/modules/overseas-warehouse/pages/LastMileOrdersView.vue` → `apps/admin-web/src/modules/overseas-warehouse/components/WarehouseTransferReviewDialog.vue` ;权限、状态及 API 见该模块 `AGENTS.md` 的“仓储转运审核、通过与驳回”。不要把该入口当作头程订单审单,也不要按“转运”误入排车转派送。
先从任务中取“终端 + 业务对象 + 动作”,如“海外 PDA + 柜号 + 收货”。下面是检索提示,不替代业务契约; 代码路径均 从工作区根起算。用短词检索,不拿整句自然语言做精确匹配 。
先从任务中取“终端 + 业务对象 + 动作”,如“海外 PDA + 柜号 + 收货”。优先检索下面列出的组合词,不拿整句自然语言做精确匹配;命中后沿指定模块继续,不把所有含同一宽词的行全部读入。 代码路径从工作区根起算,检索提示不替代业务契约 。
- 审核:订单审核 / 测量审核 / 仓储转运审核,分别进入 Order / Firstleg / Admin 海外仓模块。
- 库位:海外库位 / 整票库位块,分别进入 Warehouse Overseas / 国内 Warehouse,按任务只选其一。
- 收货:柜号签收 / 到仓测量,分别进入 Lastleg `ReceivingContainerService` / Firstleg 测量入口。
- 拖车:订舱级拖车 / 目的港码头拖车,分别进入 Firstleg `TruckAppointmentService` / `TerminalDrayageService` 。
- 托盘:自动生成托盘 / 托盘标签,前者进入 Lastleg `ContainerInboundPlanConversionCoordinator` ;后者先区分国内散货、一件代发与海外资源。
先在本节定位组合词,再只查命中的一行或模块。仍无法区分且会改变修改范围时,补问终端、对象或操作阶段。
### 高频任务最小读取集
- 订单审核:根 `AGENTS.md` → `docs/业务快速索引.md` 本节 → `apps/admin-web/src/modules/unified-orders/` → `baiyue-firstleg/order/AGENTS.md` ;只有审核门禁跨到履约时才增加 `firstleg/AGENTS.md` 。不读海外仓审核或全量权限 SQL。
- PDA 出库:根 `AGENTS.md` → `apps/pda-overseas-uniapp/AGENTS.md` → `src/pages/dispatch/` 和 `src/api/fulfillment.js` → `lastleg-service/AGENTS.md` ;只有网关路径或 Token 失败才增加 `gateway-overseas /AGENTS.md` 。不读 Admin 排车配置,除非问题涉及平台转派送资格。
- PDA 出库:根 `AGENTS.md` → `apps/pda-overseas-uniapp/AGENTS.md` → `src/pages/dispatch/` 和 `src/api/fulfillment.js` → `lastleg-service/AGENTS.md` ;只有网关路径或 Token 失败才增加 `gateway/AGENTS.md` 。不读 Admin 排车配置,除非问题涉及平台转派送资格。
- 客户账单:根 `AGENTS.md` → Client `apps/client-web/AGENTS.md` → `src/modules/finance/` → `baiyue-firstleg/finance/AGENTS.md` ;平台账单才切换 Admin Finance。不要因“账单”自动加载柜费分摊或海外费用契约。
- 退货、异常、拖车:先用终端、阶段和动作分流;无法确定时只读取本节对应行,不全文加载海外仓 README 或 Lastleg 全部业务索引。
@@ -43,7 +51,7 @@
| 拖车、派车、提柜、还柜 | 国内订舱拖车与目的港码头车队是不同业务;海外配送排车另属 Lastleg | 国内 `apps/admin-web/src/modules/trucking/` ;目的港 `apps/admin-web/src/modules/container-loading/api/terminalDrayages.ts` ;配送查“海外出库、排车” |
| 报关资料、退税资料、完成文件 | 平台整柜操作与客户订单上传先按终端区分 | Admin `apps/admin-web/src/modules/container-loading/components/ContainerCustomsPanel.vue` ; Client `apps/client-web/src/modules/first-leg/components/CustomsDocumentsDialog.vue` |
| 退货、退货预报、退货换标、退货签收、退货合箱 | 客户退货预报及签收库存,区别于派送异常退回 | Client `apps/client-web/src/modules/overseas-warehouse/views/ReturnOrdersView.vue` ; Admin `apps/admin-web/src/modules/overseas-warehouse/pages/ReturnInventoryManagementView.vue` ; PDA `apps/pda-overseas-uniapp/AGENTS.md` ; Lastleg `returnreceipt/` ,见下文“退货预报、签收、库存与合箱” |
| PDA 出库、PDA 发车、扫码出库、整托出库 | 海外 PDA 执行排车和出库,不是平台排车配置或客户派送查询 | 海外 PDA `apps/pda-overseas-uniapp/src/pages/dispatch/dispatch.vue` 、`src/api/fulfillment.js` ; Backend `baiyue-firstleg/lastleg-service/dispatch/pda/` ;统一经 `gateway-overseas /` |
| PDA 出库、PDA 发车、扫码出库、整托出库 | 海外 PDA 执行排车和出库,不是平台排车配置或客户派送查询 | 海外 PDA `apps/pda-overseas-uniapp/src/pages/dispatch/dispatch.vue` 、`src/api/fulfillment.js` ; Backend `baiyue-firstleg/lastleg-service/dispatch/pda/` ;统一经 `gateway/` |
| 异常、退回、退仓、回访 | 派送异常退回与库存退货业务不可混用 | 派送查 `apps/admin-web/src/modules/overseas-warehouse/pages/ExceptionOrdersView.vue` ;退货预报/库存查 Lastleg `returnreceipt/` |
## 定位步骤与反馈
@@ -63,7 +71,7 @@
| 业务 | 范围依据 | 首个代码入口 |
|---|---|---|
| 登录认证 | `docs/订单与客户/README.md` | Admin `modules/auth/` 、`core/auth/` ; Client `modules/auth/` ; Backend `auth/` 、`iam/` 。海外 Token 不携带角色或权限集, Admin/Client/海外 PDA 从 Auth 登录与 刷新响应的顶层授权快照读取,海外 Gateway 再按 IAM 安全投影校验 |
| 登录认证 | `docs/订单与客户/README.md` | Admin `modules/auth/` 、`core/auth/` ; Client `modules/auth/` ; Backend `auth/` 、`iam/` 。统一 Token 不携带角色或权限集;各端读取 Auth 登录/ 刷新响应的顶层授权快照用于展示, Gateway 与业务服务通过统一会话及 Auth 权威校验执行授权,不再依赖 Lastleg 安全投影 |
| 客户与企业 | `docs/订单与客户/README.md` 、`docs/订单与客户/订单与客户头程订单闭环设计.md` | Admin `modules/customers/` ; Client `modules/tenant-management/` 、`modules/account/` ; Backend `iam/` 、`auth/` 、`file/` 。公司联系电话/邮箱是企业资料,不作为成员登录标识且不要求跨企业唯一;成员登录手机号归账号链路,修改时同步 Auth 并撤销该账号会话。审核必填资质仅营业执照与统一社会信用代码;法人身份证选填,可在已有营业执照后单独补传或替换,营业执照仍须与统一社会信用代码整包提交;默认尺寸配置由 IAM 持久任务异步调用 `firstleg/` ,未就绪不得审核通过 |
| 供应商与国内整柜 | `docs/国内货柜履约/国内货柜履约需求确认表.md` | Admin `modules/suppliers/` 、`modules/domestic-containers/` ; Backend `warehouse/` ; OpenAPI `supplier-v1.yaml` 、`domestic-container-v1.yaml` |
| 平台收货仓 | `docs/订单与客户/订单与客户头程订单闭环设计.md` | Admin `modules/warehouses/` ; Client `modules/first-leg/` ; Backend `warehouse/` |
@@ -75,13 +83,13 @@
| 平台/企业 RBAC | 订单与客户契约;公共语义见 `docs/平台客户层级与权限契约.md` | Admin `modules/iam/` 、`core/access/` ; Client `modules/tenant-management/` ; Backend `iam/` 、`auth/` |
| 消息中心与站内通知 | 触发业务的阶段/专题契约,收件箱以 IAM OpenAPI 为准 | Admin/Client `modules/notifications/` ; Backend `iam/.../notification/` ;生产者留在所属服务 |
| PDA 拣货与柜级装柜证据 | 国内 PDA README、拣货原型、国内货柜履约需求确认 | PDA `pages/picking/` 、`stores/picking.js` 、`api/pda-loading.js` ;证据以 `taskId + warehouseId` 进入任务专用 API,业务所有权固定真实 `containerBookingId` ,不得按入仓单或客户拆分;上传以幂等键绑定包含文件内容的请求哈希,完全重放直接返回已有结果且不得重复上传 File;Backend `firstleg/` 、`warehouse/` 、`file/` |
| 到仓测量、测量库位、箱规策略与头程计费 | `docs/入库测量与计费/README.md` 、测量计费入库主流程 | Admin 测量 `modules/inbounds/measurement/InboundMeasurementDialog.vue` 、`InboundMeasurementPanel.vue` ,称重 `modules/inbounds/weight/components/WeightOcrPanel.vue` ,以及 `warehouse-resources/` 、 `fba-pricing/` 、 `dimension-config/` 、 `fee-items/` ; Backend `firstleg/` 的 `InboundMeasurementService` 、`MeasurementLocationOccupationService` 、`MeasurementSubmissionService` 、 `CustomerDimensionConfigService` 、 `CustomerDimensionWeightingService` 、 ` FbaPricingService`,并联查 `warehouse/` 、 `file/` 、 `integration-service/` 。整票库位按确认图片数与有效体积容量需求的较大值尽力预留,扩容只追加且删除图片保留空槽;库位指引失败不阻断称重确认或测量提交。客户固定四档箱规可选择 `ADD/MULTIPLY` ,计价和费用确认以服务端及当前实际测量明细为准 |
| 到仓测量、测量库位、箱规策略与头程计费 | `docs/入库测量与计费/README.md` ;规则查 `baiyue-firstleg/firstleg/AGENTS.md` 对应入口 | Admin `modules/inbounds/measurement/InboundMeasurementDialog.vue` 、`InboundMeasurementPanel.vue` ,称重 `modules/inbounds/weight/components/WeightOcrPanel.vue` ; Backend `firstleg/` 的 `InboundMeasurementService` 、`MeasurementLocationOccupationService` 、`FbaPricingService` 。库位归 `warehouse/` ,图片归 `file/` , OCR 归 `integration-service/` ;只按实际调用增加服务指引 |
| 客户专属报价、柜级阶梯运费与费用调整 | 当前 Firstleg 计价契约、`docs/入库测量与计费/README.md` | Admin `modules/fba-pricing/carrier-rates/` 、`modules/inbounds/fee/` 、`modules/unified-orders/components/InboundFeeDetailManager.vue` ; Backend `firstleg/` 的 `PlatformPriceBookService` 、`ActivePriceBookEstimator` 、`FbaPricingService` 、`ContainerTierAmountAllocator` 、`InboundFeeDetailService` 与 `fba-pricing-v1.yaml` 。公共报价使用 `customerId=0` ,客户专属报价按客户独立版本化并优先于公共 ACTIVE 版本;柜级区域重量阶梯只聚合同柜同客户中费用快照同为 `REGION_WEIGHT_TIER` 的成员并守恒分摊,混柜的固定仓价等其他模型不参与阶梯且保持原费用,装柜成员变化只重算未锁定的区域阶梯费用。人工调整计费量限系统基准上下 10% 且必须带版本、原因和二次确认;`PRIVATE_LAST_MILE_DELIVERY` 只允许私人目的仓;一件代发在预装确认前完成计价,`WAIT_PALLETIZE` 试算不得回退托盘化状态 |
| 箱唛、箱码与单箱测量 | `docs/入库测量与计费/入库测量与计费需求优化版-v2-测量计费入库主流程.md` 、`docs/墨家设备测量上传接口说明-V3.md` | Admin `modules/inbounds/measurement/` ; Client `modules/first-leg/` ; Backend 按 `firstleg/AGENTS.md` 的箱唛与测量入口 |
| 称重确认、整票库位块与部分拣货资源结算 | 入库测量与计费主流程、国内货柜履约 PDA 契约 | Admin `modules/inbounds/weight/components/WeightOcrPanel.vue` ; Backend `f irstleg/` 的 `MeasurementLocationOccupationService` 、`InboundMeasurementService` 、`MeasurementSubmissionService` 与 `w arehouse/` 的 `LocationBlockService` 。测量提交审核前至少上传并确认一张称重图片,单箱也不得免称重;称重确认尽力建立整票块,提交时再次补齐,库位指引失败不阻断称重确认或测量提交。容量按确认图片数与有效体积折算的较大值,最新测量批次内实测/冻结申报体积取有效较大值;删除图片只清空绑定不释放槽位。部分拣货有余量时整段转移给子单,整票拣完才一次性释放全部普通位与共享 A0,资源身份以 `reservationId` 为准 |
| 称重确认、整票库位块与部分拣货资源结算 | `baiyue-firstleg/firstleg/AGENTS.md` 的称重入口、 `baiyue-firstleg/warehouse/AGENTS.md` 的 A0/资源结算规则 | Admin `modules/inbounds/weight/components/WeightOcrPanel.vue` ; Backend F irstleg `MeasurementLocationOccupationService` 、`InboundMeasurementService` 、`MeasurementSubmissionService` → W arehouse `LocationBlockService` 。国内整票资源结算按 `reservationId` 定位;称重、槽位容量和部分拣货的详细门禁留在所属服务指引 |
| 入库扣货、解除与凭证 | 入库测量与计费、国内货柜履约契约 | Admin `modules/unified-orders/pages/UnifiedOrdersView.vue` 、`modules/inbounds/core/api.ts` ; Backend `firstleg/` 的 `InboundHoldService` 、`InboundHoldGuard` 、`InboundHoldEvidenceService` ,文件归 `file/` 的 `INBOUND_HOLD_EVIDENCE` 。扣货状态必须阻断后续物理履约写入;已发生拣货、装柜或出仓时禁止手工扣货/解除,命令携带版本与幂等键,只有进入不可变历史的凭证可下载 |
| 财务管理与柜级公共费用分摊 | `docs/财务管理/` 产品确认、五页验收契约、Firstleg-Finance 跨服务契约 | Admin `modules/finance/` 、`modules/loading-lists/components/ContainerFeesPanel.vue` ; Client `modules/finance/views/FinanceBillsView.vue` ,账单行按 `inboundCode` 复用头程入仓关系详情;Backend `finance/` 、`firstleg/` ,契约 `container-fees-v1.yaml` ;导出与凭证归 `file/` 。跨客户公共柜费按柜内真实客户与订单归属原子建组,金额合计等于柜费总额,审核、驳回、调整和作废整组处理,单行入口不得破坏组一致性 |
| 客户资金账户、充值、授信与业务扣费 | `docs/财务管理/README.md` 、跨区域 认证与服务通信契约 | Admin `modules/finance/pages/FinanceCustomerAccountsView.vue` ; Client `modules/finance/views/FinanceAccountView.vue` ; Backend `finance/` 的 `FinanceWalletService` 与三类 Wallet Controller。充值申请经 File 保存凭证,平台审核或手工充扣;余额、授信、冻结、结算和释放以 Finance 主账为准。海外业务经 `WALLET_COMMAND_REQUESTED/COMPLETED` Outbox/Event Bridge 往返,不跨区同步调用钱包 |
| 客户资金账户、充值、授信与业务扣费 | `docs/财务管理/README.md` 、统一 认证与服务通信契约 | Admin `modules/finance/pages/FinanceCustomerAccountsView.vue` ; Client `modules/finance/views/FinanceAccountView.vue` ; Backend `finance/` 的 `FinanceWalletService` 与三类 Wallet Controller。充值申请经 File 保存凭证,平台审核或手工充扣;余额、授信、冻结、结算和释放以 Finance 主账为准。海外业务经 `WALLET_COMMAND_REQUESTED/COMPLETED` Outbox 直接投递 往返,不跨区同步调用钱包 |
| 订单编排、分柜、同柜不可拆组与柜次 | `docs/国内货柜履约/README.md` 、`docs/国内货柜履约/国内货柜履约需求确认表.md` 、`docs/统一订单主状态与操作契约.md` | Admin `modules/unified-orders/api/coLoadGroups.ts` 、`modules/unified-orders/` 、`container-loading/` ; Client `modules/first-leg/` ; Backend `firstleg/loading/coload/` 、`firstleg/split/` 、`firstleg/loading/` 、`order/` ;同柜组按订单创建,由服务端冻结每票全部可用入仓片段,仅要求同国内仓、同渠道,允许跨客户及不同目的仓港 |
| 全局智能排柜、预装与真实集装箱号后补 | 同上 | Admin `modules/container-loading/components/SmartLoadingDialog.vue` 内嵌 `pages/GlobalSmartLoadingView.vue` ,柜次页 `SmartLoadingWorkbenchView.vue` ,预装详情 `loading-lists/pages/PreloadPlanDetailView.vue` ; PDA `pages/picking/` ; Backend `firstleg/` 的 `PlatformSmartLoadingController` 、`SmartLoadingService` 、`PendingReviewOrderClient` 、`loading/` ,待审核事实来自 Order `PendingReviewOrderQueryService` 。全局候选覆盖 `PENDING_REVIEW/WAIT_MEASURE/WAIT_SPLIT/LOADING` ,状态只用于筛选展示,能否加入以服务端 `canAssign` 为准;待审核/待测量可提前占位,但确认预装或启动 PDA 前必须进入 `WAIT_SPLIT` 。暂估明细的 `totalPackageCount/remainingPackageCount` 在测量前取 Order 原始申报箱数,测量完成后取最新已审核测量箱数,读取补充失败只回退当前已分配数,写入调整仍重新校验权威数量。同柜不可拆组仅在全员命中状态集合时作为一个分页与分配单元;人工加入允许跨渠道,智能推荐仍按柜次渠道。计划可一次性移除全部未拣明细,但任一成员已拣的同柜组必须整组保留。创建柜次时原子生成唯一预装计划,加入入仓码即建立关联;真实集装箱号不阻塞订舱关联,但确认预装和创建 PDA 任务前必须补齐。历史缺号任务允许在预装详情首次补录,保存后恢复 PDA 可进入状态 |
| 客户入库结果与头程费用确认 | 入库测量与计费主流程、当前 Firstleg 契约 | Client `modules/first-leg/components/InboundBillingPanel.vue` 、`api/inboundBilling.ts` ; Backend `firstleg/` 的 `MerchantInboundBillingController` 、`MerchantInboundBillingService` 、`FbaPricingService` 与 `firstleg-v1.yaml` 。客户仅能确认本客户 `SENT` 的最新费用版本,提交 `expectedFeeVersion` 与幂等键;确认记录当前成员和时间并永久锁定该版本,平台不得再修改 |
@@ -92,13 +100,13 @@
| 客户统计与平台日志 | 当前统计/审计契约 | Admin `modules/customers/` 、`modules/audit/` ; Backend `firstleg/customerstatistics/` 、`audit-service/` |
| 客户工作台账户与设置 | 订单与客户契约 | Client `modules/account/` 、`system/` 、`tenant-management/` ; Backend `iam/` 、`auth/` |
| 企业订单与跨境业务 | 订单与客户、国内货柜履约契约 | Client `modules/order-management/` 、`cross-border/` ; Backend `order/` 、`firstleg/` 、`integration-service/` |
| 海外接柜、入库与库内库存 | `docs/海外仓业务/README.md` | Admin 按 `apps/admin-web/AGENTS.md` 海外模块入口;海外入口 `gateway-overseas /` ;尾程/入仓/换标/库存 `lastleg-service/` ;仓库主档归国内 `warehouse/` ,库位/托盘/锁归 `warehouse-overseas-service/` 并只引用国内 warehouseId;与排车、出库、派送共同组成海外仓全流程 |
| 海外接柜、入库与库内库存 | `docs/海外仓业务/README.md` | Admin 按 `apps/admin-web/AGENTS.md` 海外模块入口;海外入口 `gateway/` ;尾程/入仓/换标/库存 `lastleg-service/` ;仓库主档归国内 `warehouse/` ,库位/托盘/锁归 `warehouse-overseas-service/` 并只引用国内 warehouseId;与排车、出库、派送共同组成海外仓全流程 |
| 尾程订单控制与柜级入仓计划转换 | `docs/海外仓业务/README.md` | Admin `modules/overseas-warehouse/pages/LastMileOrdersView.vue` 、`LastMileOrderDetailView.vue` 、`api/lastMileOrders.ts` ; Backend `lastleg-service/` 的 `LastlegOrderController` 、`LastlegOrderCommandService` 、`InboundPlanService` 、`ContainerInboundPlanConversionCoordinator` ,资源归 `warehouse-overseas-service/` 的 `WarehousePalletBatchService` 。`orders/container-summaries` 按 `sourceContainerBookingId` 跨客户聚合并分页返回全部稳定来源柜,已完成计划转换的柜仍保留用于接柜仓查询与修改;生成动作只消费 `allPlansReady/pendingPlanCount/resourcePendingPlanCount` ,详情不受列表分页截断。确认前从 `/inbound-plans/container-preview` 读取服务端分组、托数、阻断项与 `snapshotVersion/snapshotHash` ; `convert-container` 锁柜重算后先批量预留真实托盘,再本地原子生成剩余独立计划并确认资源,失败仅补偿未确认资源,同柜重放不得产生第二批资源。单票手工计划保存后,全柜计划齐全且预览就绪时自动生成并绑定托盘资源,一票柜立即触发;`resourcePendingPlanCount` 表示自动生成异常后的重试入口,资源未齐不得进入 PDA 接柜。自动入口见 Lastleg `ContainerInboundPlanConversionCoordinator.convertManualAndAutoMaterialize` 。单票可维护完整入库计划、暂扣/解除及八行人工节点快照;命令提交订单版本与幂等键,新增暂扣只允许完成入库后执行并仅阻断该票后续排车/出库,不阻断入库计划或入库作业;人工节点首次保存后固定 `MANUAL` 来源且不得回退柜级节点 |
| 海外仓 PDA | `docs/海外仓业务/README.md` | Overseas PDA 入仓 `api/inbound.js` 、 `api/receiving-adapter.js` 、 `pages/operation/` ,库内/换标按工作台入口, 排车与出库 `pages/dispatch/` 、`pages/outbound/` ; Backend `lastleg-service/inboundplan/pda/` 、`pda/` 、 ` dispatch/pda/` 、`delivery/` ;统一经 `gateway-overseas/` 。接柜候选、会话、照片和整柜完成按 `sourceContainerBookingId + containerNo` 聚合且不绑定客户,允许同柜多客户;各入仓码的计划、任务、SKU、托盘与库存仍按自身客户隔离。多计划同柜按服务端返回的 `assigned/mergeAllowed/urgent` 展示,合托只是现场可选提示;扫码实收确认计划生成时预留的真实托盘与库位,不重新分配资源;派送与回访由 Admin/Client 承载 |
| 海外采购、本土卡车与散板 | `docs/海外仓业务/README.md` | Admin `modules/overseas-business/` ; Client `modules/cross-border/` ; Backend `lastleg-service/` 的 `procurement/` 、`trucking/` 、`looseboard/` ;统一经 `gateway-overseas /` |
| 海外仓 PDA | `apps/pda-overseas-uniapp/AGENTS.md` ;执行规则查 `baiyue-firstleg/lastleg-service/AGENTS.md` ,跨模块流程才查海外仓 README | 入仓 `src/pages/operation/` 、 `src/api/inbound.js` ; 排车与出库 `src/ pages/dispatch/` 、`src/ pages/outbound/` 、 `src/api/fulfillment.js` 。 Backend `lastleg-service/inboundplan/pda/` 、`dispatch/pda/` 、`delivery/` ;统一经 `gateway/` 。柜级收货与单票客户隔离按 Lastleg“PDA 入仓”规则核对 |
| 海外采购、本土卡车与散板 | `docs/海外仓业务/README.md` | Admin `modules/overseas-business/` ; Client `modules/cross-border/` ; Backend `lastleg-service/` 的 `procurement/` 、`trucking/` 、`looseboard/` ;统一经 `gateway/` |
| 海外仓库与通用资料 | `docs/海外仓业务/README.md` | 全部仓库主档进入 Admin `modules/warehouses/` 与国内 `warehouse/` ;海外库位/托盘/锁进入 `warehouse-overseas-service/` 并引用国内 warehouseId;报价、汇率、车辆按海外服务实际契约 |
| 国内出仓后船节点 | `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-overseas /` 。异常单按 `PENDING → PROCESSING → COMPLETED` 流转,处理完成必须引用归属为 `OVERSEAS_EXCEPTION_EVIDENCE` 的证据;派送退回只从原出库拣货事实选择可退明细,退回海外仓时先把实收恢复到指定真实托盘/库位,再原子完成异常单并将派送置为 `RETURNED` |
| 海外业务费用来源与客户财务 | 当前实现查财务契约与跨区域 通信契约;阶段 0A—0E 开发再读 `docs/财务管理/海外仓费用统一接入阶段0技术契约.md` | 当前 V1 由 `lastleg-service/financefee/` 校验海外入仓、采购、美国卡车、本土散板和海外仓服务费,通过完整快照、Event Bridge 和 Finance 内部入口入池;阶段 0 目标改为收费身份/候选版本、Finance 接受或拒绝结果事件及版本化资金计划。必须沿代码确认落地范围,不把技术契约当成已实现状态;Client 仍只读取获准客户财务 |
| 海外出库、排车、派送、异常与回访 | 当前海外履约契约 | 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 仍只读取获准客户财务 |
散货托盘码生成、打印与跨区传递:Admin `modules/loading-lists/components/PalletLabelPrintDialog.vue` ; Firstleg `LoadingPalletLabelService` 、`LoadingCompletedOutboxService` ; Lastleg `LastlegSourcePalletMapper` 、`InboundPlanService` 。从各项目最近指引继续定位;散货 FBA 标签与一件代发实装托盘分别取各自冻结事实。