32 KiB
业务快速索引
本文件按需检索,不作为启动必读文档。以下路径均按工作区根目录或表内注明的应用源码根目录起算,不相对于 docs/。
常用说法与歧义分流
仓储转运审核、转运驳回: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 + 柜号 + 收货”。下面是检索提示,不替代业务契约;代码路径均从工作区根起算。用短词检索,不拿整句自然语言做精确匹配。
高频任务最小读取集
- 订单审核:根
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 排车配置,除非问题涉及平台转派送资格。 - 客户账单:根
AGENTS.md→ Clientapps/client-web/AGENTS.md→src/modules/finance/→baiyue-firstleg/finance/AGENTS.md;平台账单才切换 Admin Finance。不要因“账单”自动加载柜费分摊或海外费用契约。 - 退货、异常、拖车:先用终端、阶段和动作分流;无法确定时只读取本节对应行,不全文加载海外仓 README 或 Lastleg 全部业务索引。
每个入口同时标出排除范围,避免把相邻生命周期当作同一业务。普通任务默认最多读取根指引、一个终端/模块指引和目标代码命中段;跨服务时再增加直接消费者或提供者。
| 常用说法 | 区分依据 | 首个定位范围 |
|---|---|---|
| 没有报价、价格未命中、人工定价、手工报价 | FBA 单票费用的显式人工报价,不是价格簿上传或静默回退 | Admin apps/admin-web/src/modules/inbounds/fee/api.ts 的 createManualInboundQuote;Backend baiyue-firstleg/firstleg/src/main/java/com/baiyue/firstleg/service/FbaPricingService.java 的 manualQuote,联查 PlatformFbaPricingController、fba-pricing-v1.yaml;Client 快照类型 apps/client-web/src/modules/first-leg/types/inboundBilling.ts |
| 退货换标候选、退货单创建换标 | 客户退货库存进入换标申请,区别于平台审核与 PDA 签收 | baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/returnreceipt/controller/MerchantReturnOrderController.java 的 GET /{returnNo}/relabel-candidates、POST /{returnNo}/relabel → ReturnReceiptService.relabelCandidates/createRelabel;公共前缀 /api/merchant/v1/last-leg/return-orders,客户范围取认证身份 |
| 退货审核、退货驳回、换标审核 | 先区分退货预报准入与换标申请审核,均不是仓储转运审核 | 退货预报 apps/admin-web/src/modules/overseas-warehouse/pages/LastMileOrdersView.vue;换标申请 apps/admin-web/src/modules/overseas-warehouse/pages/RelabelOrdersView.vue;条件与 API 见该模块 AGENTS.md |
| PDA版本、安装包下载、热更新、发布版本、停发 | 平台管理版本与设备检查更新分开定位,先区分国内/海外 PDA | 管理页 apps/admin-web/src/modules/pda-releases/pages/PdaReleasesView.vue;设备更新为国内 apps/pda-uniapp/utils/app-update.js、海外 apps/pda-overseas-uniapp/src/utils/app-update.js;后端查 baiyue-firstleg/file/AGENTS.md |
| 收货、入库、测量、称重 | 国内到仓称重或测量弹框 | apps/admin-web/src/modules/inbounds/;业务路由查“到仓测量” |
| 仓储转运测量、转运打托、转运托盘标签 | 海外 PDA 逐托实测、生成新托盘号与扫码绑定,不是 Admin 转运审核或排车转派送 | apps/pda-overseas-uniapp/src/pages/warehouse-transfer/warehouse-transfer.vue → apps/pda-overseas-uniapp/src/api/warehouse-transfers.js;约束与回归见该应用 AGENTS.md |
| 接柜、卸柜、收货、签收 | 海外 PDA 柜号认领、照片、实收 | apps/pda-overseas-uniapp/src/pages/operation/operation.vue;后端查 ReceivingContainerService |
| 入仓计划、生成计划、按柜生成 | 平台尾程订单预览与确认,不是现场实收 | apps/admin-web/src/modules/overseas-warehouse/pages/LastMileOrdersView.vue;后端查 ContainerInboundPlanConversionCoordinator |
| 审核、审单、批量审核 | 客户头程订单待审核 | apps/admin-web/src/modules/unified-orders/;后端查 BatchOrderReviewPreviewService |
| 订单审核、头程订单审核、批量审单 | 平台审核客户头程订单,状态以 Order SUBMITTED 和服务端 canApprove/blockReason 为准;不要按仓储转运审核定位 |
Admin apps/admin-web/src/modules/unified-orders/;Client 只读订单状态查 apps/client-web/src/modules/first-leg/;Backend baiyue-firstleg/order/ 的 BatchOrderReviewPreviewService、PlatformFirstLegOrderController |
| 审核、测量审核、实测审核 | 仓库测量结果审核 | baiyue-firstleg/firstleg/AGENTS.md 中“审核与初始计价”;页面先查 Admin 入库模块 |
| 费用、运费、报价、计费、船期价格表、价格簿 | 单票入仓计价、客户专属报价或调价 | apps/admin-web/src/modules/inbounds/fee/、apps/admin-web/src/modules/fba-pricing/carrier-rates/pages/CarrierRatesView.vue(列表/上传)、apps/admin-web/src/modules/fba-pricing/carrier-rates/pages/CarrierRateDetailView.vue(版本详情/映射确认);后端查 FbaPricingService |
| 柜费、公共费用、分摊 | 国内柜费来源归 Firstleg;海外柜费来源归 Lastleg;账单与结算结果归 Finance | 业务路由查“财务管理与柜级公共费用分摊”或“海外业务费用来源与客户财务”,按实际请求区分 |
| 充值、余额、授信、账单、核销 | 客户自助与平台管理先按终端区分 | Client apps/client-web/src/modules/finance/;Admin apps/admin-web/src/modules/finance/ |
| 客户账单、客户对账单、账单确认 | 客户查看和确认本企业账单,不是平台柜费分摊或充值审核 | Client apps/client-web/src/modules/finance/views/FinanceBillsView.vue;Admin 平台账单查 apps/admin-web/src/modules/finance/;Backend baiyue-firstleg/finance/ 的 Client Finance Controller |
| 自动生成托盘、托盘码没生成、计划齐全、重试生成托盘码 | 海外入库计划保存后资源生成,不是国内托盘标签打印 | Admin apps/admin-web/src/modules/overseas-warehouse/pages/LastMileOrdersView.vue;Backend baiyue-firstleg/lastleg-service/docs/business-index.md 的“人工计划自动生成托盘与资源重试”,执行规则先读该服务 AGENTS.md |
| 托盘码、托盘标签、补打 | 先区分散货装柜、一件代发和海外实体托盘 | 散货 apps/admin-web/src/modules/loading-lists/components/PalletLabelPrintDialog.vue;一件代发 apps/admin-web/src/modules/inbounds/core/DropshipPalletPrintPanel.vue,从订单“托盘打印”页签进入;海外单张打印 apps/admin-web/src/modules/overseas-warehouse/pages/PalletsView.vue,详见各应用/模块指引 |
| 箱码、箱唛、箱标、单箱扫码 | 单箱身份与测量,不是托盘或库位 | 业务路由查“箱唛、箱码与单箱测量”;后端查 InboundCartonLabelService |
| 库位、托盘、占位、释放 | 国内称重整票块归 Warehouse;海外实物托盘资源归 Warehouse Overseas;业务任务归 Lastleg | 业务路由查“称重确认”或“海外仓库与通用资料”;用国内/海外和业务阶段继续限定 |
| 拖车、派车、提柜、还柜 | 国内订舱拖车与目的港码头车队是不同业务;海外配送排车另属 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/ |
| 异常、退回、退仓、回访 | 派送异常退回与库存退货业务不可混用 | 派送查 apps/admin-web/src/modules/overseas-warehouse/pages/ExceptionOrdersView.vue;退货预报/库存查 Lastleg returnreceipt/ |
定位步骤与反馈
- 已知文件、组件或请求路径:读取适用指引后直接进入该文件或限定服务搜索路由,无需经过词表。
- 页面问题:终端指引 → 命中页面 → 实际 import/API → 对应 Controller/Service。纯展示问题定位到相关组件即可;遇到后端业务判断再追踪调用链。
- 状态或权限问题:已知请求时先定位 Controller 的权限与 Service 的状态门禁,再核对前端消费;尚不知请求时从触发动作找到 API。不要先扫所有权限初始化 SQL。
- 无精确命中:从用户原话提取短词查本表;仍有歧义时利用页面标题、业务编号类型和国内/海外范围缩小。每次只扩展相邻业务范围。
- 实际任务若发生入口误导、路径失效或重复扩大搜索,在当次交付中简记“原说法 → 最终入口 → 绕路原因”,并修正命中的索引行;进度与临时结果不写回本文件。
- 评价检索质量看首次入口是否正确、扩大范围次数、找到目标前额外读取的无关文件数;文件存在或离线合同通过只能证明部分有效性,不能代替真实任务耗时。普通任务不额外建立计时脚本或登记台账。
业务快速路由表
退货预报、签收、库存与合箱:Client modules/overseas-warehouse/views/ReturnOrdersView.vue、ReturnInventoryView.vue;Admin modules/overseas-warehouse/pages/ReturnInventoryManagementView.vue;海外 PDA src/pages/return-receipt/return-receipt.vue、src/pages/return-packing/return-packing.vue,API 与检查入口见 apps/pda-overseas-uniapp/AGENTS.md;Backend lastleg-service/returnreceipt/,执行规则先读 baiyue-firstleg/lastleg-service/AGENTS.md,详细接口与状态按需查 baiyue-firstleg/lastleg-service/docs/business-index.md 的退货入口,OpenAPI 为 overseas-business-v1.yaml。客户预报 → 平台审核 → PDA 签收 → 退货箱/SKU 库存 → 同客户合箱 → delivery/ 退货出库;两个 PDA 页面均在 src/pages.json 注册,由 src/data/overseas-workbench.js 提供入口,真机验收另取证。派送异常退回仍归 exceptionorder/。
本表只路由到范围依据和首个代码入口;Admin/Client 路径从对应应用的 src/ 起算,国内 PDA 路径从 apps/pda-uniapp/ 起算,海外 PDA 路径从 apps/pda-overseas-uniapp/src/ 起算,Backend 路径从 baiyue-firstleg/ 起算。进入目标后继续读最近的 AGENTS.md,不要把根表当作模块细节清单。
| 业务 | 范围依据 | 首个代码入口 |
|---|---|---|
| 登录认证 | docs/订单与客户/README.md |
Admin modules/auth/、core/auth/;Client modules/auth/;Backend auth/、iam/。海外 Token 不携带角色或权限集,Admin/Client/海外 PDA 从 Auth 登录与刷新响应的顶层授权快照读取,海外 Gateway 再按 IAM 安全投影校验 |
| 客户与企业 | 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/ |
| 头程订单、批量审核预览与入仓码关系 | docs/订单与客户/README.md、头程订单闭环设计 |
Admin modules/first-leg-orders/、modules/unified-orders/;Client modules/first-leg/api/inboundCodeAssociations.ts、modules/first-leg/;Backend order/ 的 InboundCodeAssociationService、UnifiedOrderQueryService、BatchOrderReviewPreviewService 与 firstleg/。Order 为 SUBMITTED 时,即使 Firstleg 已存在准备中入库投影,统一列表仍固定显示 PENDING_REVIEW 并提供审核动作;批量审核弹框只调用 /orders/first-leg/batch-review-preview 一次获取按请求顺序返回的快照,不逐票查询详情,主要展示入仓码而非内部订单 ID |
| 客户头程订单批量导入 | 当前 Order 契约 | Client modules/first-leg/views/FirstLegOrdersView.vue、api/firstLeg.ts;Backend order/ 的 MerchantBatchImportService、MerchantWarehouseCatalogClient、MerchantPricingCatalogClient 与 order-v1.yaml。中文 XLSX 模板按当前客户动态生成地址、全部有效仓库和渠道下拉;导入时重新校验动态选项与客户归属,最多 50 行,只创建草稿,支持部分成功或整批原子模式 |
| 平台旧系统订单导入 | 当前 Order 契约 | Admin modules/unified-orders/pages/UnifiedOrdersView.vue、api/unifiedOrders.ts;Backend order/ 的 PlatformLegacyOrderImportService 与 /api/platform/v1/orders/first-leg/legacy-import。固定归属启用客户“IT测试公司”,保留旧入仓码,按当前公共仓库和客户价格簿逐行校验,成功行进入待审核 |
| 平台修改客户原始申报与履约渠道 | 当前 Order/Firstleg 契约 | Admin modules/unified-orders/components/OrderDeclarationEditorDialog.vue、api/unifiedOrders.ts;Backend order/ 的 OrderDeclarationUpdateService 与 order-v1.yaml,通过 ORDER_DECLARATION_UPDATED_V1 同步 firstleg/ 的 OrderDeclarationSyncService。只修改申报快照,不覆盖仓库/PDA 实测、测量审核、箱码或已确认费用;渠道变化额外校验分柜、同柜、装柜可逆性与重新计价,国内收货仓或中转仓变化必须重新下单 |
| 脚本管理、全量验证与测试造数 | baiyue-firstleg/scripts/AGENTS.md、baiyue-firstleg/scripts/README.md |
Backend scripts/ 为仓库级入口,scripts/admin-test-env-modules/ 为 Admin HTTP 内部模块;服务局部脚本留在 <service>/scripts/,不得散落到 src/test/scripts/;真实 HTTP、部署或环境写入仍须当前轮明确授权 |
| 平台/企业 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,计价和费用确认以服务端及当前实际测量明细为准 |
| 客户专属报价、柜级阶梯运费与费用调整 | 当前 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 firstleg/ 的 MeasurementLocationOccupationService、InboundMeasurementService、MeasurementSubmissionService 与 warehouse/ 的 LocationBlockService。测量提交审核前至少上传并确认一张称重图片,单箱也不得免称重;称重确认尽力建立整票块,提交时再次补齐,库位指引失败不阻断称重确认或测量提交。容量按确认图片数与有效体积折算的较大值,最新测量批次内实测/冻结申报体积取有效较大值;删除图片只清空绑定不释放槽位。部分拣货有余量时整段转移给子单,整票拣完才一次性释放全部普通位与共享 A0,资源身份以 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、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 与幂等键;确认记录当前成员和时间并永久锁定该版本,平台不得再修改 |
| 订舱资料、放舱、出仓前船期与订舱级拖车 | 国内货柜履约 README、需求确认和实施边界 | Admin modules/ocean-bookings/、port-schedules/、trucking/;Backend firstleg/oceanbooking/、firstleg/portschedule/、TruckAppointmentService。拖车预约由 RELEASED 订舱拥有,不按客户、柜次、装柜计划或真实柜号归属;每个订舱最多一张非终态拖车单,创建候选由服务端排除缺提单/有效订舱文件或已有有效拖车单的订舱;PDA 装柜完成不推进拖车状态;全部要求货柜确认国内离仓后自动完成,人民币拖车费按实装体积分摊为柜次应付并经 Finance Outbox 入池 |
| 目的港码头拖车与还空预警 | docs/海外仓业务/README.md |
与订舱级拖车预约是不同生命周期。Admin 海外清关提柜列表/详情 modules/container-loading/pages/OverseasContainersView.vue、modules/container-loading/pages/OverseasContainerDetailView.vue;Firstleg 拖车 API api/terminalDrayages.ts,柜级到仓 API api/containerArrivalTimes.ts。原预约/实际提柜列改为预计/实际到仓:预计时间由平台在列表快捷选择并同步 Lastleg 整柜尾程订单,实际时间取海外 PDA 首次开始收货;车队、邮件、还柜与 unloadingCompletedAt + 72h 预警仍归 firstleg/terminaldrayage/。 |
| 整柜报关资料与完成文件 | 国内货柜履约契约 | 装柜完成后由 Admin modules/container-loading/components/ContainerCustomsPanel.vue 管理整柜报关,Client modules/first-leg/components/CustomsDocumentsDialog.vue、api/customs.ts 按订单处理本客户退税资料;Backend firstleg/customs/container/、customs-v1.yaml,文件归 file/。客户资料可覆盖同柜多个退税入仓码,开始报关后冻结;平台逐资料回传完成文件,全买单柜走平台确认与明细导出 |
| 国内出仓确认 | 国内货柜履约契约 | Admin modules/outbound-dispatch/;Backend firstleg/outbound/dispatch/ |
| 客户统计与平台日志 | 当前统计/审计契约 | 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 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/ |
| 海外仓库与通用资料 | 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/loading-lists/components/PalletLabelPrintDialog.vue;Firstleg LoadingPalletLabelService、LoadingCompletedOutboxService;Lastleg LastlegSourcePalletMapper、InboundPlanService。从各项目最近指引继续定位;散货 FBA 标签与一件代发实装托盘分别取各自冻结事实。