Files
docs/头程下单到尾程出库全流程操作手册.md
T
2026-09-24 13:43:53 +08:00

538 lines
33 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 头程下单到尾程出库全流程操作手册
> 适用范围:企业客户头程下单,国内收货、测量、分柜、装柜、报关与出仓,跨区生成尾程订单,海外接柜入仓、库存、排车及尾程出库。
> 流程终点:海外出库单变为 `OUTBOUNDED`;排车场景同时以排车单 `DEPARTED` 为离仓事实。
> 当前口径:以现行服务端模块指引、页面入口和代码状态机为准。历史设计与当前实现冲突的地方集中列在第 11 节,旧文档不能直接作为操作依据。
> 不在主链内展开:换标、仓储转运、货物废弃、退货换标、异常退回、客户回访、海外采购和本土散板;这些能力在第 9 节说明如何接入出库。
> 当前流程基线:见[《头程到尾程流程节点梳理(重构版)》](头程到尾程流程节点梳理.md)。[《头程下单到尾程出库现状流程全景清单》](头程下单到尾程出库现状流程全景清单.md)仅保留旧版 AS-IS 证据;本文侧重一票主链如何按最新报关/送港并行流程实际操作。
## 1. 一张图看完整主链
```text
企业资料审核通过、资金账户可用
↓
客户创建头程订单草稿 → 提交订单 → 生成全局唯一入仓码
↓
平台审核订单 → 创建国内正式入库单、冻结申报与箱码事实
↓
国内仓收货 → 测量/称重 → 测量审核 → 进入待分柜
├─ 普通散货/FBA:直接进入分柜
└─ 一件代发:先逐箱清点、组托、封托,再进入分柜
↓
创建模拟柜/订舱 → 智能或人工排柜 → 预装确认
↓
国内 PDA 拣货装柜 → 五类证据和铅封 → 装柜完成 LOADED
├─ 报关线:通知报关行 → 客户资料 → 报关行回执 → 客户确认/打回重做
│ → 所有客户通过 → 整柜正式申报 → 查验/放行
└─ 送港线:拖车 → 离仓 → 送港/进港 → 甩柜/改配(如发生)→ 实际开船
↓
实际开船后进入海运节点:装船/离港 → 在途 → 到目的港 → 卸船 → 可提柜
↓
装柜完成事件跨区 → 海外生成 PENDING_ASSIGNMENT 尾程订单
↓
平台按柜预览并转换入仓计划 → 生成/绑定海外托盘资源
↓
海外 PDA 锁柜 → 三类签收照片 → FBA 按箱数 / OVERSEAS 逐箱收货
↓
整柜核平完成 → INBOUND_COMPLETED → 海外库存、托盘、库位和流水落账
↓
平台智能预排/排车 → 维护车辆及预约 → 转派送,生成 WAIT_OUTBOUND 出库单
↓
海外 PDA 扫托盘拣货并核平 → 发车 → 出库单 OUTBOUNDED / 排车单 DEPARTED
```
主链有三个不能混淆的“出库/出仓”:
1. 国内装柜完成:入库单为 `LOADED`,表示货已经装入国内出口柜;同时启动报关线和送港线。
2. 国内送港:送港线记录拖车、仓库离开、进港和甩柜;客户报关确认不阻断送港,进港不等于报关完成。
3. 海运起点:承运船舶真实开航后才进入海运节点,预计 ETD 不推进海运中。
4. 海外尾程出库:海外仓库存经排车/PDA 作业离仓,出库单为 `OUTBOUNDED`。
### 1.1 操作与交接总表
下表把每一步的人工操作、系统自动动作和下一个责任人放在一起。操作员完成当前步骤后,应以“系统结果”作为交接依据,不能只凭口头通知或按钮点击成功提示判断流程已经流转。
| 步骤 | 操作人/终端 | 人工操作 | 系统自动动作与数据结果 | 下一责任人 |
|---:|---|---|---|---|
| 1 | 企业客户 / Client | 新建订单,选择仓库、渠道和目的仓,填写货物,保存草稿 | 保存 `DRAFT` 和客户申报快照;不生成入仓码 | 企业客户 |
| 2 | 企业客户 / Client | 检查后点击“提交订单” | 校验企业资格、资金、仓库和渠道;生成固定入仓码,进入 `PENDING_REVIEW` | 平台订单运营 |
| 3 | 平台运营 / Admin | 在待审核列表查看详情或批量预览,点击审核通过 | Order 进入 `APPROVED`;Firstleg 建正式入库单和稳定箱码,主状态进入 `WAIT_MEASURE` | 国内仓操作员 |
| 4 | 国内仓 / 设备、Admin | 按入仓码收货,上传尺寸和称重图片,校正 OCR,提交审核 | 保存测量批次、原始值、修正值、图片和库位块预留 | 测量审核员 |
| 5 | 审核员 / Admin | 审核测量结果;异常时退回修正 | 普通订单进入 `WAIT_SPLIT`;一件代发进入 `WAIT_PALLETIZE` | 国内履约运营或 PDA |
| 6 | 国内 PDA | 一件代发逐箱清点、归托、封托 | 冻结真实 DP 托盘及 SKU/箱唛组成,核平后进入 `WAIT_SPLIT` | 国内履约运营 |
| 7 | 财务/运营、客户 / Admin、Client | 平台试算和发送费用;客户核对并确认 | 独立生成、发布和确认费用版本;不阻断待分柜主流程 | 国内履约运营 |
| 8 | 国内履约运营 / Admin | 创建模拟柜,选择候选,人工/智能排柜 | 生成稳定柜次、预装计划、分配明细和容量占用 | 订舱/柜务运营 |
| 9 | 订舱/柜务运营 / Admin | 建订舱草稿、补资料、放舱,关联柜次并录入真实柜号 | 冻结订舱和运输快照,建立订舱需求与柜次分配关系 | 国内履约运营 |
| 10 | 国内履约运营 / Admin | 核对预装清单并确认 | 固化预装快照,生成或开放国内 PDA 任务 | 国内 PDA |
| 11 | 国内 PDA | 扫箱/整托拣货,批量提交,拍五类证据和锁码,完成装柜 | 计划 `COMPLETED`、入库单 `LOADED`,发布最终实装事件并启动报关/送港两条线 | 报关/送港运营 |
| 12 | 报关运营 / Admin、Client | `LOADED` 后收集客户资料、发报关行、上传回执、发客户确认;打回则重做,所有客户通过后提交整柜正式申报 | 每客户确认轮次可追溯;整柜正式申报后记录查验/放行,不把回执上传当成客户确认 | 报关运营/客户 |
| 13 | 送港运营 / Admin | 独立安排拖车、离仓、送港和进港;容量不足记录甩柜/改配 | 写入 `DEPARTED_WAREHOUSE`、`PORT_RECEIVED` 或 `ROLLED_OVER`,不等待报关客户确认 | 船务/海外运营 |
| 14 | 船务 / Admin、第三方 | 只在承运船舶真实开航后查看/补录船节点 | 写入 `VESSEL_DEPARTED` 并进入海运节点;到 `PICKUP_READY` 后开放海外 PDA 候选 | 海外计划运营、海外 PDA |
| 15 | 海外计划运营 / Admin | 在尾程订单按柜预览阻断项并确认转换入仓计划 | `PENDING_ASSIGNMENT → INBOUND_PLANNED`;逐票建计划并生成/绑定托盘资源 | 海外 PDA |
| 16 | 海外 PDA | 选柜锁定,拍车牌/封签/开柜照片,确认签收 | 建立柜级收货会话,冻结实际接柜仓和操作员 | 海外 PDA |
| 17 | 海外 PDA | FBA 按 SKU+箱数收货,OVERSEAS 按箱唛逐箱收货,完成整柜 | 尾程进入 `INBOUND_COMPLETED`;生成库存余额、仓位、托盘、流水并回写国内 | 海外排车运营 |
| 18 | 海外运营 / Admin | 智能预排,选择托盘和车型,生成排车,维护车辆/预约 | 锁定托盘并生成 `PENDING_DEPARTURE` 排车单 | 海外运营、海外 PDA |
| 19 | 海外运营 / Admin | 在发车前点击“转派送”,填写派送信息和费用 | 生成一张 `WAIT_OUTBOUND` 出库单,并按目的仓拆分 `WAIT_DELIVERY` 派送单 | 海外 PDA |
| 20 | 海外 PDA | 扫托盘拣货、核平、完成拣货;待 `canDepart=true` 后点击发车 | 扫码事务扣减库存;发车后排车 `DEPARTED`、出库单 `OUTBOUNDED` | 派送运营/客户 |
易用性和数据流转的改造目标、优先级与验收指标见[《头程下单到尾程出库流程易用性与数据流转优化方案》](头程下单到尾程出库流程易用性与数据流转优化方案.md)。
## 2. 角色、终端与职责
| 角色 | 使用终端 | 主要职责 |
|---|---|---|
| 企业订单操作员 | Client | 新建/导入头程订单、保存草稿、提交、查看入仓码、查看与确认已发送费用 |
| 平台订单运营 | Admin | 审核订单、修订允许修改的申报信息、查看统一订单主状态 |
| 国内仓操作员 | Admin/测量设备 | 收货、尺寸测量、称重图片、OCR 校正、测量提交 |
| 国内履约运营 | Admin | 计费、分柜、模拟柜、订舱、预装、报关、国内出仓 |
| 国内 PDA 操作员 | 国内 PDA | 普通箱码拣货或一件代发整托拣货、装柜取证、铅封和最终完成 |
| 海外履约运营 | Admin | 尾程订单、按柜转换入仓计划、预计到仓、排车、转派送、出库与派送单核对 |
| 海外仓 PDA 操作员 | 海外 PDA | 柜号签收、卸柜入仓、排车拣货、普通/一件代发出库、发车 |
| 企业客户 | Client | 查看本企业尾程/派送结果;不操作平台排车和 PDA 作业 |
海外 PDA 操作员必须是平台内部 `OVERSEAS_WAREHOUSE_PDA_OPERATOR`,并且只绑定一个启用收货能力的实际海外仓。客户账号、平台普通管理员或国内 PDA 角色不能替代该身份作业。
## 3. 开始前必须准备的基础资料
### 3.1 客户与下单资格
- 企业账号可登录,企业资料已由平台审核通过。
- 当前用户具备创建、提交头程订单的权限。
- 客户资金账户可用;草稿保存不校验资金,提交时实际余额小于 0 会被拒绝。
- 国内收货仓、目的仓、物流渠道及需要使用的往来单位处于有效状态。
### 3.2 国内履约资料
- 价格簿、客户尺寸/计费规则已发布;缺少价格不应伪造费用。
- 柜型、渠道、订舱代理、拖车供应商等主数据可用。
- 国内 PDA 人员、仓库和设备已配置。
### 3.3 海外履约资料
- 实际海外收货仓必须为平台公共仓、类型 `OVERSEAS`、状态 `ACTIVE` 且启用 `RECEIVING`。
- 仓内存在可用库位和实物托盘。
- 海外 PDA 人员绑定上述唯一实际收货仓。
- 排车所需车辆、司机、预约信息以及派送费用录入条件已准备。
实际海外收货仓、国内来源仓、FBA/私人目的仓是三个不同概念,不能互相代填。
## 4. 阶段一:客户头程下单与平台审核
### 4.1 客户新建订单
入口:Client → 头程订单。
操作:
1. 点击新建订单,选择运输方式、国内收货仓、渠道和目的类型。
2. 按目的类型选择 FBA 仓、海外仓或填写私人地址;公共目的仓必须从有效主数据选择。
3. 填写提货/送货信息、客户参考号、预计时间及备注。
4. 录入至少一条货物明细,包含箱数、件数、重量、体积、SKU、品名等当前页面要求的字段。
5. 一件代发必须提供可冻结的 SKU/箱内明细,不能在后续扫码阶段用货名猜测 SKU。
6. 点击“保存草稿”,检查订单后再点击“提交订单”。
批量下单可使用中文 XLSX 模板,最多 50 行。导入成功只生成草稿,不会自动提交;操作员仍需逐票检查并提交。
系统结果:
- 草稿为 `DRAFT`。
- 提交成功后 Order 状态为 `SUBMITTED`,统一主状态展示为 `PENDING_REVIEW/待审核`。
- 提交时生成并固定全局唯一 `inboundCode/入仓码`;草稿阶段没有入仓码。
- 提交时重新校验企业资格、资金账户、仓库/目的仓和渠道;不能只相信页面下拉快照。
### 4.2 平台审核订单
入口:Admin → 统一订单/头程订单 → 待审核。
操作:
1. 用订单号、入仓码、客户或状态定位订单。
2. 打开详情,核对客户申报、货物、渠道、国内收货仓和目的仓。
3. 批量审核时先打开批量审核预览,逐票查看 `canApprove` 和阻断原因。
4. 如需修订,只修改当前状态允许的平台申报字段;不得改客户、国内收货仓、订单号、入仓码,也不得增删或重排货物行。
5. 点击审核通过。
系统结果:
- Order 进入 `APPROVED`。
- Firstleg 幂等创建正式国内入库单,沿用提交时生成的入仓码。
- 生成或补齐稳定箱码/箱唛映射;后续测量、国内 PDA 和跨区事件都复用这些事实。
- 统一主状态进入 `WAIT_MEASURE/待测量数据`。
操作门禁:待审核订单即使已经出现 Firstleg 准备中投影,统一列表仍必须显示待审核,不能绕过审核直接进入物理履约。
## 5. 阶段二:国内收货、测量、计费与待分柜
### 5.1 国内仓收货和测量
入口:Admin → 入库管理/统一订单 → 测量;第三方测量设备按入仓码上传。
操作:
1. 仓库按入仓码定位入库单。
2. 第三方设备或人工逐箱记录长、宽、高和箱数;第三方只能使用业务入仓码/箱码,不能传内部数据库 ID。
3. 上传至少一张称重图片。
4. 系统执行 OCR;操作员核对原始值、单位和置信度,必要时填写原因后人工修正。
5. 确认全部有效称重图片,确保总重量大于 0。
6. 提交测量审核;审核不通过时修正后重新提交,不能带病进入后续实物作业。
系统结果:
- 测量子流程可经历 `WAIT_MEASURE → MEASURING → MEASURE_PENDING`;审核结果、计费结果分别保存,不能混成一个状态字段。
- 测量审核通过后,统一主状态进入 `WAIT_SPLIT/待分柜`。
- 首张称重图片确认时,系统会尽力预留整票库位块;库位指引失败记录警告,但不能伪造成功资源。
### 5.2 费用处理
平台操作:
1. 依据客户规则、渠道、目的仓和价格簿试算。
2. 检查计费重量/体积、单价、附加费及费用明细。
3. 必要时按权限调整计费量或费用明细,提交审核并发布。
4. 将当前费用版本发送给客户。
客户操作:Client 订单详情 → 费用信息 → 核对并确认当前已发送版本。
当前主链口径:测量审核通过后即可进入 `WAIT_SPLIT`;费用是版本化的独立事实,不再阻断或回退主流程。客户确认和装柜完成同时满足后,费用版本最终冻结。不要再按旧文档把“发送费用”理解成唯一入库成功按钮。
### 5.3 一件代发分支
一件代发在测量审核后先进入 `WAIT_PALLETIZE`:
1. 系统按预计托数预生成 `DP` 托盘码。
2. Admin 打印托盘信息单;PDA 不负责连接打印机。
3. 国内 PDA 逐箱扫描稳定箱码,清点箱内全部 SKU,并归入现场托盘。
4. 逐托封托;参与订单的开放托盘必须全部完成。
5. 全部箱数与实际参与托盘核平后进入 `WAIT_SPLIT`。
一件代发托盘在后续智能装柜中是不可拆整托单元;不能按成员箱部分装柜或跳拣。
## 6. 阶段三:分柜、订舱、国内 PDA 装柜与出仓
### 6.1 建柜与排柜
入口:Admin → 货柜管理 → 送柜报关/智能装柜。
推荐操作顺序:
1. 创建内部模拟柜,选择正式装柜仓、计划渠道组、柜型、容量和限重;系统生成稳定 `containerBookingId` 和 `cabinetNo`。
2. 在智能装柜工作台按客户、入仓码、状态、到货日期等筛选候选。
3. 人工加入或使用智能推荐,将入仓单/箱数分配到柜次。
4. 核对容量、重量、渠道、同柜组和剩余箱数;按钮资格以服务端 `canAssign` 为准。
5. 生成并维护订舱草稿,补齐提单号、船名、航次、ETD、ETA 等资料后放舱为 `RELEASED`。
6. 港口取得真实柜号后,将模拟柜与已放舱订舱需求关联并录入 `containerNo`。
7. 在预装详情核对全部明细并确认预装。
允许待审核、待测量数据提前进入模拟排柜作为占位,但确认预装和启动真实 PDA 作业前,成员必须达到可履约状态。为了避免现有页面与后端历史口径差异,实际操作应在预装确认前补齐真实柜号;无论如何,最终装柜完成前必须有真实柜号。
### 6.2 国内 PDA 拣货和装柜
入口:国内 PDA → 拣货/装柜任务。
普通散货:
1. 领取柜次任务。
2. 按稳定箱码逐箱扫描;一个有效箱码只代表一箱。
3. 批量提交本次扫描;断网时不能正式提交,恢复后刷新服务端状态再重试。
4. 未完成项可暂时挂起,但必须填写异常原因;未核平不能最终完成。
一件代发:扫描托盘码或托盘内任一箱码定位整托,以 `PICK_PALLET` 整托确认,不得拆托拣货。
装柜证据:
- 空仓、半仓、满仓、锁仓、带锁码照五类证据和锁码文本;
- 同类可追加,错误证据作废并保留审计,不硬删除历史。
最终完成门禁:全部计划明细核平、五类有效证据齐全、铅封号存在且真实柜号已就绪。完成后装柜计划为 `COMPLETED`,来源入库单为 `LOADED`。
### 6.3 报关线与送港线
入口:Admin → 货柜管理 → 柜次详情;客户确认入口为 Client → 头程订单 → 报关资料。
**报关线**按客户案例推进:
1. `LOADED` 后通知报关行,按客户/入仓码收集资料并发送;
2. 授权人员上传报关行本轮回执,客户查看并确认;
3. 客户打回时保存原因,重新上传/替换资料,重新发送报关行并生成新回执轮次;
4. 柜内所有客户均确认后,冻结整柜资料并提交报关行正式申报;
5. 记录查验、不查验放行、补件/退回等海关结果。
**送港线**独立推进:
1. 校验 `LOADED`、真实柜号、订舱和拖车条件,安排车辆离仓、送港和进港;
2. 写入唯一 `DEPARTED_WAREHOUSE` 和 `PORT_RECEIVED` 事实;
3. 船舱不足时写入 `ROLLED_OVER`,保存原船次、改配船次、滚动次数和客户通知;
4. 送港线不等待客户报关确认,报关线也不等待送港完成。
只有承运船舶真实开航才写入 `VESSEL_DEPARTED` 并进入海运节点。预计 ETD、已离仓或已进港不能显示为海运中。
## 7. 阶段四:海运节点、跨区尾程建单和海外入仓
### 7.1 船节点推进
船节点任务在承运船舶真实开航后幂等创建,不能由操作员另造一套。标准实际节点按以下顺序单调推进:
`DEPARTED_WAREHOUSE → AT_ORIGIN_PORT → LOADED_ON_VESSEL → DEPARTED_ORIGIN_PORT → IN_TRANSIT → ARRIVED_DESTINATION_PORT → DISCHARGED_FROM_VESSEL → PICKUP_READY → PICKED_UP → EMPTY_RETURNED`
规则:
- 预计时间只增加预计事实,不推进最新实际节点。
- 实际节点不能重复、回退或越权覆盖。
- `PICKUP_READY` 是海外 PDA 待收柜的开放门禁。
- 实际 `EMPTY_RETURNED` 后查询任务停止。
平台可在 Admin → 船期信息/订舱详情/货柜详情查看,并在第三方数据缺失时按权限人工补录真实节点。
### 7.2 跨区生成尾程订单
国内装柜完成事件通过 Event Bridge 投递海外区域。当前正确结果是:
- 按最终实装数据生成尾程订单和货物冻结快照;
- 尾程订单状态为 `PENDING_ASSIGNMENT`;
- 建立 `FIRST_LEG` 在途库存快照;
- 保留来源订单、来源入仓码、柜号、目的类型、SKU/箱唛、头程托盘码和备注等事实;
- 不自动创建海外入仓计划。
若页面暂未出现,可等待异步事件收敛后刷新;不得直改海外数据库或手工伪造尾程订单。
### 7.3 平台按柜转换海外入仓计划
入口:Admin → 海外仓 → 尾程订单。
操作:
1. 在柜子工作台按柜号找到 `sourceContainerBookingId` 对应的整柜。
2. 打开柜级详情,核对柜内所有客户、订单、来源入仓码、目的仓和预计到仓时间。
3. 先执行“入仓计划预览”,查看按 FBA/一件代发/私人地址的分组、头程已有托数、海外补充托数、最终托数、阻断项和快照版本。
4. 阻断项为零后确认转换;前端不能自行计算托数或逐票拼装计划。
5. 转换成功后回到尾程订单/入库单核对每票独立计划、计划号、托盘码和实际接柜仓。
系统规则:
- 整柜锁定、重算、资源预留和逐票建计划是一次原子操作,重放不能生成第二批资源。
- 尾程订单推进到 `INBOUND_PLANNED`。
- 散货保留所有头程已有托盘码;海外计划托数更多时按同柜同 FBA 连续补码。
- 一件代发严格沿用国内封托结果,不能在海外计划中随意改托数。
- 预计到仓和来源入仓码是冻结事实,不允许人工改写。
- 计划或真实托盘资源未齐时,海外 PDA 不能接柜。
### 7.4 海外 PDA 柜号签收
前置:船节点已到实际 `PICKUP_READY`,计划和资源完整,当前操作员绑定正确实际海外收货仓。
入口:海外 PDA → 拆柜收货。
操作:
1. 在待卸货列表选择柜号,核对柜内所有入仓码、目的仓、托数和箱数。
2. 锁定柜号;未完成前不能切换其他柜,其他操作员也不能抢占。
3. 用真机依次拍摄车牌 `LICENSE_PLATE`、集装箱封签 `CONTAINER_SEAL`、开柜现场 `DOOR_OPEN`。
4. 三类照片齐全后点击“确认签收并开始收货”。
### 7.5 两种海外实收方式
FBA:
1. 选择 FBA 入仓码并扫描冻结 SKU。
2. 扫描真实托盘码。
3. 输入本次放入该托盘的箱数并确认。
4. 可分多次操作,直至该入仓码待收箱数为 0;不得超收。
OVERSEAS:
1. 扫描最终实装冻结箱唛,系统自动定位所属入仓码。
2. 扫描真实托盘码。
3. 逐箱确认;不能用输入箱数代替逐箱扫码。
4. 非本柜、未实装、已收或不存在的箱唛必须拒绝。
完成整柜:所有入仓码 `pendingPackages=0` 后,点击“完成整柜入库”。系统同事务生成库存余额、仓位、流水和托盘事实,尾程主流程进入 `INBOUND_COMPLETED`,并通过 Outbox 回写国内卸柜完成事实。
## 8. 阶段五:海外排车、PDA 拣货和尾程出库
本节以普通 FBA/私人地址库存的排车出库为主链。暂扣订单不能进入排车或出库;其他同柜订单不受影响。
### 8.1 平台创建排车
入口:Admin → 海外仓 → 排车列表 → 智能预排。
操作:
1. 从真实已完成入仓的计划或已收托盘加载候选。
2. 把托盘加入预排草稿;加入即锁定,移除或关闭草稿时释放。
3. 选择车型并检查托位和重量。页面当前提示:大车 30 托/40000 LB,小车 15 托/10000 LB;最终仍以服务端校验为准。
4. 点击“预排车”,生成正式排车单和正式托盘锁。
5. 在排车列表点击“编辑”,维护车牌、司机、联系电话、车队、预计发车/到达时间、FBA 预约号和预约状态。
6. 路线由已排托盘的目的 FBA 仓自动汇总,不能手工编造。
初始排车状态为 `PENDING_DEPARTURE`。未开始且未生成出库单时可移除托盘或取消;取消会释放托盘锁。
### 8.2 平台转派送
入口:Admin → 海外仓 → 排车列表 → 转派送。
可操作状态:`PENDING_DEPARTURE`、`PICKING`、`READY_TO_DEPART`,但必须在 PDA 发车前完成。
操作:
1. 填写预计派送时间、派送方式、提货方式、装车类型。
2. 按实际业务填写车队/快递、运单号、司机、电话、车牌、车型、车辆大小和预约账号。
3. 填写派送费用;按业务条件填写装车费、买约费用和卖家姓名。
4. 确认提交。
系统结果:
- 一张排车单生成一张车辆级出库单,状态 `WAIT_OUTBOUND`,类型 `DISPATCH_DELIVERY`。
- 按目的 FBA 仓/私人地址拆成一张或多张派送单,初始状态 `WAIT_DELIVERY`。
- 尾程订单记录出库单号、派送单号和对应子单状态。
- 相同排车单重复操作返回既有结果,不能重复建出库单。
### 8.3 海外 PDA 排车拣货
入口:海外 PDA → 排车拣货。
操作:
1. 打开本仓排车任务,核对排车单、车辆、托盘、目的仓和计划箱数。
2. 扫描托盘业务码;系统验证托盘属于当前排车、当前仓和当前客户库存位置。
3. 确认本托箱数,重复直至全部托盘和箱数核平。
4. 点击“完成拣货”。
状态结果:
- 首次成功扫码后任务进入 `PICKING`。
- 全部托盘核平后 PDA 任务为 `COMPLETED`,排车单为 `READY_TO_DEPART`。
- 库存扣减点是成功的 PDA 扫码拣货事务;发车只推进排车/出库事实,不得重复扣库存。
### 8.4 海外 PDA 发车并完成尾程出库
发车按钮只消费服务端返回的 `canDepart` 和 `departBlockReason`。必须同时满足:
- 车辆信息完整;
- PDA 拣货任务完成;
- 所有托盘和箱数核平;
- 排车单为 `READY_TO_DEPART`;
- 平台已经“转派送”;
- 关联出库单仍为 `WAIT_OUTBOUND`。
点击发车后:
- 排车单进入 `DEPARTED`,记录实际发车时间和已发箱数;
- 车辆级出库单进入 `OUTBOUNDED`;
- 释放排车托盘锁;
- 后续派送单继续在 Admin/Client 流转,派送不在海外 PDA 完成。
至此,“头程下单 → 尾程出库”主链完成。如果业务还要求末端签收,则继续在派送单上传签收资料,系统自动完成派送并向国内回写最终履约完成事实。
## 9. 非普通排车出库的分支
| 出库类型 | 如何进入 | PDA/系统终点 |
|---|---|---|
| 一件代发出库 | Admin 从已完成入仓且仍有可用 SKU/箱唛的库存位置创建;候选必须属于唯一客户和唯一海外仓 | 状态 `WAIT_PICK → PICKING → PICKED → OUTBOUNDED`;PDA 可逐箱,也可扫 DP 托盘码原子拣完整托剩余箱件 |
| 换标出库 | PDA 换标完工、仓库复核、客户确认后;卡车分支进排车,自提/快递直接建出库单 | 客户确认前禁止出库;PDA 完成后出库单 `OUTBOUNDED` |
| 仓储转运出库 | 客户申请,平台审核通过后生成待出库任务 | PDA 完成后转运单 `OUTBOUNDED`,尾程主单进入在途子状态 |
| 退货出库 | 从退货箱/SKU 可用库存创建 | 按服务端冻结箱唛和 SKU 实际拣出,不能自由填库存来源 |
| 派送异常退回 | 从原出库拣货事实选择可退明细 | 实收入真实托盘/库位,恢复库存后异常单完成、派送变 `RETURNED` |
出库列表统一状态包括 `WAIT_PICK`、`PICKING`、`PICKED`、`WAIT_OUTBOUND`、`OUTBOUNDED`、`CANCELLED`。只有尚未执行的 `WAIT_PICK/WAIT_OUTBOUND` 可取消。
## 10. 核心状态与业务编号对照
### 10.1 主状态时间线
| 阶段 | 关键状态 | 业务含义 |
|---|---|---|
| 客户下单 | `DRAFT` | 可编辑草稿,无入仓码 |
| 客户提交 | `SUBMITTED` / `PENDING_REVIEW` | 已生成固定入仓码,待平台审核 |
| 审核后 | `WAIT_MEASURE` | 国内正式入库单已建立,等待实测 |
| 一件代发组托 | `WAIT_PALLETIZE` | 等待逐箱清点、组托和封托 |
| 测量/组托后 | `WAIT_SPLIT` | 可进入真实分柜与预装 |
| 国内作业 | `LOADING` | 国内 PDA 拣货/装柜中 |
| 国内装柜完成 | `LOADED` | 装柜完成,但不等于国内离仓 |
| 海外尾程建单 | `PENDING_ASSIGNMENT` | 事件已建尾程订单,尚未转换入仓计划 |
| 海外计划完成 | `INBOUND_PLANNED` | 入仓计划和资源就绪 |
| 海外入仓完成 | `INBOUND_COMPLETED` | 海外库存、仓位和流水已生成 |
| 排车拣货完成 | `READY_TO_DEPART` | 待平台转派送/发车门禁收敛 |
| 海外出库完成 | `OUTBOUNDED` / `DEPARTED` | 货已离开海外仓,进入派送阶段 |
### 10.2 编号串联关系
| 编号 | 谁生成 | 用途 |
|---|---|---|
| `orderNo` | Order | 客户头程订单号 |
| `inboundCode` | Order 提交时 | 跨国内入库、装柜、海外尾程的稳定业务关联码 |
| `containerBookingId` | Firstleg 建柜 | 柜级稳定内部业务身份,跨区事件和海外整柜聚合使用 |
| `cabinetNo` | Firstleg 建模拟柜 | 平台可见柜次号 |
| `containerNo` | 港口取得后录入 | 真实集装箱号,PDA 和船运现场识别使用 |
| `loadingPlanId` | Firstleg 建柜/预装 | 国内预装、PDA 和装柜清单关联 |
| `palletNo` | 国内/海外资源服务 | 现场托盘扫描身份;一件代发与散货生成规则不同 |
| `planNo` | Lastleg 转换计划 | 海外入仓计划号 |
| `dispatchNo` | Lastleg 预排 | 海外排车单号 |
| `outboundNo` | Lastleg 转派送/独立出库 | 海外出库单号 |
| `deliveryNo` | Lastleg 转派送 | 按目的仓拆分的派送单号 |
页面不得用内部数据库 ID 代替这些业务编号。编号缺失时应显示“—”,不能拿别的单号冒充。
## 11. 当前统一口径与旧文档差异
1. 费用不再阻断待分柜。旧测量文档把“发送费用给客户”写成入库成功节点;当前 Firstleg 口径是测量审核通过后直接进入 `WAIT_SPLIT`,费用独立版本化。
2. 跨区事件不自动建海外入仓计划。旧海外验收手册曾写“装柜完成事件直接生成入仓计划”;当前只生成 `PENDING_ASSIGNMENT` 尾程订单,平台必须按柜预览并确认转换。
3. `LOADED` 只校验物理装柜。报关线按客户回执确认、整柜正式申报和海关结果推进;送港线按拖车、离仓、进港和甩柜推进,两条线互不替代。
4. 只有实际开船才进入海运节点。`DEPARTED_WAREHOUSE` 和 `PORT_RECEIVED` 是送港事实,`ROLLED_OVER` 是船次异常,预计 ETD 不推进海运中。
5. 真实柜号最迟时点存在历史指引差异。当前代码允许在 `EDITING/LOADING` 补录,但最终 PDA 完成前必须存在;为避免页面入口差异,正式操作统一要求预装确认前补齐。
6. 尾程主状态与子单状态分开。入仓后主流程固定在 `INBOUND_COMPLETED`,排车、出库、派送、换标和转运的精确状态保存在子单,不得互相覆盖。
## 12. 异常处理和禁止绕过事项
- 订单提交失败:先检查企业审核、资金账户、仓库/目的仓和渠道,不要通过保存草稿伪装已提交。
- 测量失败:修正尺寸/称重证据后重新提交;未确认图片、总重为零和重复箱码不得放行。
- 排柜失败:以 `canAssign`、剩余箱数、容量、同柜组和版本冲突原因处理,不从前端强塞分配。
- 国内 PDA 版本冲突:刷新任务和库存快照;不能重复使用旧 token 或旧版本继续提交。
- 国内出仓失败:逐项查看服务端门禁;不以人工改状态、改数据库或伪造船节点解决。
- 跨区未建单:先检查事件 Outbox/Event Bridge/Inbox 和幂等结果;不手工补海外订单。
- 海外 PDA 看不到柜:依次检查实际 `PICKUP_READY`、整柜计划资源、操作员绑定仓、柜是否被锁定。
- 海外收货不平:按入仓码核对计划数、实收数、箱唛/SKU 和托盘;未核平不能完成整柜。
- 排车不能发车:直接展示 `departBlockReason`,检查车辆、拣货核平、`READY_TO_DEPART` 和 `WAIT_OUTBOUND` 出库单。
- 所有写操作都应携带服务端版本和幂等键;超时后先查结果,不能换新键盲目重复操作。
- 不通过数据库直改、浏览器调用 internal 接口、跨客户 ID 或内部主键跳过正常业务流程。
## 13. 一票到底的验收清单
- [ ] 企业资料审核通过,提交时资金账户通过校验
- [ ] 客户订单从草稿成功提交并生成唯一入仓码
- [ ] 平台审核通过,正式国内入库单和箱码事实已建立
- [ ] 尺寸、称重、OCR 修正和测量审核完整
- [ ] 普通订单进入 `WAIT_SPLIT`;一件代发先完成组托再进入 `WAIT_SPLIT`
- [ ] 模拟柜、订舱、真实柜号、预装计划和订单分配关系一致
- [ ] 国内 PDA 全部拣货,五类证据和铅封齐全
- [ ] 装柜计划 `COMPLETED`,来源入库单 `LOADED`
- [ ] 每个客户完成“资料→报关行回执→客户确认”,打回客户已重新上传、重新发送并生成新回执
- [ ] 所有客户确认后,整柜资料已提交报关行正式申报,并记录查验/放行结果
- [ ] 送港线已记录 `DEPARTED_WAREHOUSE`、`PORT_RECEIVED` 或 `ROLLED_OVER`
- [ ] 承运船舶实际开航后才生成 `VESSEL_DEPARTED` 和船节点任务
- [ ] 实际船节点到 `PICKUP_READY` 后海外 PDA 才看到柜号
- [ ] 海外只先生成 `PENDING_ASSIGNMENT` 尾程订单,平台按柜转换计划成功
- [ ] 海外 PDA 三类签收照片齐全,FBA/OVERSEAS 按正确模式实收
- [ ] 整柜所有入仓码核平,尾程主流程 `INBOUND_COMPLETED`
- [ ] 库存余额、托盘、库位和流水一致,国内收到卸柜回写
- [ ] 排车托盘来源真实且未暂扣,车辆和预约信息完整
- [ ] 平台转派送生成一张 `WAIT_OUTBOUND` 出库单和按目的仓拆分的派送单
- [ ] 海外 PDA 拣货核平,服务端 `canDepart=true`
- [ ] 发车后排车单 `DEPARTED`、出库单 `OUTBOUNDED`,库存与出库数量守恒
## 14. 主要事实来源
- `docs/业务快速索引.md`
- `docs/订单与客户/订单与客户头程订单闭环设计.md`
- `docs/入库测量与计费/入库测量与计费需求优化版-v2-测量计费入库主流程.md`
- `docs/国内货柜履约/货柜管理全链验收矩阵-2026-08-13.md`
- `docs/海外仓业务/README.md`
- `docs/海外仓业务/虫虫出海全流程人工验收手册.md`
- `baiyue-firstleg/order/AGENTS.md`
- `baiyue-firstleg/firstleg/AGENTS.md`
- `baiyue-firstleg/lastleg-service/AGENTS.md`
- `apps/admin-web/src/modules/overseas-warehouse/AGENTS.md`
- `apps/pda-overseas-uniapp/AGENTS.md`
本文用于统一业务操作和评审口径;接口字段、权限码、并发版本和错误码仍以对应 Controller、DTO、OpenAPI 与服务端状态机为最终依据。