租赁行业:采购、仓储、资产架构设计


采购、仓储、资产架构设计

1. 文档目标

本文定义 采购管理供应商管理仓库管理资产管理出入库管理 的系统边界、核心对象、单据流转和页面职责。

本架构以“主数据、业务单据、库存凭证、资产实例、库存投影”五层为基础,统一采购、仓储、资产、WMS 与运营商品之间的数据关系。

优化的目的:最开始的设计未考虑多商户、仓库、商品成色等问题,无法支持新业务发展

  1. 自营转变为多商户模式,资产实际状态只有在库与不在库,没有仓库概念,没有商品实际物理位置
  2. 商品结构:商品(SPU,无成色)--店铺SPU(商品SPU+成色)--仓存SKU(商品SKU+成色),复杂且逻辑混乱,属性按字符串存储
  3. 资产状态的变动混乱,耦合订单状态、售后状态去改变的,已经没有统一维护的入口,资产彻底荒废,靠订单来统计资产

2. 设计范围

本设计覆盖以下业务域:

  • 供应商与仓库主数据
  • 仓存 SPU 与仓存商品 SKU
  • 采购单与采购入库
  • 出入库单及出入库明细
  • 资产建档、资产状态与资产流水
  • WMS 数据同步与资产编号回传
  • 运营 SPU / SKU 的库存投影

3. 架构口径

3.1 核心原则

采购单负责业务意图,商户端负责采购入库操作,出入库单负责库存凭证,资产负责实物实例,WMS负责数据处理、同步和资产编号生成,运营层只消费库存结果。

3.2 系统分工

对象架构定位核心职责
供应商采购来源主数据维护采购来源、供应商基础信息
仓库库存位置主数据维护资产当前归属位置
仓存SPU仓存商品主数据维护商品名称、品牌、型号、分类、规格规则、成色规则
仓存商品SKU库存承载实体规格组合 + 成色 作为库存统计和资产归属维度
采购单业务单据记录采购意图、采购明细、采购数量和到货进度
出入库单库存凭证记录一次库存变化及其资产级明细
资产单台设备实例记录具体设备的资产编号、SN、IMEI、状态、仓库和生命周期
WMS外部仓储处理系统处理入库数据、生成资产编号、回传处理结果
运营SPU / 运营SKU销售投影读取仓存与资产聚合结果,形成前台可售、可租库存

4. 分层架构

flowchart LR
    subgraph A[主数据层]
        S1[供应商]
        W1[仓库]
        P1[仓存SPU]
        P2[仓存商品SKU]
    end

    subgraph B[业务单据层]
        D1[采购单]
        D2[租赁订单]
        D3[售卖订单]
        D4[维修单]
        D5[调拨单]
        D6[处置单]
    end

    subgraph C[库存凭证层]
        R1[入库单]
        R2[出库单]
        R3[出入库明细]
    end

    subgraph D[资产层]
        A1[资产]
        A2[资产状态]
        A3[资产流水]
    end

    subgraph E[运营投影层]
        O1[运营SPU]
        O2[运营SKU]
        O3[可售/可租库存]
    end

    S1 --> D1
    W1 --> R1
    W1 --> R2
    P1 --> P2
    P2 --> D1
    D1 --> R1
    D2 --> R2
    D2 --> R1
    D3 --> R2
    D4 --> R2
    D4 --> R1
    D5 --> R2
    D5 --> R1
    D6 --> R2
    R1 --> R3
    R2 --> R3
    R3 --> A1
    A1 --> A2
    A1 --> A3
    P2 --> O2
    O1 --> O2
    A2 --> O3
    O2 --> O3

4.1 主数据层

主数据层承载业务对象的基础定义,不表达具体交易结果。

  • 供应商 作为采购来源。
  • 仓库 作为库存归属位置。
  • 仓存SPU 作为商品主数据。
  • 仓存商品SKU 作为库存承载实体,粒度为 规格组合 + 成色

4.2 业务单据层

业务单据层表达业务意图和业务过程。

  • 采购单 表达采购意图和到货进度。
  • 租赁订单售卖订单维修单调拨单处置单 作为库存变化的业务来源。
  • 业务单据通过对应出入库单落到账面库存和资产状态。

4.3 库存凭证层

库存凭证层记录库存变化事实。

  • 入库单 记录资产进入仓库或重新回到可管理库存的过程。
  • 出库单 记录资产离开仓库或从可管理库存中移出的过程。
  • 出入库明细 记录资产级变化明细,并作为库存流水视图的底层来源。

4.4 资产层

资产层记录单台设备实例的全生命周期。

  • 每台设备对应一条 资产 记录。
  • 资产状态 表达设备当前业务状态。
  • 资产流水 记录资产生命周期中的状态、位置、持有人和归属变化。

4.5 销售投影层

销售投影层不直接维护库存事实。

  • 运营SPU / 运营SKU 读取仓存商品与资产聚合结果。
  • 可售/可租库存 由资产状态、仓库、仓存商品 SKU 聚合计算得到。

5. 仓存模型

5.1 结构图

flowchart TD
    M[商户] --> SUP[供应商]
    M --> WH[仓库]
    M --> SPU[仓存SPU]
    SPU --> SKU[仓存商品SKU<br/>规格组合 + 成色]
    SKU --> ASSET[资产 Asset]

    SPU --> MSPU[运营SPU]
    SKU --> MSKU[运营SKU]
    ASSET --> STOCK[库存统计]
    STOCK --> MSKU

    SUP --> PO[采购单]
    PO --> SKU
    WH --> ASSET

5.2 仓存SPU

仓存SPU 表示商品主数据,包含:

  • 商品名称
  • 品牌
  • 型号
  • 分类
  • 参数
  • 成色规则
  • 规格属性定义

5.3 仓存商品SKU

仓存商品SKU 表示库存承载实体,粒度为 规格组合 + 成色,包含:

  • 颜色
  • 容量
  • 版本
  • 其他规格属性组合
  • 成色

示例:

  • iPhone 16 Pro / 黑色 / 256GB / 99新
  • iPhone 16 Pro / 黑色 / 256GB / 95新

仓存商品SKU 承接以下职责:

  • 作为库存统计口径
  • 作为采购、出入库、资产归属的库存维度
  • 作为运营库存映射来源
  • 承接归还质检后成色变化带来的库存迁移

5.4 资产 Asset

资产 表示单台设备实例,包含:

  • 资产 ID
  • SN
  • IMEI
  • 当前仓库
  • 当前状态
  • 当前持有人
  • 关联采购单
  • 关联仓存商品 SKU

6. 单据流转

6.1 总体流转

flowchart TD
    P0[采购单 DRAFT] -->|确认采购| P1[采购单 APPROVED]
    P1 -->|商户端发起采购入库| I1[采购入库单 PURCHASE_IN]
    I1 -->|录入实收信息\n数量/SN/IMEI等| I2[完成采购入库操作]
    I2 -->|同步给WMS| WMS1[WMS处理数据]
    WMS1 -->|生成资产编号并回传| WMS2[回传资产信息]
    WMS2 --> A1[资产建档/补全资产编号]
    A1 --> A2[资产状态 IN_STOCK]
    A2 --> P2[采购单 PARTIAL_RECEIVED 或 RECEIVED]

    A2 -->|租赁发货| O1[租赁出库单 RENTAL_OUT]
    O1 --> R1[资产状态 RENTED]
    A2 -->|售卖发货| O8[销售出库单 SALE_OUT]
    O8 --> A12[OWNED_BY_CUSTOMER]

    R1 -->|客户归还| I3[归还入库单 RETURN_IN]
    I3 --> Q1[质检与成色判定]
    Q1 --> A3[回到 IN_STOCK]

    R1 -->|租赁退货| I6[退货入库单 RETURN_BACK_IN]
    I6 --> Q2[质检与成色判定]
    Q2 --> A11[回到 IN_STOCK]

    A12 -->|售卖退货| I7[退货入库单 RETURN_BACK_IN]
    I7 --> Q3[质检与成色判定]
    Q3 --> A13[回到 IN_STOCK]

    R1 -->|客户买断| O4[买断出库单 SALE_OUT]
    O4 --> A7[OWNED_BY_CUSTOMER]

    R1 -->|到期赠送客户| O6[赠送出库单 GIFT_OUT]
    O6 --> A9[OWNED_BY_CUSTOMER]

    A2 -->|发起调拨| O2[调拨出库单 TRANSFER_OUT]
    O2 --> I4[调拨入库单 TRANSFER_IN]
    I4 --> A4[更新当前仓库]

    A2 -->|送修| O3[维修出库单 MAINTENANCE_OUT]
    O3 --> A5[资产状态 MAINTENANCE]
    A5 -->|维修返库| I5[维修入库单 MAINTENANCE_IN]
    I5 --> A6[回到 IN_STOCK]

    A2 -->|报废| O5[报废出库单 SCRAP_OUT]
    O5 --> A8[SCRAPPED]

    A2 -->|盘亏| O7[盘亏出库单 LOSS_OUT]
    O7 --> A10[DISPOSED]

6.2 采购入库链路

  1. 商户端创建采购单,采购单状态为 DRAFT
  2. 商户端确认采购,采购单状态变为 APPROVED
  3. 商户端基于采购单创建 PURCHASE_IN 采购入库单。
  4. 商户端在采购入库单中录入实收数量、SN、IMEI 等收货信息。
  5. 系统将采购入库结果同步给 WMS。
  6. WMS 处理入库数据,生成资产编号并回传资产信息。
  7. 系统创建或补全资产档案,资产状态进入 IN_STOCK
  8. 系统根据实收结果更新采购单为 PARTIAL_RECEIVEDRECEIVED

6.3 租赁归还与退货链路

  1. 租赁发货生成 RENTAL_OUT 租赁出库单。
  2. 出库完成后,资产状态变为 RENTED
  3. 客户正常归还生成 RETURN_IN 归还入库单。
  4. 如发生租赁退货或售卖退货场景,生成 RETURN_BACK_IN 入库单。
  5. 商户端完成质检与成色判定。
  6. 质检通过后,资产回到 IN_STOCK,并根据质检结果归属到对应 仓存商品SKU

6.4 售卖、买断、赠送与处置链路

  • 在库资产售卖发货生成 SALE_OUT,资产状态变为 OWNED_BY_CUSTOMER
  • 租赁中的资产客户买断生成 SALE_OUT,资产状态变为 OWNED_BY_CUSTOMER
  • 到期赠送客户生成 GIFT_OUT,资产状态变为 OWNED_BY_CUSTOMER
  • 报废生成 SCRAP_OUT,资产状态变为 SCRAPPED
  • 盘亏生成 LOSS_OUT,资产状态变为 DISPOSED

6.5 调拨与维修链路

  • 调拨由 TRANSFER_OUTTRANSFER_IN 共同表达,调拨完成后更新资产当前仓库。
  • 维修出库生成 MAINTENANCE_OUT,资产状态变为 MAINTENANCE
  • 维修返库生成 MAINTENANCE_IN,资产状态回到 IN_STOCK

7. 状态模型

7.1 采购单状态

状态含义
DRAFT草稿
APPROVED已确认采购
PARTIAL_RECEIVED部分收货
RECEIVED全部收货
CANCELLED已取消

采购单状态只描述采购业务状态和到货进度,不承载资产级收货明细。

7.2 出入库单状态

状态含义
PENDING待处理
IN_PROGRESS处理中
COMPLETED已完成
CANCELLED已取消

出入库单状态用于描述库存凭证的执行进度和完成结果。

7.3 资产状态

状态含义
IN_STOCK在库
RENTED已租出
MAINTENANCE维修中
SCRAPPED已报废
DISPOSED已处置
OWNED_BY_CUSTOMER已归属客户

资产状态只表达设备当前业务状态。调拨中、处理中、同步中等过程状态归属于业务单据、出入库单或同步任务。

8. 出入库类型

8.1 入库类型

类型业务含义来源
PURCHASE_IN采购入库采购单
RETURN_IN归还入库租赁订单
RETURN_BACK_IN退货入库租赁订单/售卖订单/退货单
TRANSFER_IN调拨入库调拨单
MAINTENANCE_IN维修返库维修单
ADJUSTMENT_IN盘盈入库盘点/调整

8.2 出库类型

类型业务含义来源
RENTAL_OUT租赁出库租赁订单
SALE_OUT销售出库售卖订单/买断
TRANSFER_OUT调拨出库调拨单
MAINTENANCE_OUT维修出库维修单
LOSS_OUT盘亏出库盘点/调整
SCRAP_OUT报废出库处置单
GIFT_OUT赠送出库租赁到期赠送

9. 页面职责

9.1 采购管理页

采购管理页负责采购业务单管理:

  • 新建采购单
  • 编辑草稿采购单
  • 确认采购
  • 查看采购进度
  • 跳转查看关联入库单

采购管理页不承载完整资产入库执行,不维护复杂 SN/IMEI 明细。

9.2 采购详情页

采购详情页负责展示采购单全量业务信息:

  • 采购单基础信息
  • 采购商品明细
  • 每个 SKU 的采购数量和已收数量
  • 关联入库单列表或最近一张采购入库单

采购详情页提供以下操作入口:

  • 确认采购
  • 去收货/采购入库
  • 查看入库单
  • 查看资产

9.3 出入库管理页

出入库管理页负责库存凭证总账:

  • 统一查看出库单和入库单
  • 按出入库类型筛选库存流转记录
  • 查看库存凭证状态、数量、关联单据和操作人
  • 进入出入库详情页查看资产级明细

9.4 出入库详情页

出入库详情页负责单张库存凭证的详情和执行:

  • 展示单据基础信息
  • 展示资产级明细
  • 展示操作日志
  • 在采购入库场景下录入实收信息、SN、IMEI
  • 在归还入库、退货入库场景下录入收货结果、质检结论和成色判定
  • 提交采购入库后同步 WMS
  • 展示 WMS 同步结果、异常信息和资产编号回传情况

9.5 资产管理页

资产管理页负责单台设备维度的管理:

  • 查看资产列表
  • 查看资产详情与资产流水
  • 编辑 SN、IMEI 等补充信息
  • 发起调拨
  • 发起送修
  • 发起处置
  • 查看关联出入库单

资产管理作为“单台设备”的操作入口;出入库管理作为“库存凭证”的查询和执行入口。

10. 数据关系

10.1 核心关系

  • 一个 供应商 可关联多个 采购单
  • 一个 仓存SPU 下有多个 仓存商品SKU
  • 一个 采购单 可关联多张 采购入库单
  • 一张 出入库单 可关联多条 资产明细
  • 一个 仓存商品SKU 下有多个 资产
  • 一个 资产 同一时间只归属一个 仓存商品SKU 和一个当前仓库。
  • 一个 运营SKU 的库存来源于一个或多个 仓存商品SKU 的资产聚合结果。

10.2 库存计算

库存以资产状态和仓存商品 SKU 聚合得到:

  • 仓存商品SKU总库存 = 该 SKU 下所有有效资产数量
  • 仓存商品SKU可用库存 = 该 SKU 下状态为 IN_STOCK 的资产数量
  • 运营SKU可售/可租库存 = 关联仓存商品 SKU 的可用库存投影

库存流水由 出入库单 + 出入库明细 加工展示,底层以库存凭证为准。

10.3 质检与流转

设备回库后必须经过质检流程方可恢复为可用库存。在这个过程中,入库单状态与质检任务状态紧密联动。

flowchart TD
    A[入库单创建<br/>RETURN_IN / RETURN_BACK_IN / MAINTENANCE_IN<br/>入库单状态: PENDING 待处理] --> B[生成质检任务<br/>状态: PENDING_RECEIPT 待收货]
    B --> B0[仓库确认收货]
    B0 --> E_REC{收货结果}
    E_REC -->|收货失败| Z[系统取消相关业务流程<br/>如: 取消退款]
    Z --> Z1[入库单状态 → CANCELLED 已取消<br/>资产状态保持不变]
    E_REC -->|收货成功| ACTION{处理方式}
    ACTION -->|需质检| B01[状态: PENDING_QC 待质检]
    ACTION -->|无需质检直接入库| H1[直接指定入库仓库与成色]
    H1 --> J
    B01 --> B1[根据资产仓存SPU<br/>自动匹配质检题库]
    B1 --> B2{是否匹配到题库?}
    B2 -->|是| C[填充题库质检项模板]
    B2 -->|否| C1[手动选择模板]
    C --> D[状态: IN_PROGRESS 质检中<br/>商户端执行质检<br/>入库单状态: IN_PROGRESS 处理中]
    C1 --> D
    D --> E{质检结果}
    E -->|通过| F[状态: QC_PASSED 质检通过<br/>成色判定]
    F --> G{成色是否变化?}
    G -->|是| H[迁移至新仓存商品SKU]
    G -->|否| I[保持原仓存商品SKU]
    H --> J[资产状态 → IN_STOCK]
    I --> J
    J --> K[入库单状态 → COMPLETED 已完成]
    K --> L[更新库存投影]
    E -->|不通过| M[状态: QC_FAILED 质检不通过]
    M --> Z
  • 成色迁移:归还质检后如发生成色变化,资产归属的 仓存商品SKU 随质检结果迁移。
  • 状态流转

    • 入库单创建时初始状态为 PENDING(待处理)。
    • 当商户端开始执行质检操作时,入库单状态更新为 IN_PROGRESS(处理中)。
    • 若质检不通过或收货失败,相关业务流程被取消,入库单状态更新为 CANCELLED(已取消),资产状态保持质检前状态不变。
    • 若质检通过并完成入库,入库单状态更新为 COMPLETED(已完成),资产状态随单据流转更新为 IN_STOCK(在库)。

10.4 成色变化

归还质检或退货质检后如发生成色变化,资产归属的 仓存商品SKU 随质检结果迁移。

示例:

  • 归还前:iPhone 16 Pro / 黑色 / 256GB / 99新
  • 质检后:iPhone 16 Pro / 黑色 / 256GB / 95新

迁移结果体现在资产流水、归还入库明细、退货入库明细和库存聚合中。

11. WMS 集成

11.1 集成定位

WMS 作为外部仓储处理系统,负责:

  • 接收采购入库结果
  • 处理入库数据
  • 生成资产编号
  • 回传资产信息和处理结果
  • 返回同步异常信息

商户端负责业务操作入口和数据录入;WMS 负责数据处理和资产编号生成。

11.2 采购入库同步

采购入库提交后,系统向 WMS 同步以下信息:

  • 采购单号
  • 采购入库单号
  • 供应商
  • 仓库
  • 仓存商品 SKU
  • 实收数量
  • SN
  • IMEI
  • 成色

WMS 回传以下信息:

  • 资产 ID
  • 资产处理状态
  • SN
  • IMEI
  • 仓存商品 SKU
  • 异常原因
  • 同步结果

11.3 同步状态

状态含义
NOT_SYNCED未同步
SYNCING同步中
SYNCED已同步
FAILED同步失败

同步状态作为出入库单或资产的逻辑字段,用于跟踪 WMS 处理结果。

12. 落地口径

12.1 模块口径

  • 采购管理:负责采购业务单。
  • 出入库管理:负责库存凭证。
  • 资产管理:负责单台设备与生命周期。
  • WMS:负责数据处理、同步和资产编号生成。
  • 运营商品:读取库存投影,不直接维护库存事实。

12.2 页面入口口径

  • 采购单详情 跳转 去收货/采购入库
  • 采购单详情 跳转 查看采购入库单
  • 出入库详情 跳转 查看相关资产
  • 资产详情 跳转 查看关联出入库单

12.3 数据落点口径

  • 采购意图落在 采购单
  • 收货执行落在 采购入库单
  • 资产编号由 WMS 生成并回传。
  • 资产当前状态落在 资产
  • 库存变化事实落在 出入库单 + 出入库明细
  • 前台库存落在 运营SKU库存投影

13. 架构结论

Phase 2 采购、仓储、资产域采用以下架构:

  • 一套主数据:供应商、仓库、仓存SPU、仓存商品SKU
  • 一套业务单据:采购、租赁、售卖、维修、调拨、处置
  • 一套库存凭证:出入库单及明细
  • 一套资产实例:资产、状态、流水
  • 一套库存投影:面向运营商品的可售与可租库存

该架构将采购意图、库存凭证、资产生命周期和运营库存投影分层表达,使采购入库、出入库管理、资产管理和 WMS 集成具备清晰的数据边界与页面边界。


For you, a thousand times over!