Test #1

Merged
admin merged 256 commits from test into main 2026-09-28 16:01:16 +08:00
2 changed files with 2 additions and 2 deletions
Showing only changes of commit ab2234c0e4 - Show all commits
+1 -1
View File
@@ -66,7 +66,7 @@
| 全局智能排柜、预装与真实集装箱号后补 | 同上 | 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`、API `api/terminalDrayages.ts`;Backend `firstleg/terminaldrayage/`、`terminal-drayage-v1.yaml`。该能力按真实货柜 `containerBookingId` 聚合,与订舱级拖车预约是不同生命周期;货柜实际到港后从 Warehouse `ACTIVE + TRUCKING` 供应商选择车队,依次预约提柜、记录实际提柜和实际还柜。提柜/还柜复用标准船节点 `PICKED_UP/EMPTY_RETURNED`,还空截止与超时按服务端 `unloadingCompletedAt + 72h` 计算,前端只消费 `allowedActions` 和预警结果。车队邮件由 Firstleg 持久化排队,首次选择后手动发送,换队原子生成旧车队取消与新车队提柜请求;邮箱取 Warehouse,邮件模板与配置见 `baiyue-firstleg/firstleg/docs/terminal-drayage-mail.md`。 |
| 目的港码头拖车与还空预警 | `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/` |
+1 -1
View File
@@ -86,7 +86,7 @@
- 头程散货在预装确认且真实集装箱号就绪后,按 `集装箱号-FBA仓编码-三位序号` 冻结托盘码;序号在当前柜、当前 FBA 仓内从 001 独立递增。送柜报关、清关提柜和预装清单共用同一按 FBA 仓分组的打印清单,可整柜打印或选择单仓前 N 张补打。该编号随装柜完成事件进入海外,生成入库计划与海外实体托盘时原样沿用;一件代发继续使用国内装箱打托形成的托盘号,不参与散货重新编号。
- 头程与海外仓允许装托密度不同。尾程最终托数取不低于头程已有托盘码数的海外计划结果:头程已有编码全部保留,数量不足时在同柜、同 FBA 内按连续下标补码,不因数量差异阻断。柜级预览必须分别返回并展示头程已有、海外仓补充和最终托数;最终总数不得标成“本次新增”。
- 尾程订单人工节点固定为国内报关完成、预计/实际开船、预计到港、国外清关完成、实际到港等待卸船、预约提柜和卸柜八行完整快照。第一次保存后该订单永久使用 `MANUAL` 来源,读取和页面展示不得再回退柜级节点,也不得反向修改货柜船节点。
- 目的港码头拖车归 Firstleg 货柜聚合:平台从 Warehouse `ACTIVE + TRUCKING` 供应商中选择车队,依次记录预约提柜、实际提柜和实际还柜;实际提柜/还柜同时复用标准船节点服务写入 `PICKED_UP`/`EMPTY_RETURNED`。海外卸柜完成后由服务端以 `unloadingCompletedAt + 72h` 计算还柜截止时间和超时天/小时,Admin 只展示服务端预警,不在浏览器重复计算。
- 目的港码头拖车仍归 Firstleg 货柜聚合,但 Admin 清关提柜列表不再使用预约/实际提柜作为到仓业务时间:原两列改为“预计到仓/实际到仓”。预计到仓在列表内人工选择并由 Lastleg 按 `sourceContainerBookingId` 原子同步整柜尾程订单,已有入库计划后锁定;实际到仓只取海外 PDA 首次开始收货的 `ll_receiving_container_session.receiving_at`。车队、邮件、还柜及 `unloadingCompletedAt + 72h` 还空预警仍按原码头拖车链路处理。
- 手动还柜以真实海外卸柜完成且尚未还柜为准,仍校验独立还柜权限;无需事先存在车队、预约或提柜时间。首次命令使用版本 0 创建拖车记录,车队字段可为空,不补造提柜事实。还柜时间不得早于卸柜完成时间或已有提柜时间,成功后同步标准还柜节点并解除报空预警。
- 船节点是头程海运在途事实与海外接柜之间的衔接能力,业务聚合继续由 Firstleg 按 `containerBookingId` 柜级持有,不绑定客户;跨区域事件使用 `tenantId=0` 平台技术范围,到港/可提柜结果通过明确契约提供给海外区域,不复制第二套轮询任务。
- Admin、Client 仍使用统一账号体系,并按根 `AGENTS.md` 的双区域 API、海外 Token 和跨区域事件约定接入;业务页面不自行实现第二套登录。