Files
docs/二期/二期开发规划.md
T

417 lines
33 KiB
Markdown
Raw Normal View History

2026-07-31 10:43:30 +08:00
# 虫虫出海二期开发规划:头程到仓与计费财务
> 创建日期:2026-07-28
> 状态:开发已启动,需求确认并行
> 流程依据:[头程物流流程图](参考资料/头程物流流程图.svg)中的头程物流“02 到仓”
> 前置阶段:[一期文档](../一期/README.md)
## 一、二期目标
二期承接一期“客户下单并选择平台收货仓”的结果,完成货物从待到仓到入仓、测量、差异确认和指定库位的作业闭环,并在实测数据之上完成费用生成、应收应付、对账、线下收付款核销和单票利润的最小财务闭环。
流程严格对应五个动作:
```text
预约取货 / 送货上门
↓
货物到达平台收货仓
↓
入库测量(件数、重量、体积和计费数据)
↓
申报与实测差异核对
↓
仓库作业(指定库位)
↓
计费、应收应付、对账与核销
```
二期完成标准不是“增加到仓状态”,而是每票货能够回答:怎么到仓、何时到仓、谁接收、实际收到什么、与订单差多少、差异如何处理、最终放在哪个库位、产生了哪些收入与成本、是否完成对账和收付款核销。
### 当前启动策略
- 二期已经开工,产品岗位暂时空缺;现阶段由项目负责人组织业务、仓库、财务和技术形成临时需求基线。
- 可先行开发稳定且可逆的能力:公共数据结构、权限与审计骨架、列表和详情、原始测量与附件、标签适配层、费用及账单基础数据结构。
- 依赖 P2-Q1、Q4、Q5、Q6、Q8、Q10、Q11、Q13 至 Q16 的自动流转、计算参数和最终锁定规则,在结论明确前必须配置化或保持可替换,不写死高成本业务假设。
- 后续产品到岗后复核临时基线。已进入开发的规则发生变化时,必须记录影响范围、数据迁移和验收调整,不直接覆盖历史版本。
## 二、阶段边界
### 纳入二期
- 客户预约取货和送货上门两种到仓方式。
- 平台收货仓到仓预报、预约安排、到仓签到和收货登记。
- 实收件数、重量、体积、尺寸、外包装和现场照片记录。
- 申报数据与实测数据对比、差异单、确认和调整留痕。
- 最小库位档案、上架任务、指定库位和上架完成记录。
- 箱件/托盘处理单元、标签和当前库位位置记录,为后续出仓提供可追踪输入。
- 客户端查看预约、到仓、实测、差异和上架结果。
- 管理后台进行预约调度、仓库收货、差异处理和库位分配。
- 费用项目、计费规则版本、费用试算与生效、应收应付和调整审计。
- 客户/供应商对账单、线下收付款登记、部分核销、反核销和余额查询。
- 发票状态登记、客户账单中心和单票利润查询。
- 服务端完成权限、状态、幂等、并发、审计和历史快照。
### 明确不纳入二期
- 流程图头程“03 出仓”:智能排柜、订舱、预约拖车、PDA 拣货、装柜、报关和港务信息。
- 完整 WMS:可用库存、库存成本、常规移库、盘点、冻结、拣货、复核和出库。二期只保留支撑指定库位所需的处理单元和位置记录。
- 正式 PDA 硬件扫描头或厂商 SDK 接入;二期仓库作业先由管理后台或响应式作业页完成。
- 对客询价、报价审批、报价转订单和合约报价体系。
- 在线支付、银企直连、银行流水自动认领、电子税局开票、会计凭证和总账报表;二期财务边界见 [二期计费与财务模块规划](二期计费财务模块规划.md)。
- 快递轨迹、地图调度、车队 GPS 和外部承运商接口自动同步。
- FBA/海外目的仓及尾程到港、到仓、出仓、签收流程。
## 三、参与角色与数据边界
| 角色 | 数据范围 | 主要操作 |
|---|---|---|
| 企业订单操作员 | 当前企业订单、到仓单和对客账单 | 提交预约、查看到仓结果、确认差异和查看账单 |
| 企业管理员 | 当前企业全部订单、到仓单和对客账单 | 查看、确认差异、确认/争议账单、管理企业联系人 |
| 平台客服/运营 | 授权客户和订单范围 | 审核预约、协调取货、处理异常、差异和对账争议 |
| 仓库收货员 | 被授权的平台收货仓 | 到仓签到、收货、测量、拍照和异常登记 |
| 仓库上架员 | 被授权的平台收货仓和库位 | 领取上架任务、指定库位、确认完成 |
| 计费专员 | 授权客户、仓库和业务范围 | 费用试算、人工加费、调整申请和对账准备 |
| 财务审核员 | 平台财务授权范围 | 费用审核、对账审核、收付款与核销审核 |
| 财务管理员 | 平台财务授权范围 | 费用项目、计费规则、汇率、结算参数和利润查询 |
| 平台管理员 | 平台授权范围 | 维护仓库、库位、快递公司、往来单位和权限 |
服务端必须依据登录身份确定企业、平台数据范围和仓库权限。订单 ID、企业 ID、仓库 ID 或操作员 ID 均不能由前端参数单独决定授权。
## 四、业务模块
### 1. 到仓单与到仓预报
- 规划基线采用“订单 1:N 到仓单、到仓单 1:N 收货批次、收货批次 1:N 处理单元”。一张订单可以分次取货或送货,每次独立预约形成到仓单;同一次预约允许分批实际到仓。
- 到仓单记录所属订单、平台收货仓、到仓方式、预计时间、联系人、货物摘要和备注。
- 生成客户可见的到仓单号和仓库收货识别码。
- 客户、平台代客创建和系统补录必须记录来源及操作者。
- 重复提交使用幂等键,避免网络重试产生重复预约。
- 到仓单保存计划件数/箱数、累计实收、剩余数量和是否允许继续到仓。未全部到仓时显示“部分收货”,由后续批次补齐或由授权人员填写原因后人工关闭。
- 到仓单分配到具体订单货物明细及计划数量;同一货物明细在所有有效到仓单中的累计计划量不得超过订单可到仓量,取消或关闭后按规则释放未使用分配量。
- 已人工关闭的少货到仓单不得继续登记新批次;需要补货时创建新的到仓单并关联原单。
### 2. 预约取货
- 客户选择取货地址、联系人、联系电话和期望取货时间窗。
- 带入往来单位联系人与地址,允许本次预约调整但不反向覆盖档案。
- 平台审核预约,分配快递公司或服务商、司机/联系人和预约时间。
- 支持待审核、已安排、已取货、运输中、已到仓、已取消和异常结果。
- 取货调度结果使用独立子状态维护;到仓单主状态只表达货物整体到仓进度,二者通过业务动作联动但不能相互覆盖。
- 一期快递公司和往来单位作为调度基础资料;外部轨迹和自动派单不进入二期。
- 仓库维护营业时间、停收日期、时间窗容量和人工超额确认权限;预约变更、爽约和重复时间窗冲突必须留痕。
### 3. 送货上门
- 客户选择送达仓库、预计送达时间和送货联系人。
- 可记录快递公司、快递单号或自送车辆信息。
- 仓库按到仓单号、订单号、快递单号或收货识别码检索预报。
- 无预报货物允许登记为“待认领”,但不得直接归入其他企业订单。
- 取消、过期、改仓和重复到仓必须保留处理记录。
- 到仓前改仓需取消原到仓单并新建目标仓到仓单,不直接改写已确认的仓库快照。
### 4. 到仓签到与收货
- 记录实际到仓时间、到仓方式、交接人、收货员和交接凭证。
- 登记实际包裹/箱数、包装状态、唛头、破损、受潮、缺失和多货等异常。
- 上传现场照片,照片关联到仓单和收货批次并受权限控制。
- 支持一票分批到仓;每个收货批次有独立时间、实收和异常记录。
- 到仓签到与实收提交均需幂等,防止重复扫码或重复点击。
- 每个实际箱件或托盘生成稳定处理单元编码,可打印和补打标签;补打、换标、作废和重复码处理必须保留操作者及原因。
- 二期箱件/托盘标签打印设备确定为佳博 1324D 热敏标签打印机。标签纸尺寸、连接方式、驱动和打印指令协议须在开发前通过实机核验,不依据型号名称直接假定。
- 托盘处理单元可以组合多个箱件,保存父子关系和各箱件对应的订单货物明细;拆托或重新组托必须生成新的组合版本。
- 错绑企业、订单或到仓单时不得删除收货记录。由有权限的主管发起冲正,保留原绑定、冲正原因、审批人和重新认领结果。
### 5. 入库测量
- 按收货批次或箱件记录实测数量、毛重、体积和尺寸。
- 服务端汇总订单实收件数、总重量和总体积,不接受客户端独立提交冲突合计。
- 保留测量设备/方式、操作员、时间和修订版本;修改实测数据必须填写原因。
- 测量规则使用独立版本,明确长度、重量和体积单位、体积重系数、精度及舍入方式。每条实测记录保存原始值、换算值、规则版本和复核结果,确保历史计费数据可复算。
- 二期输出体积重、计费重等结果,并作为费用试算输入;测量或计费规则版本发布后不反向改写已确认测量记录和已生效费用。
- 覆盖测量中、待复核、已完成和测量异常状态。
### 6. 调整差异核对
- 自动对比订单申报与仓库实测,形成数量、重量、体积、包装和货物归属差异。
- 差异支持待处理、待客户确认、客户已确认、平台调整完成和已关闭。
- 小于阈值的差异是否自动接受必须由产品配置,不在代码中写死。
- 客户确认后冻结本次实测版本;再次调整需创建新版本并记录原因。
- 差异未关闭时默认进入业务暂停。货物可以临时上架到隔离区,但不能标记正式上架完成,也不能进入后续出仓。
- 隔离区库位具有明确类型和暂停原因;差异关闭后执行释放并生成从隔离区到正式库位的位置变更记录。
- 客户对差异有异议时记录争议说明、证据、责任人和处理期限;超时策略必须配置,不能静默自动确认。
### 7. 指定库位与上架
- 维护最小库位档案:仓库、库区、库位编码、名称、类型、状态、容量约束和备注。库位类型至少区分正式库位、隔离区和待认领区。
- 创建上架任务,关联到仓单、收货批次、目标库位、执行人和优先级。
- 支持待分配、待上架、上架中、已完成、已取消和异常状态。
- 同一收货批次允许拆分到多个库位;每条分配记录保留数量或箱件范围。
- 上架完成时写入处理单元的当前库位位置,并保留进入、移出和历史位置。位置记录是三期拣货的输入,不等同于建设完整可用库存或库存成本台账。
- 目标库位停用、容量不足或不允许该货物类型时,服务端拒绝上架并要求重新分配。
### 8. 客户可视与通知
- 客户端订单详情增加到仓时间线:预约、取货/送货、到仓、实测、差异、上架。
- 客户只能查看本企业数据、公开照片和对客异常说明。
- 差异待确认、预约变更和到仓异常提供站内提醒。
- 短信、邮件或微信通知仅在渠道和合规方案确认后接入。
- 司机电话、客户联系人、照片和交接凭证按角色脱敏和授权下载,并明确保留期限、导出审计和到期清理策略。
### 9. 计费规则与费用台账
- 建立费用项目、应收/应付方向、计费单位、币种、税务属性和启停状态。
- 计费规则按客户、供应商/往来单位、仓库、服务类型和有效期版本化;历史费用保存输入、规则版本和计算快照。
- 实测确认、差异关闭或其他已确认业务节点触发费用草稿,重复事件不得重复计费。
- 生效费用不直接覆盖,改费、红冲、作废通过独立调整记录和审核链处理。
### 10. 应收应付与对账
- 应收关联客户,应付关联快递公司、仓库服务商或其他往来单位。
- 支持按票或按周期生成客户/供应商对账单,并维护审核、确认、争议、关闭和作废状态。
- 客户端提供账单列表、明细、确认和异议入口,不返回供应商成本、利润和内部备注。
### 11. 收付款、发票与利润
- 登记线下收款、付款、退款和调整,支持部分核销、多对多核销、反核销和凭证审计。
- 二期只登记发票申请、号码、金额、税率、日期、状态和附件,不连接外部开票平台。
- 单票利润按已生效应收减已生效应付计算;多币种使用锁定汇率折算,仅财务授权角色可见。
- 详细范围、任务和验收规则见 [二期计费与财务模块规划](二期计费财务模块规划.md)。
## 五、建议状态模型
不要把所有过程混成一个订单状态,建议使用到仓进度、差异、上架任务和异常处理四个相互关联的状态域。异常只暂停业务,不覆盖货物当前进度阶段。
### 到仓单状态
| 稳定编码 | 中文名称 | 含义 |
|---|---|---|
| `PENDING_ARRANGEMENT` | 待安排 | 到仓预报已创建,尚未完成取货或送货安排 |
| `SCHEDULED` | 已预约 | 取货或送货时间已确认 |
| `IN_TRANSIT_TO_WAREHOUSE` | 运往仓库 | 已取货或客户已发出 |
| `ARRIVED` | 已到仓 | 已完成到仓签到,等待收货测量 |
| `PARTIALLY_RECEIVED` | 部分收货 | 已确认至少一个收货批次,仍有计划货物待到仓或待人工关闭 |
| `MEASURING` | 测量中 | 正在登记和复核实收数据 |
| `RECEIVED` | 已收货 | 实收版本已确认 |
| `PUTAWAY_PENDING` | 待上架 | 实收已确认,等待正式库位分配或差异解除 |
| `PUTAWAY_COMPLETED` | 已上架 | 指定库位作业完成,二期流程结束 |
| `CANCELLED` | 已取消 | 到仓前按规则取消 |
主状态根据到仓单及其收货批次汇总。部分收货不能仅凭前端设置;服务端根据计划数量、累计实收和人工关闭标记计算可用动作。少货人工关闭只结束剩余到仓等待,不等于差异已确认;已有实收仍须完成测量、差异处理和正式上架后才能进入 `PUTAWAY_COMPLETED`。
### 取货调度子状态
`PENDING_REVIEW`、`SCHEDULED`、`PICKED_UP`、`IN_TRANSIT`、`ARRIVED`、`CANCELLED`。调度异常由异常单表达,不增加会覆盖正常进度的 `EXCEPTION` 状态。
送货上门不创建取货调度记录;到仓单从预约确认或发货动作推进主状态。取货车辆到达仓库后只能发起签到,必须由有收货权限的人员确认签到成功,才能把到仓单推进为 `ARRIVED`;签到、收货和后续处理仍以到仓单及收货批次为准。
### 差异状态
`NONE`、`PENDING_REVIEW`、`PENDING_CUSTOMER_CONFIRMATION`、`DISPUTED`、`CONFIRMED`、`ADJUSTED`、`CLOSED`。
### 上架任务状态
`PENDING_ASSIGNMENT`、`PENDING_PUTAWAY`、`IN_PROGRESS`、`COMPLETED`、`CANCELLED`。异常和暂停由独立异常单及 `businessHold` 表达。
### 异常与业务暂停
异常单状态使用 `OPEN`、`PROCESSING`、`WAITING_CUSTOMER`、`RESOLVED`、`CLOSED`。异常单记录发生阶段、类型、责任人、处理期限、证据、解决结果和恢复动作。
到仓单、收货批次或处理单元可设置 `businessHold`、暂停原因和解除条件。异常解决后恢复原进度阶段,不通过把主状态从 `EXCEPTION` 猜回原状态。
订单主状态只保留对全链路有意义的粗粒度节点,到仓、差异、上架和异常细节由对应业务对象维护。
## 六、核心数据对象
| 数据对象 | 关键内容 |
|---|---|
| 到仓单 | 订单、企业、仓库、方式、预计时间、联系人、状态、来源和版本 |
| 到仓计划分配 | 到仓单、订单货物明细、计划数量、累计实收、剩余数量、释放数量和人工关闭信息 |
| 取货预约 | 取货地址快照、时间窗、服务商、司机/联系人和调度状态 |
| 预约容量 | 仓库、营业时间、停收日期、时间窗、容量、已占用量和超额授权 |
| 收货批次 | 实际到仓时间、交接人、收货员、实收摘要和现场凭证 |
| 处理单元 | 稳定箱件/托盘编码、标签状态、所属批次、订单货物明细、数量、父子组合和当前业务暂停状态 |
| 组托版本 | 托盘、成员箱件、组合版本、生效/失效时间、操作人和拆托/重组原因 |
| 标签记录 | 处理单元、标签编码、设备型号、打印结果、生成、打印、补打、换标、作废及原因 |
| 测量规则版本 | 单位、体积重系数、精度、舍入方式、生效时间和版本状态 |
| 测量明细 | 处理单元、原始尺寸/重量、换算值、体积、体积重、计费重、规则版本、设备、操作员和复核版本 |
| 差异单 | 申报值、实测值、差异类型、阈值、责任人、确认和调整记录 |
| 异常单 | 发生阶段、类型、暂停范围、责任人、期限、证据、解决和恢复记录 |
| 库位 | 仓库、库区、稳定编码、名称、类型、容量约束、状态和数据范围 |
| 上架任务 | 收货批次、目标库位、数量/箱件范围、执行人、状态和完成时间 |
| 位置记录 | 处理单元、库位、数量/箱件范围、进入时间、移出时间和当前标记 |
| 冲正记录 | 原企业/订单/到仓单绑定、冲正原因、审批人、新绑定和完成时间 |
| 到仓时间线 | 事件、前后状态、操作者、发生时间、说明和请求关联 ID |
| 费用项目/计费规则 | 应收应付方向、单位、币种、税务属性、适用维度、计费方式、生效区间和规则版本 |
| 费用记录/调整 | 业务来源、往来方、计费输入、规则快照、原币金额、汇率、税额、状态和调整链 |
| 对账单/明细 | 对账对象、周期、费用、调整、已核销、余额、到期日、状态、版本和争议 |
| 收付款/核销 | 往来方、收付类型、金额、币种、流水、凭证、核销金额、反核销和审核记录 |
| 发票/汇率版本 | 发票方向、号码、金额、税率、日期、状态、附件,以及汇率日期、来源和锁定状态 |
所有基础资料引用都同时保存稳定 ID 和必要快照。仓库、往来单位、快递公司或库位后续改名、停用时,不改变历史到仓记录。
## 七、应用范围
### 管理后台 `apps/admin-web`
- 到仓单列表、筛选、详情和状态操作。
- 预约取货审核、仓库时间窗容量和服务商调度。
- 到仓签到、收货批次、处理单元标签、测量和照片。
- 差异处理、异常暂停、客户确认结果、调整和主管冲正。
- 库区/库位维护、隔离区、上架任务及当前货物位置查询。
- 费用项目、计费规则、费用审核与调整、应收应付、客户/供应商对账、收付款核销、发票登记和利润查询。
- 权限至少拆分为查看、预约调度、收货、标签、测量、差异处理、异常解除、冲正、库位维护、上架、规则发布、费用调整、费用审核、对账审核、收付款、核销、反核销、发票登记和利润查看。
### 企业客户端 `apps/client-web`
- 创建取货预约或送货预报。
- 查看预约安排、到仓时间线、实测结果和公开照片。
- 查看并确认差异;确认失败时保留页面输入和上下文。
- 查看部分到仓、剩余待到仓数量、业务暂停和异常处理结果。
- 查看上架完成结果,不暴露其他企业、内部库位运营信息或平台内部备注。
- 查看本企业账单、费用明细和付款状态,确认或提出异议;不暴露应付成本和内部利润。
### 服务端 `services/api`
- 最终保证身份、租户、仓库数据范围、状态转换、幂等、并发和审计。
- 管理到仓单、预约容量、收货批次、处理单元、标签、测量规则、差异、异常、库位、位置记录、上架、冲正及时间线事务边界。
- 管理计费规则版本、费用生成幂等、费用调整、应收应付、对账单版本、收付款核销、发票登记、汇率锁定和利润权限边界。
- 文件访问使用不可预测标识和授权下载,不信任客户端文件名与 MIME 类型。
- 联系方式、司机信息、照片和交接凭证执行字段脱敏、最小返回、导出审计、保留期限和到期清理。
- 为未来 PDA 或外部调度接口预留适配边界,但二期不绑定厂商 SDK。
## 八、建议里程碑
| 里程碑 | 交付目标 | 进入条件 |
|---|---|---|
| P2-M0 规则锁定 | 到仓规则、计费财务边界、费用项目、规则版本、结算、核销、汇率和权限基线确认 | 一期订单及基础资料契约稳定 |
| P2-M1 到仓预报 | 预约取货、送货上门预报及平台调度形成闭环 | 快递公司、往来单位和收货仓 API 可用 |
| P2-M2 到仓收货 | 到仓签到、分批收货、处理单元标签、异常、冲正和照片可追溯 | 文件存储和仓库权限可用 |
| P2-M3 测量差异 | 测量规则版本、可复算结果、自动对比、客户确认、隔离和调整闭环可用 | 测量口径和阈值确认 |
| P2-M4 库位上架 | 库位档案、隔离区、上架任务、处理单元当前位置和历史位置可查 | 库位编码、容量和拆分规则确认 |
| P2-M5 计费财务 | 费用生成、应收应付、客户/供应商对账、收付款核销和单票利润闭环可用 | Q13-Q16 确认,P2-M3 实测数据可用 |
| P2-M6 联调验收 | 跨端联调、迁移、安全、异常、财务勾稽、性能和发布完成 | P2-M1 至 P2-M5 验收通过 |
## 九、建议开发任务
| ID | 端 | 模块 | 交付内容 | 优先级 | 依赖 |
|---|---|---|---|---|---|
| P2-BASE-01 | 公共 | 到仓契约 | 状态、枚举、权限、事件、错误码和快照模型 | P0 | 一期订单契约 |
| P2-BASE-02 | 公共 | 数据模型 | 到仓单、计划分配、预约容量、批次、处理单元、标签、组托版本、测量规则、差异、异常、库位、位置、冲正和时间线 | P0 | P2-BASE-01 |
| P2-ADM-01 | 后台 | 到仓列表 | 查询、筛选、分页、详情、空态和异常态 | P0 | P2-BASE-01 |
| P2-ADM-02 | 后台 | 预约调度 | 审核预约、分配服务商、调整时间和取消 | P0 | P2-ADM-01 |
| P2-SCH-01 | 后台 | 预约容量 | 营业时间、停收日期、时间窗容量、冲突和人工超额授权 | P0 | P2-ADM-02 |
| P2-CLI-01 | 客户端 | 到仓预报 | 预约取货、送货上门、联系人地址带入、可用时间窗和提交 | P0 | P2-BASE-01、P2-SCH-01 |
| P2-WH-01 | 后台 | 到仓签到 | 识别到仓单、分批收货、交接和异常登记 | P0 | P2-BASE-02 |
| P2-LABEL-01 | 后台 | 处理单元标签 | 箱件/托盘编码、佳博 1324D 实机适配、打印结果、失败重试、补打、换标、作废和重复码处理 | P0 | P2-WH-01 |
| P2-REV-01 | 后台 | 收货冲正 | 错绑企业/订单/到仓单的主管审批、解绑和重新认领 | P0 | P2-WH-01 |
| P2-WH-02 | 后台 | 入库测量 | 原始测量、规则版本、换算、复核、照片和历史复算 | P0 | P2-LABEL-01 |
| P2-DIFF-01 | 公共 | 差异引擎 | 申报实测对比、阈值、差异单和阻塞规则 | P0 | P2-WH-02、P2-HOLD-01 |
| P2-ADM-03 | 后台 | 差异处理 | 复核、说明、调整、关闭和审计 | P0 | P2-DIFF-01 |
| P2-CLI-02 | 客户端 | 差异确认 | 查看实测、公开照片、确认或反馈差异 | P0 | P2-DIFF-01 |
| P2-HOLD-01 | 公共 | 异常与暂停 | 异常单、业务暂停、隔离、责任期限、解除和恢复阶段 | P0 | P2-BASE-02 |
| P2-LOC-01 | 后台 | 库位维护 | 库区、库位编码、类型、容量、状态和权限范围 | P0 | P2-BASE-02 |
| P2-PUT-01 | 后台 | 上架任务 | 创建、分配、拆分、隔离上架、异常和完成 | P0 | P2-LOC-01、P2-WH-02、P2-HOLD-01 |
| P2-POS-01 | 公共 | 位置记录 | 处理单元当前位置、进入/移出历史和库位占用校验 | P0 | P2-PUT-01 |
| P2-SEC-01 | 公共 | 隐私与保留 | 联系方式脱敏、照片授权、导出审计、保留期限和清理 | P0 | P2-WH-01 |
| P2-TIME-01 | 公共 | 时间线通知 | 对客事件、站内提醒和失败补偿记录 | P1 | 核心流程完成 |
| P2-FEE-01 | 后台 | 费用项目 | 费用项目、方向、单位、币种、税务属性和启停 | P0 | P2-BASE-01 |
| P2-RATE-01 | 后台/服务端 | 计费规则 | 规则维度、版本、生效区间、阶梯/最低价和发布审核 | P0 | P2-FEE-01、P2-WH-02 |
| P2-CALC-01 | 服务端 | 计费引擎 | 规则匹配、试算、事件触发、幂等、计算快照和复算 | P0 | P2-RATE-01 |
| P2-FEE-02 | 后台 | 费用台账 | 自动/人工费用、审核、调整、红冲、锁定和审计 | P0 | P2-CALC-01 |
| P2-ARAP-01 | 后台 | 应收应付 | 客户应收、供应商应付、查询汇总、权限和导出 | P0 | P2-FEE-02、一期往来单位 |
| P2-RECON-01 | 后台 | 对账单 | 按票/月结生成、审核、确认、争议、版本和关闭 | P0 | P2-ARAP-01 |
| P2-CLI-03 | 客户端 | 账单中心 | 对客账单列表、明细、确认、异议和付款状态 | P0 | P2-RECON-01 |
| P2-CASH-01 | 后台 | 收付款核销 | 收付款登记、凭证、审核、部分核销、反核销和余额 | P0 | P2-RECON-01 |
| P2-INV-01 | 后台 | 发票登记 | 开票/收票申请、号码、金额、税率、状态和附件 | P1 | P2-RECON-01 |
| P2-PROFIT-01 | 后台 | 单票利润 | 收入、成本、毛利、毛利率、折算和权限控制 | P1 | P2-ARAP-01、汇率版本 |
| P2-TEST-01 | 公共 | 自动化测试 | 越权、幂等、计费复算、费用调整、对账勾稽、核销、反核销、标签、差异、位置、文件和隐私测试 | P0 | 所有 P0 模块 |
| P2-REL-01 | 公共 | 发布验收 | 初始化预约日历、库区库位、测量规则、标签打印参数、迁移、联调、验收和生产发布 | P0 | P2-TEST-01 |
## 十、测试与验收重点
- 企业 A 不能读取、预约、确认企业 B 的到仓单和差异。
- 无仓库权限的员工不能收货、测量或分配库位。
- 重复预约、签到、标签生成、测量提交和上架完成不会产生重复记录。
- 取货调度、到仓主进度、差异、上架和异常状态独立维护;任一异常解除后能恢复到原业务阶段,不覆盖或倒退其他状态域。
- 一张订单多到仓单、一个到仓单多批收货的累计、剩余、部分收货和人工关闭结果正确。
- 少货人工关闭后不能继续登记原到仓单批次,也不会跳过测量、差异确认或正式上架;后续补货通过新到仓单关联原单。
- 多张有效到仓单不能超额分配同一订单货物明细;取消和人工关闭后未使用计划量按规则释放。
- 未认领货物不会归入错误订单或企业;错误绑定只能通过授权冲正恢复,原记录不可删除。
- 标签补打、换标和作废可追溯,重复标签不能同时绑定两个有效处理单元。
- 使用佳博 1324D 实机验证标签内容、尺寸、清晰度、连续打印、失败提示和重试;断电、缺纸或连接中断不会误记为打印成功。
- 组托、拆托和重新组托保留箱件父子关系及版本,任一箱件不会同时属于两个有效托盘。
- 实测修改保留旧版本、原因和操作者,客户确认绑定明确版本。
- 历史实测使用保存的单位、系数、精度、舍入规则和公式版本可复算出相同结果。
- 差异未关闭时严格执行已确认的上架和后续流程阻塞规则。
- 隔离区上架不会标记正式上架完成;解除暂停后生成到正式库位的位置变更。
- 上架完成后每个处理单元有且只有一个有效当前位置,停用或容量不足库位被服务端拒绝。
- 停用仓库、快递公司、往来单位和库位不能用于新业务,但历史记录可读。
- 照片和附件覆盖类型、大小、恶意内容、越权访问和删除引用。
- 联系方式按角色脱敏,敏感文件下载和批量导出有审计,过期数据按保留策略清理。
- 相同计费事件重试不重复生成费用,历史费用能按规则、输入和汇率快照复算一致。
- 费用调整、红冲、对账版本、核销和反核销形成不可删除的审计链。
- 对账单费用、调整、已核销和余额勾稽一致;多币种不直接相加且折算可追溯。
- 客户及非财务角色不能读取供应商成本、内部利润和其他企业财务数据。
- 页面覆盖加载、空态、失败、无权限、重复操作、数据过期和窄屏场景。
- 二期验收终点为指定库位完成,不以库存或出仓功能作为完成条件。
## 十一、启动前待确认事项
### 已采用的规划基线
| 编号 | 规划基线 | 说明 |
|---|---|---|
| P2-B1 | 订单 1:N 到仓单,到仓单 1:N 收货批次,批次 1:N 处理单元 | 支持分次预约和分批实际到仓 |
| P2-B2 | 异常单和业务暂停独立于到仓主状态 | 异常解除后恢复原进度,不覆盖或猜测主阶段 |
| P2-B3 | 二期建立处理单元和位置记录 | 只支撑标签、指定库位和三期拣货输入,不扩张为完整库存系统 |
| P2-B4 | 差异未关闭默认业务暂停,不建设单独隔离区 | 暂停期间不得进入正式上架完成和计费锁定节点 |
| P2-B5 | 错误收货通过主管冲正处理 | 不删除原记录,保留原绑定、原因、审批和重新认领结果 |
### 已确认的业务决策
| 编号 | 已确认事项 | 实施说明 |
|---|---|---|
| P2-Q1 | 少货处理以实际入库货物为准 | 实收和计划差异进入客户确认,原到仓单按实收结果处理 |
| P2-Q2 | 不走系统服务商调度 | 取货安排在线下完成,系统不建设自动服务商分配;相关费用人工添加 |
| P2-Q3 | 人工线下预约时间 | 系统记录预约结果、改期和取消留痕,不建设时间窗容量调度 |
| P2-Q4 | 毛重及材积重公式已确认 | 毛重相关值按毛重÷363;材积重按(长×宽×高÷6000)×箱数,单位和舍入写入规则版本 |
| P2-Q5 | 差异需要客户确认 | 差异确认前保持业务暂停 |
| P2-Q6 | 不建设单独隔离区域 | 以业务暂停控制后续操作,不生成隔离库位流程 |
| P2-Q7 | 当前不做库位容量校验 | 保留库位启停和权限校验,不按重量、箱数或体积拦截 |
| P2-Q8 | 上传称重照片和测量照片 | 收货测量流程提供对应附件上传和权限控制 |
| P2-Q11 | 敏感数据和凭证保存 12 个月 | 起算点及到期删除/归档方式在技术规则中统一定义 |
| P2-Q12 | 箱件/托盘标签使用佳博 1324D 热敏标签打印机 | 设备型号已锁定;标签纸尺寸、连接方式、驱动、指令协议和仓库部署参数在开发前通过实机核验 |
### 暂缓事项
| 编号 | 暂缓事项 | 二期临时基线 |
|---|---|---|
| P2-Q9 | 是否使用 PDA | 二期不接 PDA,使用后台或响应式作业页 |
| P2-Q10 | 无预报货物认领和超期处理 | 无预报货物不得直接绑定企业订单,完整认领和超期规则后续确认 |
### 仍需产品确认
以下事项由项目负责人依据 [二期需求确认清单](二期需求确认清单.md) 组织业务、仓库、财务和技术形成临时结论。本表保留规划摘要;状态为“临时基线”且结论可转为开发规则时可用于当前开发,产品到岗复核后改为“已确认”。
| 编号 | 待确认问题 | 当前建议 |
|---|---|---|
| P2-Q13 | 二期计费财务做到哪一个闭环终点? | 建议做到线下收付款登记和核销,不做总账会计 |
| P2-Q14 | 首批费用项目及应收/应付方向是什么? | 按到仓相关费用建立白名单,其他费用人工新增需审核 |
| P2-Q15 | 计费规则需要哪些维度、阶梯和最低收费? | 至少支持客户、供应商、仓库、服务和有效期版本 |
| P2-Q16 | 费用在什么业务节点生成并锁定? | 实测试算,差异关闭后确认;特殊费用按事件生成 |
P2-Q17 至 P2-Q24 已根据财务原型和安全实现规则形成二期基线,不再要求产品重复确认;详细口径见 [二期计费财务需求确认表](二期计费财务需求确认表.md)。
## 十二、建议实施顺序
1. 锁定仍需业务确认的口径,并完成到仓领域契约和数据关系评审。
2. 先实现服务端到仓单、预约容量、权限和部分收货汇总,再接客户预报与后台调度。
3. 实现到仓签到、分批收货、处理单元标签、照片、主管冲正和待认领流程。
4. 实现测量规则版本、原始测量、历史复算、差异对比和客户确认闭环。
5. 实现异常单、业务暂停、隔离区、解除和恢复阶段。
6. 实现库位容量、上架任务、处理单元当前位置和历史位置,终点锁定为“指定库位完成”。
7. 建立费用项目、计费规则和汇率版本,接入实测数据完成试算、审核、调整和应收应付台账。
8. 实现客户/供应商对账、账单中心、线下收付款、核销、反核销、发票登记和单票利润。
9. 完成跨租户、财务权限、幂等、并发、计费复算、对账勾稽、文件、隐私、异常和冲正流程测试。
10. 使用脱敏初始化数据联调、验收和灰度发布。