# manufacturing_data_model_v1.0.0

## 需求概述

本模型基于 `module/` 目录下 52 份业务导出 Excel，面向制造企业端到端经营与生产分析（线索→商机→合同→订单→采购/生产→入出库→质检→开票/收付款/核销→资金流→分佣），抽象形成可扩展的分析型数据模型。

设计目标：

- 兼容 ISA-95 / IEC 62264：区分 Level 3（生产执行）与 Level 4（经营管理）数据边界
- 分析型优先：星型模型 + 事实星座（Conformed Dimensions）
- 主数据一致性：维度表按 SCD Type 2 管理（`RowValidFrom/RowValidTo/IsCurrent`）
- 事务可追溯：事实表以 `EventTimeUTC` 作为事件时间分区/水印字段

范围说明：

- 当前 Excel 以“编号/名称”作为主要业务键（例如 `产品编码`、`合同编号`、`工单编号`）。分析层统一引入代理主键 `{Entity}Id`。
- 多数单据缺少“行明细”粒度（例如销售订单/采购订单仅见单头字段），模型保留单头事实为主，后续如补充明细可平滑扩展。

## 术语表

| 术语 | 含义 |
|---|---|
| 业务键（Business Key） | 来自源系统的编码/编号/单号等唯一标识，如 `ProductCode`、`ContractNumber` |
| 代理键（Surrogate Key） | 分析层自增/雪花主键，如 `ProductId` |
| SCD Type 2 | 维度历史保留：通过 `RowValidFrom/RowValidTo/IsCurrent` 记录有效期 |
| 退化维度（Degenerate Dimension） | 直接保存在事实表中的单据号、状态等维度属性 |
| EventTimeUTC | 统一事件时间（UTC），作为事实表分区/增量水印字段 |

## 主题域总览（ISA-95 视角）

| 主题域 | ISA-95 层级 | 覆盖 Excel |
|---|---|---|
| 主数据（产品/BOM/工艺/资源） | L3/L4 共用 | 产品列表、物料清单、工艺路线、工序、仓库、供应商、客户、设备、质检原因 |
| 生产执行 | Level 3 | 工单、任务、报工、装配工单 |
| 质量 | Level 3 | 质检记录、质检不通过原因 |
| 库存与仓储作业 | Level 3 | 出入库明细、盘点、调拨、其他出入库、报废 |
| 销售与履约 | Level 4 | 销售报价、销售订单、销售出库、销售退货 |
| 采购与供应 | Level 4 | 采购申请、采购订单、采购入库、采购退货 |
| 财务与资金 | Level 4 | 发票、回款、收款/付款、预收/预付、核销、资金流向、资金转账、其他收支、分佣 |
| CRM（市场到合同） | Level 4 | 线索、商机、合同 |

## 实体清单（维度/事实）

维度（SCD2）：

- `DimPerson`（人员维度）
- `DimProduct`（产品维度）
- `DimCustomer`（客户维度）
- `DimSupplier`（供应商维度）
- `DimWarehouse`（仓库维度）
- `DimBom`（物料清单维度）
- `DimRouting`（工艺路线维度）
- `DimOperation`（工序维度）
- `DimEquipment`（设备维度）
- `DimQcReason`（质检不通过原因维度）
- `DimContract`（合同维度，可选：合同也可作为事实）

事实（按 `EventTimeUTC` 分区）：

- `FactInventoryMovement`（出入库流水事实）
- `FactWorkOrder`（工单事实）
- `FactOperationTask`（工序任务事实）
- `FactLaborReport`（报工事实）
- `FactQualityInspection`（质检事实）
- `FactSalesOrder`（销售订单事实）
- `FactSalesShipment`（销售出库事实）
- `FactSalesReturn`（销售退货事实）
- `FactPurchaseRequest`（采购申请事实）
- `FactPurchaseOrder`（采购订单事实）
- `FactPurchaseReceipt`（采购入库事实）
- `FactPurchaseReturn`（采购退货事实）
- `FactInventoryTransfer`（库存调拨事实）
- `FactInventoryCount`（库存盘点事实）
- `FactScrap`（报废事实）
- `FactArReceipt`（应收收款事实）
- `FactApPayment`（应付付款事实）
- `FactInvoice`（开票申请事实）
- `FactWriteOff`（核销事实）
- `FactCashFlow`（资金流水事实）
- `FactCommission`（分佣事实）
- `FactLead`（线索事实）
- `FactOpportunity`（商机事实）
- `FactProductionPlan`（生产计划/装配工单汇总事实，可选）

## ER 图（事实星座）

```mermaid
erDiagram
  DimProduct ||--o{ FactInventoryMovement : "by_product (关联产品)"
  DimWarehouse ||--o{ FactInventoryMovement : "by_warehouse (关联仓库)"
  DimBom ||--o{ FactInventoryMovement : "by_bom (关联BOM)"
  DimPerson ||--o{ FactInventoryMovement : "operated_by (操作人)"

  DimProduct ||--o{ FactWorkOrder : "produces (生产产品)"
  DimSupplier ||--o{ FactWorkOrder : "outsourced_to (委外供应商)"
  DimRouting ||--o{ FactWorkOrder : "uses_routing (使用工艺)"
  DimPerson ||--o{ FactWorkOrder : "managed_by (生产主管)"

  DimOperation ||--o{ FactOperationTask : "executes (执行工序)"
  DimProduct ||--o{ FactOperationTask : "for_product (关联产品)"
  DimPerson ||--o{ FactOperationTask : "worker (执行工人)"

  DimProduct ||--o{ FactLaborReport : "reports_on (报工产品)"
  DimOperation ||--o{ FactLaborReport : "at_operation (报工工序)"
  DimPerson ||--o{ FactLaborReport : "reported_by (报工人员)"

  DimQcReason ||--o{ FactQualityInspection : "fail_reason (不合格原因)"
  DimProduct ||--o{ FactQualityInspection : "inspects (质检产品)"
  DimPerson ||--o{ FactQualityInspection : "inspected_by (质检员)"

  DimCustomer ||--o{ FactSalesOrder : "buys (购买)"
  DimPerson ||--o{ FactSalesOrder : "sold_by (销售员)"
  DimCustomer ||--o{ FactSalesShipment : "receives (收货)"
  DimPerson ||--o{ FactSalesShipment : "shipped_by (发货员)"
  DimCustomer ||--o{ FactSalesReturn : "returns (退货)"
  DimPerson ||--o{ FactSalesReturn : "handled_by (处理人)"

  DimSupplier ||--o{ FactPurchaseOrder : "supplies (供应)"
  DimPerson ||--o{ FactPurchaseOrder : "purchased_by (采购员)"
  DimSupplier ||--o{ FactPurchaseReceipt : "delivers (送货)"
  DimPerson ||--o{ FactPurchaseReceipt : "received_by (收货员)"
  DimSupplier ||--o{ FactPurchaseReturn : "takes_back (退回)"

  DimContract ||--o{ FactInvoice : "invoiced_for (开票合同)"
  DimContract ||--o{ FactArReceipt : "cash_in (收款合同)"
  DimContract ||--o{ FactApPayment : "cash_out (付款合同)"
  DimContract ||--o{ FactWriteOff : "writeoff (核销合同)"
  DimPerson ||--o{ FactContract : "owned_by (合同负责人)"
  DimPerson ||--o{ FactLead : "owned_by (线索负责人)"
  DimPerson ||--o{ FactOpportunity : "owned_by (商机负责人)"
```

## 业务数据流转全景图

本流程图展示了从商机线索到最终产品交付的端到端数据流转过程，以及各环节涉及的关键数据实体。

```mermaid
flowchart TD
    %% 节点样式定义
    classDef process fill:#e1f5fe,stroke:#01579b,stroke-width:2px;
    classDef decision fill:#fff9c4,stroke:#fbc02d,stroke-width:2px;
    classDef table fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1px,stroke-dasharray: 5 5;

    %% 1. CRM阶段
    subgraph Stage_CRM [CRM与销售阶段]
        direction TB
        Node_Lead[("线索处理<br>In: FactLead<br>Logic: 线索清洗/转化")]:::process
        Node_Opp[("商机确认<br>In: FactLead<br>Out: FactOpportunity")]:::process
        Decision_Win{商机赢单?}:::decision
        Node_Contract[("合同签订<br>In: FactOpportunity<br>Out: DimContract")]:::process
        Node_SO[("销售订单生成<br>In: DimContract<br>Out: FactSalesOrder")]:::process
        
        Table_Lead[("FactLead")]:::table
        Table_Opp[("FactOpportunity")]:::table
        Table_SO[("FactSalesOrder")]:::table
    end

    %% 2. 计划阶段
    subgraph Stage_Plan [计划与排程阶段]
        direction TB
        Node_MPS[("主生产计划(MPS)<br>In: FactSalesOrder<br>Logic: 需求合并/产能平衡<br>Out: FactProductionPlan")]:::process
        Node_MRP[("MRP运算/BOM展开<br>In: FactProductionPlan, DimBom<br>Logic: 净需求计算<br>Out: FactWorkOrder(Planned)")]:::process
        Decision_MakeBuy{自制/外购?}:::decision
        Node_PR[("采购申请生成<br>Out: FactPurchaseRequest")]:::process
        
        Table_Plan[("FactProductionPlan")]:::table
        Table_Bom[("DimBom")]:::table
        Table_Stock[("FactInventoryMovement<br>(当前库存)")]:::table
    end

    %% 新增：3. 采购与供应阶段
    subgraph Stage_Procure [采购与供应阶段]
        direction TB
        Node_PO[("采购订单(PO)<br>In: FactPurchaseRequest<br>Out: FactPurchaseOrder")]:::process
        Node_Receive[("收货与IQC<br>Logic: 验收/质检<br>Out: FactQualityInspection")]:::process
        Decision_IQC{IQC合格?}:::decision
        Node_Return[("采购退货<br>Out: FactPurchaseReturn")]:::process
        Node_Mat_In[("原材料入库<br>Logic: 批次录入/更新库存<br>Out: FactPurchaseReceipt<br>FactInventoryMovement")]:::process
        Node_AP[("应付挂账(AP)<br>Logic: 三单匹配<br>Out: FactApPayment")]:::process

        Table_PO[("FactPurchaseOrder")]:::table
        Table_Receipt[("FactPurchaseReceipt")]:::table
    end

    %% 4. 生产执行阶段 (原 Stage_Make)
    subgraph Stage_Make [生产执行阶段]
        direction TB
        Node_WO_Release[("工单下达<br>In: FactWorkOrder(Planned)<br>Logic: 物料齐套/锁定资源<br>Out: FactWorkOrder(Released)")]:::process
        Node_Task[("工序任务派工<br>In: FactWorkOrder, DimRouting<br>Out: FactOperationTask")]:::process
        Node_Labor[("生产报工<br>In: FactOperationTask<br>Logic: 投入/产出/工时记录<br>Out: FactLaborReport")]:::process
        
        Table_WO[("FactWorkOrder")]:::table
        Table_Task[("FactOperationTask")]:::table
        Table_Labor[("FactLaborReport")]:::table
    end

    %% 5. 质量与入库阶段 (原 Stage_QC)
    subgraph Stage_QC [质量与仓储阶段]
        direction TB
        Node_QC[("成品检验(FQC)<br>In: FactLaborReport<br>Logic: 检验标准比对<br>Out: FactQualityInspection")]:::process
        Decision_Pass{质检合格?}:::decision
        Node_Scrap[("报废处理<br>Logic: 记录不良原因<br>Out: FactScrap")]:::process
        Node_FG_In[("成品入库<br>In: FactWorkOrder(Closed)<br>Logic: 更新库存余额<br>Out: FactInventoryMovement(IN)")]:::process
        
        Table_QC[("FactQualityInspection")]:::table
        Table_Inv[("FactInventoryMovement")]:::table
    end

    %% 6. 交付阶段 (原 Stage_Deliver)
    subgraph Stage_Deliver [交付阶段]
        direction TB
        Node_Ship[("销售发货<br>In: FactSalesOrder, FactInventoryMovement<br>Logic: 拣货/出库扣减<br>Out: FactSalesShipment")]:::process
        Node_End((交付完成))
        
        Table_Ship[("FactSalesShipment")]:::table
    end

    %% 新增：7. 财务与资金阶段
    subgraph Stage_Finance [财务与资金阶段]
        direction TB
        %% AR Flow
        Node_Invoice[("销售开票<br>In: FactSalesShipment<br>Out: FactInvoice")]:::process
        Node_ArRec[("销售收款<br>Out: FactArReceipt")]:::process
        Node_ArOff[("应收核销<br>Logic: 核销发票与收款<br>Out: FactWriteOff")]:::process
        
        %% AP Flow
        Node_ApPay[("采购付款<br>Out: FactApPayment")]:::process
        Node_ApOff[("应付核销<br>Logic: 核销应付与付款<br>Out: FactWriteOff")]:::process

        %% Cash Flow
        Node_Cash[("资金流水<br>Logic: 账户变动记录<br>Out: FactCashFlow")]:::process

        Table_Inv[("FactInvoice")]:::table
        Table_Ar[("FactArReceipt")]:::table
        Table_Ap[("FactApPayment")]:::table
        Table_Cash[("FactCashFlow")]:::table
    end

    %% 关系连线
    Node_Lead --> Node_Opp
    Node_Opp --> Decision_Win
    Decision_Win -- Yes --> Node_Contract
    Node_Contract --> Node_SO
    Node_SO --> Node_MPS
    
    Node_MPS --> Node_MRP
    Node_MRP --> Decision_MakeBuy
    Decision_MakeBuy -- 外购 --> Node_PR
    Decision_MakeBuy -- 自制 --> Node_WO_Release
    
    %% 采购流程连线
    Node_PR --> Node_PO
    Node_PO --> Node_Receive
    Node_Receive --> Decision_IQC
    Decision_IQC -- No --> Node_Return
    Decision_IQC -- Yes --> Node_Mat_In
    Node_Mat_In --> Node_AP
    Node_Mat_In --> Node_WO_Release

    Node_WO_Release --> Node_Task
    Node_Task --> Node_Labor
    Node_Labor --> Node_QC
    
    Node_QC --> Decision_Pass
    Decision_Pass -- No --> Node_Scrap
    Decision_Pass -- Yes --> Node_FG_In
    
    Node_FG_In --> Node_Ship
    Node_Ship --> Node_End

    %% 财务流程连线
    Node_Ship --> Node_Invoice
    Node_Invoice --> Node_ArRec
    Node_ArRec --> Node_ArOff
    
    Node_AP --> Node_ApPay
    Node_ApPay --> Node_ApOff

    Node_ArRec --> Node_Cash
    Node_ApPay --> Node_Cash

    %% 数据表关联（虚线）
    Table_Lead -.-> Node_Lead
    Node_Opp -.-> Table_Opp
    Node_Contract -.-> Table_SO
    Table_SO -.-> Node_MPS
    Node_MPS -.-> Table_Plan
    Table_Plan -.-> Node_MRP
    Table_Bom -.-> Node_MRP
    Table_Stock -.-> Node_MRP
    
    Node_PR -.-> Table_PO
    Node_PO -.-> Table_PO
    Node_Mat_In -.-> Table_Receipt
    Node_Mat_In -.-> Table_Inv

    Node_WO_Release -.-> Table_WO
    Node_Task -.-> Table_Task
    Node_Labor -.-> Table_Labor
    Node_QC -.-> Table_QC
    Node_Receive -.-> Table_QC
    Node_FG_In -.-> Table_Inv
    Node_Ship -.-> Table_Ship

    Node_Invoice -.-> Table_Inv
    Node_ArRec -.-> Table_Ar
    Node_ApPay -.-> Table_Ap
    Node_Cash -.-> Table_Cash
```

### 关键业务规则说明

1.  **商机转订单**：
    *   当 `FactOpportunity` 状态确认为“赢单”且 `DimContract` 签订后，系统生成 `FactSalesOrder`。
    *   此时确立销售对象（Customer）、产品（Product）及交付日期（DeliveryDate）。

2.  **计划运算 (MPS/MRP)**：
    *   `FactProductionPlan` 汇总销售订单需求，结合 `FactInventoryMovement` 计算出的当前库存快照，进行净需求计算。
    *   利用 `DimBom` 展开物料清单，区分自制件（生成 `FactWorkOrder`）与采购件（生成 `FactPurchaseRequest`）。

3.  **采购闭环管理**：
    *   **采购订单 (PO)**：`FactPurchaseOrder` 经审批后生效，明确供应商、价格、交期。
    *   **入库验收 (IQC)**：物料到达后必须进行 IQC（`FactQualityInspection`），合格品方可办理入库（`FactPurchaseReceipt`）并增加库存（`FactInventoryMovement`）。
    *   **财务对接 (AP)**：系统自动匹配 PO（采购单）、Receipt（入库单）和供应商发票，生成应付账款（`FactApPayment`），确保“三单一致”。
    *   **供应商管理**：IQC 合格率与交期准确率回写至 `DimSupplier`，用于季度评估与优选名录维护。

4.  **生产执行闭环**：
    *   工单下达前需校验物料齐套性（依赖采购入库的 `FactInventoryMovement`）。
    *   现场工人通过 `FactLaborReport` 上报实际投入工时与产出数量，该数据是成本核算的核心依据。

5.  **质量控制 (FQC)**：
    *   `FactQualityInspection` 记录成品检验结果。
    *   质检合格触发成品入库，不合格则根据原因（`DimQcReason`）触发返工或报废（`FactScrap`）。

6.  **库存与交付**：
    *   所有实物库存变动（入库、出库、报废）统一写入 `FactInventoryMovement`，确保库存台账的一致性。
    *   `FactSalesShipment` 记录发货动作，作为收入确认（Revenue Recognition）的前置事件。

7.  **财务资金流转**：
    *   **应收 (AR)**：销售发货后生成发票申请（`FactInvoice`），回款后（`FactArReceipt`）进行核销（`FactWriteOff`）。
    *   **应付 (AP)**：采购入库确认应付后（`FactApPayment` 中的挂账状态），执行付款（`FactApPayment` 中的实付）并核销。
    *   **资金 (Cash)**：所有收付款动作最终汇总至 `FactCashFlow`，提供实时的资金日记账分析。

## 表结构详设

类型说明（可按目标数据库微调）：

- `bigint`：代理主键/外键
- `varchar(n)`：业务键、名称、状态等
- `decimal(18,4)`：数量与金额（金额可按需要改 `decimal(18,2)`）
- `datetime2`：统一时间字段（UTC）

### DimPerson（人员维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| PersonId | bigint | N | autoincr | 主键 | |
 | PersonCode | varchar(64) | N |  | 人员编码（业务键） | 来源：用户ID/工号 | 
 | PersonName | varchar(255) | N |  | 姓名 |  | 
 | Department | varchar(100) | Y |  | 部门 |  | 
 | Position | varchar(100) | Y |  | 职位/岗位 |  | 
 | Phone | varchar(32) | Y |  | 电话 |  | 
 | Email | varchar(100) | Y |  | 邮箱 |  | 
 | Status | varchar(20) | Y |  | 状态 | ACTIVE, INACTIVE | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |
| Birthday | date | Y | | 出生日期 | |
| Employment_day | date | Y | | 入职日期 | |
| Job_description | varchar(255) | Y | | 职务描述 | |

### DimProduct（产品维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| ProductId | bigint | N | autoincr | 主键 | |
 | ProductCode | varchar(64) | N |  | 产品编码（业务键） | 来源：产品列表.产品编码 | 
 | ProductName | varchar(255) | N |  | 产品名称 |  | 
 | ProductSpec | varchar(255) | Y |  | 产品规格 |  | 
 | ProductCategory | varchar(100) | Y |  | 产品类别 |  | 
 | ProductType | varchar(100) | Y |  | 产品类型 |  | 
 | UomCode | varchar(16) | Y |  | 主单位 | kg,pcs,L,m | 
 | Brand | varchar(100) | Y |  | 品牌 |  | 
 | Origin | varchar(100) | Y |  | 产地 |  | 
 | TransportCondition | varchar(100) | Y |  | 运输条件 |  | 
 | Barcode | varchar(64) | Y |  | 条形码 |  | 
 | DrawingNumber | varchar(64) | Y |  | 图号 |  | 
 | Material | varchar(100) | Y |  | 材料 |  | 
 | SurfaceTreatment | varchar(100) | Y |  | 表面处理 |  | 
 | MinStockQty | decimal(18,4) | Y |  | 最低库存数量 |  | 
 | SafetyStockQty | decimal(18,4) | Y |  | 安全库存数量 |  | 
 | MaxStockQty | decimal(18,4) | Y |  | 最高库存数量 |  | 
 | SourceSystem | varchar(50) | Y |  | 数据来源 | 来源：数据来源 | 
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### DimCustomer（客户维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| CustomerId | bigint | N | autoincr | 主键 | |
 | CustomerName | varchar(255) | N |  | 客户名称（业务键） | 来源：客户列表.客户名称 | 
 | CustomerSource | varchar(100) | Y |  | 客户来源 |  | 
 | Phone | varchar(32) | Y |  | 手机 |  | 
 | Telephone | varchar(32) | Y |  | 电话 |  | 
 | Email | varchar(100) | Y |  | 邮箱 |  | 
 | CustomerLevel | varchar(50) | Y |  | 客户级别 |  | 
 | Industry | varchar(100) | Y |  | 客户行业 |  | 
 | Address | varchar(500) | Y |  | 详细地址 |  | 
 | IsLocked | bit | Y |  | 锁定状态 | 0,1 | 
 | DealStatus | varchar(50) | Y |  | 成交状态 |  | 
 | LastFollowUpTimeUTC | datetime2 | Y |  | 最后跟进时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### DimSupplier（供应商维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| SupplierId | bigint | N | autoincr | 主键 | |
 | SupplierCode | varchar(64) | N |  | 供应商编码（业务键） | 来源：供应商列表.供应商编码 | 
 | SupplierName | varchar(255) | N |  | 供应商名称 |  | 
 | SupplierCategory | varchar(100) | Y |  | 供应商分类 |  | 
 | SupplierLevel | varchar(50) | Y |  | 供应商级别 |  | 
 | Address | varchar(500) | Y |  | 地址 |  | 
 | DefaultCurrencyCode | varchar(16) | Y |  | 默认币别 | CNY,USD,EUR | 
 | SettlementTerm | varchar(50) | Y |  | 结算期限 |  | 
 | ContractExpiryDateUTC | datetime2 | Y |  | 合同到期日（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### DimWarehouse（仓库维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| WarehouseId | bigint | N | autoincr | 主键 | |
 | WarehouseCode | varchar(64) | N |  | 仓库编码（业务键） | 来源：仓库列表.仓库编码 | 
 | WarehouseName | varchar(255) | N |  | 仓库名称 |  | 
 | WarehouseType | varchar(50) | Y |  | 仓库类型 |  | 
 | Status | varchar(20) | Y |  | 仓库状态 | ENABLED,DISABLED | 
 | Address | varchar(500) | Y |  | 仓库地址 |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### DimBom（物料清单维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| BomId | bigint | N | autoincr | 主键 | |
 | BomNumber | varchar(64) | N |  | 清单编号（业务键） | 来源：物料清单.清单编号 | 
 | BomTopic | varchar(100) | Y |  | 清单主题 | 来源：清单主题 | 
| IsPrimary | bit | Y | | 主辅清单标识 | 0,1 |
| LevelNumber | int | Y | | 层级 | |
 | ProductCode | varchar(64) | Y |  | 关联产品编码 | 来源：产品编号 | 
 | UnitUsageQty | decimal(18,4) | Y |  | 单位用量 |  | 
 | UomCode | varchar(16) | Y |  | 产品单位 |  | 
 | SupplierName | varchar(255) | Y |  | 默认供应商（退化属性） | 来源：供应商 | 
| Remark | varchar(500) | Y | | 备注 | |
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### DimRouting（工艺路线维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| RoutingId | bigint | N | autoincr | 主键 | |
 | RoutingNumber | varchar(64) | N |  | 工艺路线编号（业务键） | 来源：工艺路线.工艺路线编号 | 
 | RoutingName | varchar(255) | N |  | 工艺路线名称 |  | 
 | OperationListText | varchar(2000) | Y |  | 工序/工艺路线列表（原文） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### DimOperation（工序维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| OperationId | bigint | N | autoincr | 主键 | |
 | OperationNumber | varchar(64) | N |  | 工序编号（业务键） | 来源：工序.工序编号 | 
 | OperationName | varchar(255) | N |  | 工序名称 |  | 
 | ReportPermission | varchar(50) | Y |  | 报工权限 |  | 
 | ReportRatio | decimal(18,6) | Y |  | 报工数配比 |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### DimEquipment（设备维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| EquipmentId | bigint | N | autoincr | 主键 | |
 | EquipmentNumber | varchar(64) | N |  | 设备编号（业务键） | 来源：设备.设备编号 | 
 | EquipmentName | varchar(255) | N |  | 设备名称 |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### DimQcReason（质检不通过原因维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| QcReasonId | bigint | N | autoincr | 主键 | |
 | QcReasonNumber | varchar(64) | N |  | 不通过原因编号（业务键） | 来源：质检原因.不通过原因编号 | 
 | QcReasonName | varchar(255) | N |  | 不通过原因 |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### DimContract（合同维度）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| ContractId | bigint | N | autoincr | 主键 | |
 | ContractNumber | varchar(64) | N |  | 合同编号（业务键） | 来源：合同.合同编号 | 
 | ContractName | varchar(255) | Y |  | 合同名称 |  | 
 | OwnerId | bigint | Y |  | 负责人 (外键 → DimPerson) |  | 
 | CustomerName | varchar(255) | Y |  | 客户名称（退化） |  | 
 | CustomerId | bigint | Y |  | 关联客户（外键 → DimCustomer） |  | 
 | ContractAmount | decimal(18,4) | Y |  | 合同金额 |  | 
 | OrderTimeUTC | datetime2 | Y |  | 下单时间（UTC） |  | 
| PaidAmount | decimal(18,4) | Y | | 回款金额 | |
| UnpaidAmount | decimal(18,4) | Y | | 未回款金额 | |
| Stage | varchar(50) | Y | | 当前阶段 | |
| Result | varchar(50) | Y | | 结果 | |
 | ContractType | varchar(50) | Y |  | 合同类型 |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| RowValidFrom | datetime2 | N | | SCD2 生效时间（UTC） | |
| RowValidTo | datetime2 | N | | SCD2 失效时间（UTC） | |
| IsCurrent | bit | N | 1 | 是否当前版本 | 0,1 |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactInventoryMovement（出入库流水事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| InventoryMovementId | bigint | N | autoincr | 主键 | |
 | EventTimeUTC | datetime2 | N |  | 出入库事件时间（UTC） | 来源：出入库日期/入库时间/出库时间 | 
 | ProductId | bigint | Y |  | 关联DimProduct (外键 → DimProduct) |  | 
 | WarehouseId | bigint | Y |  | 关联DimWarehouse (外键 → DimWarehouse) |  | 
 | BomId | bigint | Y |  | 关联DimBom (外键 → DimBom) |  | 
| OperatorId | bigint | Y | | 外键 → DimPerson（操作人） | |
|SalesOrderId | bigint | Y | | 关联FactSalesOrder (外键 → FactSalesOrder) |  | 
|PurchaseOrderId | bigint | Y | | 关联FactPurchaseOrder (外键 → FactPurchaseOrder) |  | 
 | DocNumber | varchar(64) | N |  | 出入库单号 | 来源：出入库单号/入库单编号/出库单编号 | 
 | DocType | varchar(30) | N |  | 单据类型 | IN,OUT,TRANSFER,OTHER_IN,OTHER_OUT | 
 | MovementQty | decimal(18,4) | N | 0 | 出入库数量（入为正，出为负） |  | 
| UomCode | varchar(16) | Y | | 单位 | |
| UnitPrice | decimal(18,4) | Y | | 单价 | |
| DiscountUnitPrice | decimal(18,4) | Y | | 折后单价 | |
| Amount | decimal(18,4) | Y | | 总价 | |
| DiscountAmount | decimal(18,4) | Y | | 折后总价 | |
| OnhandQtyAfter | decimal(18,4) | Y | | 发生后库存量（源字段） | |
| ResponsiblePerson | varchar(100) | Y | | 负责人 | |
| AuditStatus | varchar(20) | Y | | 审核状态 | |
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactWorkOrder（工单事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| WorkOrderId | bigint | N | autoincr | 主键 | |
 | WorkOrderNumber | varchar(64) | N |  | 工单编号（退化维度） | 来源：工单编号 | 
 | ProductId | bigint | Y |  | 关联DimProduct (外键 → DimProduct) |  | 
| SupplierId | bigint | Y | | 外键 → DimSupplier（委外时） | |
| RoutingId | bigint | Y | | 外键 → DimRouting | |
| ProductionManagerId | bigint | Y | | 外键 → DimPerson（生产主管） | |
 | PlannedQty | decimal(18,4) | Y |  | 计划生产数 |  | 
 | CompletedQty | decimal(18,4) | Y |  | 完成数 |  | 
| OperationGoodQty | decimal(18,4) | Y | | 工序良品数 | |
| OperationBadQty | decimal(18,4) | Y | | 工序不良品数 | |
| QcGoodQty | decimal(18,4) | Y | | 工单质检良品数 | |
| QcBadQty | decimal(18,4) | Y | | 工单质检不良品数 | |
 | Status | varchar(30) | Y |  | 工单状态 | OPEN,STARTED,CLOSED,SCRAP | 
 | EventTimeUTC | datetime2 | N |  | 工单状态变更/抽取时间（UTC） |  | 
| SourceDocNumber | varchar(64) | Y | | 单据编号（退化） | 来源：单据编号 |
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactOperationTask（工序任务事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| OperationTaskId | bigint | N | autoincr | 主键 | |
| WorkOrderNumber | varchar(64) | N |  | 工单编号（退化维度） | 来源：工单编号 | 
| OperationId | bigint | Y |  | 关联DimOperation (外键 → DimOperation) |  | 
| ProductId | bigint | Y |  | 关联DimProduct (外键 → DimProduct) |  | 
| PlannedStartTimeUTC | datetime2 | Y |  | 计划开始时间（UTC） |  | 
| PlannedEndTimeUTC | datetime2 | Y |  | 计划结束时间（UTC） |  | 
| ActualStartTimeUTC | datetime2 | Y |  | 实际开始时间（UTC） |  | 
| ActualEndTimeUTC | datetime2 | Y |  | 实际结束时间（UTC） |  | 
| PlannedQty | decimal(18,4) | Y |  | 计划数 |  | 
| GoodQty | decimal(18,4) | Y |  | 良品数 |  | 
| BadQty | decimal(18,4) | Y |  | 不良品数 |  | 
| BadReasonText | varchar(500) | Y |  | 不良品项（原文） |  | 
| EventTimeUTC | datetime2 | N |  | 任务事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactLaborReport（报工事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| LaborReportId | bigint | N | autoincr | 主键 | |
 | WorkOrderNumber | varchar(64) | N |  | 工单（退化维度） | 来源：报工列表.工单 | 
| TaskName | varchar(255) | Y | | 任务（退化维度） | 来源：报工列表.任务 |
 | ProductId | bigint | Y |  | 关联DimProduct (外键 → DimProduct) |  | 
| OperationStatus | varchar(30) | Y | | 工序状态 | |
 | WorkerName | varchar(100) | Y |  | 生产人员 |  | 
 | ReportQty | decimal(18,4) | N | 0 | 报工数 |  | 
 | GoodQty | decimal(18,4) | Y |  | 良品数 |  | 
 | BadQty | decimal(18,4) | Y |  | 良品数 |  | 
| DurationMinutes | decimal(18,2) | Y | | 报工时长（分钟） | |
| UomCode | varchar(16) | Y | | 单位 | |
| BadReasonText | varchar(500) | Y | | 不良品项（原文） | |
 | EventTimeUTC | datetime2 | N |  | 报工事件时间（UTC） |  | 
| SupplierId | bigint | Y | | 外键 → DimSupplier（委外时） | |
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactQualityInspection（质检事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| QualityInspectionId | bigint | N | autoincr | 主键 | |
 | InspectionNumber | varchar(64) | N |  | 质检记录编号（退化维度） | 来源：质检记录编号 | 
| InspectionBatchNumber | varchar(64) | Y | | 质检批次号 | |
 | WorkOrderNumber | varchar(64) | Y |  | 工单（退化维度） |  | 
 | ProductId | bigint | Y |  | 关联DimProduct (外键 → DimProduct) |  | 
| SupplierId | bigint | Y | | 外键 → DimSupplier | |
| QcReasonId | bigint | Y | | 外键 → DimQcReason（不通过原因） | |
 | InspectorId | bigint | Y |  | 质检员 (外键 → DimPerson) |  | 
| QcType | varchar(30) | Y | | 质检类型 | IN_PROCESS,FINAL,INCOMING |
 | PassQty | decimal(18,4) | Y |  | 通过数 |  | 
 | FailQty | decimal(18,4) | Y | | 不通过数 | | 
| SalesOrderNumber | varchar(64) | Y | | 销售订单（退化维度） | |
| CustomerName | varchar(255) | Y | | 客户（退化维度） | |
| ShipQty | decimal(18,4) | Y | | 发货数 | |
 | EventTimeUTC | datetime2 | N |  | 质检事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactSalesOrder（销售订单事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| SalesOrderId | bigint | N | autoincr | 主键 | |
 | SalesOrderNumber | varchar(64) | N |  | 订单编号（退化维度） | 来源：销售订单.订单编号 | 
 | CustomerId | bigint | Y |  | 关联DimCustomer (外键 → DimCustomer) |  | 
 | SalesPersonId | bigint | Y |  | 关联销售员 (外键 → DimPerson) |  | 
 | ContractNumber | varchar(64) | Y |  | 合同编号（退化维度） |  | 
 | ContractId | bigint | Y |  | 关联合同 (外键 → DimContract) |  | 
| CurrencyCode | varchar(16) | Y | | 币别 | |
| FxRate | decimal(18,6) | Y | | 汇率 | |
 | OrderDateUTC | datetime2 | Y |  | 订单单据日期（UTC） |  | 
| DeliveryDateUTC | datetime2 | Y | | 交货日期（UTC） | |
 | DealAmount | decimal(18,4) | Y |  | 成交金额 |  | 
| PaymentStatus | varchar(30) | Y | | 收款状态/付款状态 | |
| TransportMode | varchar(50) | Y | | 运输方式 | |
| Packaging | varchar(100) | Y | | 包材 | |
| CustomsNumber | varchar(64) | Y | | 报关单号 | |
| ProductionDocNumber | varchar(64) | Y | | 生产单据编号 | |
| Stage | varchar(50) | Y | | 当前阶段 | |
 | Result | varchar(50) | Y |  | 结果 |  | 
 | EventTimeUTC | datetime2 | N |  | 订单事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactSalesShipment（销售出库事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| SalesShipmentId | bigint | N | autoincr | 主键 | |
 | ShipmentNumber | varchar(64) | N |  | 出库单编号（退化维度） | 来源：销售出库单.出库单编号 | 
 | CustomerId | bigint | Y |  | 关联DimCustomer (外键 → DimCustomer) |  | 
 | SalesPersonId | bigint | Y |  | 关联销售员 (外键 → DimPerson) |  | 
| OperatorId | bigint | Y | | 外键 → DimPerson（发货员） | |
 | ContractNumber | varchar(64) | Y |  | 合同编号（退化维度） |  | 
 | ContractId | bigint | Y |  | 关联合同 (外键 → DimContract) |  | 
| CurrencyCode | varchar(16) | Y | | 币别 | |
| FxRate | decimal(18,6) | Y | | 汇率 | |
 | DocDateUTC | datetime2 | Y |  | 出库单单据日期（UTC） |  | 
| DeliveryDateUTC | datetime2 | Y | | 交货日期（UTC） | |
| TransportMode | varchar(50) | Y | | 运输方式 | |
| CustomsNumber | varchar(64) | Y | | 报关单号 | |
 | Amount | decimal(18,4) | Y |  | 成交金额/单据金额 |  | 
 | EventTimeUTC | datetime2 | N |  | 出库事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactSalesReturn（销售退货事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| SalesReturnId | bigint | N | autoincr | 主键 | |
 | SalesReturnNumber | varchar(64) | N |  | 销售退货单编号（退化维度） |  | 
 | CustomerId | bigint | Y |  | 关联DimCustomer (外键 → DimCustomer) |  | 
 | SalesPersonId | bigint | Y |  | 销售员 (外键 → DimPerson) |  | 
| OperatorId | bigint | Y | | 外键 → DimPerson（处理人） | |
 | ContractNumber | varchar(64) | Y |  | 合同编号（退化维度） |  | 
| ReturnReason | varchar(255) | Y | | 退货原因 | |
| IsReship | bit | Y | | 是否退货重发 | 0,1 |
| CurrencyCode | varchar(16) | Y | | 币别 | |
| FxRate | decimal(18,6) | Y | | 汇率 | |
| DocDateUTC | datetime2 | Y | | 单据日期（UTC） | |
 | Amount | decimal(18,4) | Y |  | 单据金额 |  | 
 | EventTimeUTC | datetime2 | N |  | 退货事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactPurchaseRequest（采购申请事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| PurchaseRequestId | bigint | N | autoincr | 主键 | |
 | PurchaseRequestNumber | varchar(64) | N |  | 采购申请单编号（退化维度） |  | 
 | SupplierId | bigint | Y |  | 建议供应商 (外键 → DimSupplier) |  | 
 | ApplicantId | bigint | Y |  | 申请人 (外键 → DimPerson) |  | 
 | CurrencyCode | varchar(16) | Y |  | 币别 |  | 
 | FxRate | decimal(18,6) | Y |  | 汇率 |  | 
 | DocDateUTC | datetime2 | Y |  | 单据日期（UTC） |  | 
 | DeliveryDateUTC | datetime2 | Y |  | 交货日期（UTC） |  | 
 | TotalAmount | decimal(18,4) | Y |  | 采购总价 |  | 
 | Status | varchar(30) | Y |  | 采购状态 |  | 
 | RelatedOrderNumber | varchar(64) | Y |  | 订单编号（退化） |  | 
 | ContractNumber | varchar(64) | Y |  | 合同编号（退化） |  | 
 | EventTimeUTC | datetime2 | N |  | 采购申请事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactPurchaseOrder（采购订单事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| PurchaseOrderId | bigint | N | autoincr | 主键 | |
 | PurchaseOrderNumber | varchar(64) | N |  | 采购订单编号（退化维度） |  | 
 | SupplierId | bigint | Y |  | 关联DimSupplier (外键 → DimSupplier) |  | 
 | BuyerId | bigint | Y |  | 关联采购员 (外键 → DimPerson) |  | 
| CurrencyCode | varchar(16) | Y | | 币别 | |
| FxRate | decimal(18,6) | Y | | 汇率 | |
 | DocDateUTC | datetime2 | Y |  | 单据日期（UTC） |  | 
| DeliveryDateUTC | datetime2 | Y | | 交货日期（UTC） | |
 | ContractNumber | varchar(64) | Y |  | 合同编号（退化） |  | 
 | ContractId | bigint | Y |  | 关联合同 (外键 → DimContract) |  | 
| DeliveryNoteNumber | varchar(64) | Y | | 送货单号 | |
| SettlementDateUTC | datetime2 | Y | | 结算日期（UTC） | |
| SettlementTerm | varchar(50) | Y | | 结算期限 | |
 | EventTimeUTC | datetime2 | N |  | 采购订单事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactPurchaseReceipt（采购入库事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| PurchaseReceiptId | bigint | N | autoincr | 主键 | |
 | PurchaseReceiptNumber | varchar(64) | N |  | 采购入库单编号（退化维度） |  | 
 | SupplierId | bigint | Y |  | 关联DimSupplier (外键 → DimSupplier) |  | 
| BuyerId | bigint | Y | | 外键 → DimPerson（采购员） | |
| OperatorId | bigint | Y | | 外键 → DimPerson（收货员） | |
 | PurchaseOrderNumber | varchar(64) | Y |  | 采购订单（退化维度） |  | 
| CurrencyCode | varchar(16) | Y | | 币别 | |
| FxRate | decimal(18,6) | Y | | 汇率 | |
| DocDateUTC | datetime2 | Y | | 单据日期（UTC） | |
| DeliveryDateUTC | datetime2 | Y | | 交货日期（UTC） | |
| ContractNumber | varchar(64) | Y | | 合同编号（退化） | |
 | Amount | decimal(18,4) | Y |  | 成交金额 |  | 
| EstimatedCost | decimal(18,4) | Y | | 预计采购费用 | |
| ReceiptQtyTotal | decimal(18,4) | Y | | 入库总数 | |
| PaidAmount | decimal(18,4) | Y | | 已付款金额 | |
| UnpaidAmount | decimal(18,4) | Y | | 未付款金额 | |
| PaymentStatus | varchar(30) | Y | | 付款状态 | |
| ReturnedQty | decimal(18,4) | Y | | 已退货数 | |
| NotReturnedQty | decimal(18,4) | Y | | 未退货数 | |
| ReturnStatus | varchar(30) | Y | | 退货状态 | |
 | EventTimeUTC | datetime2 | N |  | 入库事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactPurchaseReturn（采购退货事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| PurchaseReturnId | bigint | N | autoincr | 主键 | |
 | PurchaseReturnNumber | varchar(64) | N |  | 采购退货单编号（退化维度） |  | 
 | SupplierId | bigint | Y |  | 关联DimSupplier (外键 → DimSupplier) |  | 
 | BuyerId | bigint | Y |  | 采购员 (外键 → DimPerson) |  | 
 | OperatorId | bigint | Y |  | 处理人 (外键 → DimPerson) |  | 
 | CurrencyCode | varchar(16) | Y |  | 币别 |  | 
 | FxRate | decimal(18,6) | Y |  | 汇率 |  | 
 | DocDateUTC | datetime2 | Y |  | 单据日期（UTC） |  | 
 | ReturnReason | varchar(255) | Y |  | 退货原因 |  | 
 | ContractNumber | varchar(64) | Y |  | 合同编号（退化） |  | 
 | RelatedOrderNumber | varchar(64) | Y |  | 订单号（退化） |  | 
 | EventTimeUTC | datetime2 | N |  | 退货事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactInventoryTransfer（库存调拨事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| InventoryTransferId | bigint | N | autoincr | 主键 | |
 | TransferNumber | varchar(64) | N |  | 调拨单编号（退化维度） |  | 
 | OperatorId | bigint | Y |  | 操作人 (外键 → DimPerson) |  | 
 | TransferName | varchar(255) | Y |  | 调拨名称 |  | 
 | Tag | varchar(100) | Y |  | 单据标签 |  | 
 | TransferTimeUTC | datetime2 | Y |  | 调拨时间（UTC） |  | 
 | PlateNumber | varchar(32) | Y |  | 车牌号 |  | 
 | DeliveryMode | varchar(50) | Y |  | 交货方式 |  | 
 | EventTimeUTC | datetime2 | N |  | 调拨事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactInventoryCount（库存盘点事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| InventoryCountId | bigint | N | autoincr | 主键 | |
 | CountNumber | varchar(64) | N |  | 盘点编号（退化维度） |  | 
 | OperatorId | bigint | Y |  | 盘点人 (外键 → DimPerson) |  | 
 | WarehouseName | varchar(255) | Y |  | 盘点仓库（退化） |  | 
 | CountName | varchar(255) | Y |  | 盘点名称 |  | 
 | CountTimeUTC | datetime2 | Y |  | 盘点时间（UTC） |  | 
 | EventTimeUTC | datetime2 | N |  | 盘点事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactScrap（报废事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| ScrapId | bigint | N | autoincr | 主键 | |
 | ScrapNumber | varchar(64) | N |  | 报废编号（退化维度） |  | 
 | OperatorId | bigint | Y |  | 操作人 (外键 → DimPerson) |  | 
 | WarehouseName | varchar(255) | Y |  | 仓库（退化） |  | 
 | ScrapTimeUTC | datetime2 | Y |  | 报废日期（UTC） |  | 
 | EventTimeUTC | datetime2 | N |  | 报废事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactArReceipt（应收收款事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| ArReceiptId | bigint | N | autoincr | 主键 | |
 | DocNumber | varchar(64) | N |  | 单据编号（退化维度） | 来源：收款单/回款/预收/其他收入等 | 
 | DocType | varchar(30) | N |  | 单据类型 | RECEIPT,REFUND,ADVANCE,ADVANCE_REFUND,OTHER_INCOME | 
 | CustomerId | bigint | Y |  | 关联DimCustomer (外键 → DimCustomer) |  | 
 | ContractId | bigint | Y |  | 关联DimContract (外键 → DimContract) |  | 
| DocDateUTC | datetime2 | Y | | 单据日期（UTC） | |
| CurrencyCode | varchar(16) | Y | | 币别 | |
| FxRate | decimal(18,6) | Y | | 汇率 | |
 | Amount | decimal(18,4) | Y |  | 收款总金额/回款金额/应收金额 |  | 
| AmountBase | decimal(18,4) | Y | | 本位币金额 | 来源：本位币字段 |
| FeeAmount | decimal(18,4) | Y | | 手续费 | |
| DiscountAmount | decimal(18,4) | Y | | 优惠金额 | |
| WriteOffAmount | decimal(18,4) | Y | | 核销总金额 | |
| WrittenOffAmount | decimal(18,4) | Y | | 已核销金额 | |
| UnwrittenOffAmount | decimal(18,4) | Y | | 未核销金额 | |
| RelatedDocNumber | varchar(64) | Y | | 关联单编号/销售订单编号 | |
 | EventTimeUTC | datetime2 | N |  | 收款事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactApPayment（应付付款事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| ApPaymentId | bigint | N | autoincr | 主键 | |
 | DocNumber | varchar(64) | N |  | 单据编号（退化维度） | 来源：付款单/预付款/其他支出等 | 
 | DocType | varchar(30) | N |  | 单据类型 | PAYMENT,REFUND,ADVANCE,ADVANCE_REFUND,OTHER_EXPENSE | 
 | SupplierId | bigint | Y |  | 关联DimSupplier (外键 → DimSupplier) |  | 
 | ContractId | bigint | Y |  | 关联DimContract (外键 → DimContract) |  | 
| DocDateUTC | datetime2 | Y | | 单据日期（UTC） | |
| CurrencyCode | varchar(16) | Y | | 币别 | |
| FxRate | decimal(18,6) | Y | | 汇率 | |
 | Amount | decimal(18,4) | Y |  | 付款总金额/应付金额 |  | 
| AmountBase | decimal(18,4) | Y | | 本位币金额 | |
| FeeAmount | decimal(18,4) | Y | | 手续费 | |
| DiscountAmount | decimal(18,4) | Y | | 优惠金额 | |
| WriteOffAmount | decimal(18,4) | Y | | 核销总金额 | |
| WrittenOffAmount | decimal(18,4) | Y | | 已核销金额 | |
| UnwrittenOffAmount | decimal(18,4) | Y | | 未核销金额 | |
| RelatedDocNumber | varchar(64) | Y | | 关联单编号/采购订单编号 | |
 | EventTimeUTC | datetime2 | N |  | 付款事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactInvoice（开票申请事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| InvoiceId | bigint | N | autoincr | 主键 | |
 | InvoiceRequestNumber | varchar(64) | N |  | 发票申请编号（退化维度） | 来源：发票申请编号 | 
 | ContractId | bigint | Y |  | 关联DimContract (外键 → DimContract) |  | 
 | ContractNumber | varchar(64) | Y |  | 合同编号（退化维度） |  | 
| HandlerId | bigint | Y | | 外键 → DimPerson（经办人） | |
| CustomerId | bigint | Y | | 外键 → DimCustomer | |
 | InvoiceAmount | decimal(18,4) | Y |  | 开票金额 |  | 
| ContractAmount | decimal(18,4) | Y | | 合同金额 | |
 | InvoiceDateUTC | datetime2 | Y |  | 开票日期（UTC） |  | 
 | ActualInvoiceDateUTC | datetime2 | Y |  | 开票日期（UTC） |  | 
| InvoiceType | varchar(50) | Y | | 开票类型 | |
| Stage | varchar(50) | Y | | 当前阶段 | |
| Result | varchar(50) | Y | | 结果 | |
 | EventTimeUTC | datetime2 | N |  | 开票事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactWriteOff（核销事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| WriteOffId | bigint | N | autoincr | 主键 | |
 | WriteOffNumber | varchar(64) | N |  | 核销单编号（退化维度） | 来源：核销单编号 | 
 | DocDateUTC | datetime2 | Y |  | 单据日期（UTC） |  | 
 | ContractId | bigint | Y |  | 关联DimContract (外键 → DimContract) |  | 
 | HandlerId | bigint | Y |  | 经办人 (外键 → DimPerson) |  | 
 | CustomerId | bigint | Y |  | 关联DimCustomer (外键 → DimCustomer) |  | 
 | SupplierId | bigint | Y |  | 关联DimSupplier (外键 → DimSupplier) |  | 
 | WriteOffType | varchar(30) | Y |  | 核销类型 | AR,AP | 
 | CurrencyCode | varchar(16) | Y |  | 币别 |  | 
 | FxRate | decimal(18,6) | Y |  | 汇率 |  | 
 | DiscountAmount | decimal(18,4) | Y |  | 优惠金额 |  | 
 | WriteOffAmount | decimal(18,4) | Y |  | 核销总金额 |  | 
 | EventTimeUTC | datetime2 | N |  | 核销事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactCashFlow（资金流水事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| CashFlowId | bigint | N | autoincr | 主键 | |
 | DocNumber | varchar(64) | Y |  | 单据编号（退化维度） | 来源：资金流向.单据编号/转账单编号 | 
 | DocType | varchar(30) | N |  | 单据类型 | CASHFLOW,TRANSFER | 
 | AccountName | varchar(255) | Y |  | 账户名称 |  | 
 | DocDateUTC | datetime2 | Y |  | 单据日期（UTC） |  | 
 | BusinessType | varchar(100) | Y |  | 业务类型 |  | 
 | IncomeAmount | decimal(18,4) | Y |  | 收入 |  | 
 | ExpenseAmount | decimal(18,4) | Y |  | 支出 |  | 
 | BalanceAmount | decimal(18,4) | Y |  | 余额 |  | 
 | Counterparty | varchar(255) | Y |  | 往来单位 |  | 
 | Remark | varchar(500) | Y |  | 单据备注 |  | 
 | EventTimeUTC | datetime2 | N |  | 资金事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactCommission（分佣事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| CommissionId | bigint | N | autoincr | 主键 | |
 | CommissionPerson | varchar(100) | N |  | 分佣人 |  | 
 | Department | varchar(100) | Y |  | 部门 |  | 
 | CommissionRatePct | decimal(9,4) | Y |  | 提成比例（%） |  | 
 | Coefficient | decimal(18,6) | Y |  | 系数 |  | 
 | ReceivableCommission | decimal(18,4) | Y |  | 应收佣金 |  | 
 | ReceivedCommission | decimal(18,4) | Y |  | 实收佣金 |  | 
 | ContractId | bigint | Y |  | 关联DimContract (外键 → DimContract) |  | 
 | CustomerId | bigint | Y |  | 关联DimCustomer (外键 → DimCustomer) |  | 
 | ProductName | varchar(255) | Y |  | 产品名称（退化） |  | 
 | OpportunityName | varchar(255) | Y |  | 商机名称（退化） |  | 
 | ContractAmount | decimal(18,4) | Y |  | 合同金额 |  | 
 | DealTimeUTC | datetime2 | Y |  | 成交时间（UTC） |  | 
 | IsInvoiced | bit | Y |  | 是否开票 | 0,1 | 
 | EventTimeUTC | datetime2 | N |  | 分佣事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactLead（线索事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| LeadId | bigint | N | autoincr | 主键 | |
 | LeadName | varchar(255) | N |  | 线索名称 |  | 
 | OwnerId | bigint | Y |  | 负责人 (外键 → DimPerson) |  | 
 | LeadSource | varchar(100) | Y |  | 线索来源 |  | 
| Phone | varchar(32) | Y | | 手机 | |
| Telephone | varchar(32) | Y | | 电话 | |
| Email | varchar(100) | Y | | 邮箱 | |
| Address | varchar(500) | Y | | 地址 | |
| Industry | varchar(100) | Y | | 客户行业 | |
| CustomerLevel | varchar(50) | Y | | 客户级别 | |
| NextContactTimeUTC | datetime2 | Y | | 下次联系时间（UTC） | |
| FollowUpStatus | varchar(50) | Y | | 跟进状态 | |
| IsConverted | bit | Y | | 是否已转化 | 0,1 |
| Stage | varchar(50) | Y | | 当前阶段 | |
| Result | varchar(50) | Y | | 结果 | |
 | EventTimeUTC | datetime2 | N |  | 线索事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactOpportunity（商机事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| OpportunityId | bigint | N | autoincr | 主键 | |
 | CustomerId | bigint | Y |  | 关联DimCustomer (外键 → DimCustomer) |  | 
 | OpportunityAmount | decimal(18,4) | Y |  | 商机金额 |  | 
 | ExpectedDealDateUTC | datetime2 | Y |  | 预计成交日期（UTC） |  | 
| NextContactTimeUTC | datetime2 | Y | | 下次联系时间（UTC） | |
| StatusGroup | varchar(50) | Y | | 商机状态组 | |
| Stage | varchar(50) | Y | | 当前阶段 | |
 | Result | varchar(50) | Y |  | 结果 |  | 
 | EventTimeUTC | datetime2 | N |  | 商机事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

### FactProductionPlan（生产计划_装配工单汇总事实）
| 字段 | 类型 | 空 | 缺省 | 描述 | 枚举/单位 |
|---|---|---|---|---|---|
| ProductionPlanId | bigint | N | autoincr | 主键 | |
 | AssemblyWorkOrderNumber | varchar(64) | N |  | 装配工单编号（退化维度） | 来源：装配工单编号 | 
 | WorkOrderCount | int | Y |  | 工单数 |  | 
 | FinishedCount | int | Y |  | 已结束数 |  | 
 | PlannedQty | decimal(18,4) | Y |  | 计划数 |  | 
 | CompletedQty | decimal(18,4) | Y |  | 完工数 |  | 
 | PlanStatus | varchar(50) | Y |  | 生产计划状态 |  | 
 | ProgressText | varchar(100) | Y |  | 工单生成/用料生成/单据进度（原文） |  | 
 | CustomerName | varchar(255) | Y |  | 客户（退化） |  | 
 | CustomerId | bigint | Y |  | 关联DimCustomer (外键 → DimCustomer) |  | 
 | ProductId | bigint | Y |  | 关联DimProduct (外键 → DimProduct) |  | 
 | SalesOrderId | bigint | Y |  | 关联FactSalesOrder (外键 → FactSalesOrder) |  | 
 | EventTimeUTC | datetime2 | N |  | 计划事件时间（UTC） |  | 
| SourceSystem | varchar(50) | Y | | 数据来源 | |
| LastUpdatedUTC | datetime2 | N | sysutcdatetime | 行级更新时间 | |

## KPI 映射（示例）

| KPI | 口径 | 表/字段 |
|---|---|---|
| 报工良率 | `sum(GoodQty) / nullif(sum(ReportQty),0)` | `FactLaborReport.GoodQty/ReportQty` |
| 质检良率 | `sum(PassQty) / nullif(sum(PassQty+FailQty),0)` | `FactQualityInspection.PassQty/FailQty` |
| 采购未付款 | `sum(UnpaidAmount)` | `FactPurchaseReceipt.UnpaidAmount` |
| AR 未核销 | `sum(UnwrittenOffAmount)` | `FactArReceipt.UnwrittenOffAmount` |
| AP 未核销 | `sum(UnwrittenOffAmount)` | `FactApPayment.UnwrittenOffAmount` |


## 数据字典

以下枚举值仅供参考，实际实施时应根据业务系统配置进行调整。

### 1. 通用类 (Common)

| 字典代码 | 字典名称 | 枚举值 (Code: Name) | 适用字段 |
|---|---|---|---|
| **CurrencyCode** | 币种 | CNY: 人民币<br>USD: 美元<br>EUR: 欧元<br>JPY: 日元<br>HKD: 港币 | `FactSalesOrder.CurrencyCode`<br>`FactPurchaseOrder.CurrencyCode`<br>`FactArReceipt.CurrencyCode`<br>... |
| **UomCode** | 计量单位 | pcs: 个/件<br>kg: 千克<br>m: 米<br>L: 升<br>box: 箱<br>set: 套 | `DimProduct.UomCode`<br>`DimBom.UomCode`<br>`FactInventoryMovement.UomCode` |
| **Boolean** | 布尔标识 | 0: 否 (No/False)<br>1: 是 (Yes/True) | `IsCurrent`, `IsLocked`, `IsPrimary`, `IsReship`, `IsConverted`, `IsInvoiced` |

### 2. 人员与组织 (Person & Org)

| 字典代码 | 字典名称 | 枚举值 | 适用字段 |
|---|---|---|---|
| **PersonStatus** | 人员状态 | ACTIVE: 在职<br>INACTIVE: 离职<br>LEAVE: 休假 | `DimPerson.Status` |
| **Department** | 部门 | SALES: 销售部<br>MFG: 生产部<br>PUR: 采购部<br>WH: 仓储部<br>FIN: 财务部<br>QC: 质检部 | `DimPerson.Department` |
| **SupplierLevel** | 供应商等级 | STRATEGIC: 战略供应商<br>PREFERRED: 优选供应商<br>APPROVED: 合格供应商<br>PROBATION: 考察供应商<br>EXIT: 淘汰供应商 | `DimSupplier.SupplierLevel` |
| **CustomerLevel** | 客户等级 | KA: 重点客户<br>VIP: 重要客户<br>NORMAL: 普通客户<br>POTENTIAL: 潜在客户 | `DimCustomer.CustomerLevel`<br>`FactLead.CustomerLevel` |
| **Industry** | 行业 | MFG: 制造<br>RETAIL: 零售<br>IT: 互联网<br>FIN: 金融<br>EDU: 教育 | `DimCustomer.Industry`<br>`FactLead.Industry` |

### 3. 生产与库存 (Production & Inventory)

| 字典代码 | 字典名称 | 枚举值 | 适用字段 |
|---|---|---|---|
| **WorkOrderStatus** | 工单状态 | PLANNED: 计划中<br>RELEASED: 已下达<br>STARTED: 生产中<br>PAUSED: 暂停<br>COMPLETED: 已完工<br>CLOSED: 已结案<br>SCRAP: 报废 | `FactWorkOrder.Status` |
| **MovementType** | 出入库类型 | IN_PURCHASE: 采购入库<br>IN_FG: 完工入库<br>IN_RETURN: 销售退货入库<br>IN_OTHER: 其他入库<br>OUT_SALES: 销售出库<br>OUT_MATERIAL: 生产领料<br>OUT_RETURN: 采购退货出库<br>OUT_SCRAP: 报废出库<br>TRANSFER: 调拨 | `FactInventoryMovement.DocType` |
| **WarehouseType** | 仓库类型 | RAW: 原材料仓<br>FG: 成品仓<br>WIP: 线边仓/半成品仓<br>SCRAP: 废品仓<br>VMI: 供应商库存仓 | `DimWarehouse.WarehouseType` |
| **QcType** | 质检类型 | IQC: 来料检验<br>IPQC: 制程检验<br>FQC: 终检<br>OQC: 出货检验 | `FactQualityInspection.QcType` |
| **ProductType** | 产品类型 | FINISHED: 成品<br>SEMI: 半成品<br>RAW: 原材料<br>SERVICE: 服务 | `DimProduct.ProductType` |
| **TransportCondition** | 运输条件 | NORMAL: 常温<br>COLD: 冷链<br>FRAGILE: 易碎<br>HAZARDOUS: 危险品 | `DimProduct.TransportCondition` |
| **PlanStatus** | 计划状态 | DRAFT: 草稿<br>CONFIRMED: 已确认<br>EXECUTING: 执行中<br>COMPLETED: 已完成 | `FactProductionPlan.PlanStatus` |

### 4. 销售与采购 (Sales & Purchase)

| 字典代码 | 字典名称 | 枚举值 | 适用字段 |
|---|---|---|---|
| **LeadSource** | 线索来源 | WEB: 官网<br>REFERRAL: 推荐<br>EXHIBITION: 展会<br>COLD_CALL: 陌拜<br>OTHER: 其他 | `FactLead.LeadSource` |
| **SalesStage** | 销售阶段 | NEW: 新建<br>QUOTED: 已报价<br>NEGOTIATING: 谈判中<br>WON: 赢单<br>LOST: 输单 | `FactOpportunity.Stage`<br>`FactLead.Stage` |
| **OppStatusGroup** | 商机状态组 | OPEN: 开启<br>WON: 赢单<br>LOST: 输单 | `FactOpportunity.StatusGroup` |
| **PurchaseStatus** | 采购状态 | DRAFT: 草稿<br>APPROVED: 已审批<br>SENT: 已发送<br>PARTIAL_RECEIVED: 部分收货<br>RECEIVED: 全部收货<br>CLOSED: 关闭 | `FactPurchaseRequest.Status` |
| **PaymentStatus** | 支付状态 | UNPAID: 未付款<br>PARTIAL: 部分付款<br>PAID: 已付款<br>OVERDUE: 逾期 | `FactSalesOrder.PaymentStatus`<br>`FactPurchaseReceipt.PaymentStatus` |
| **TransportMode** | 运输方式 | LAND: 陆运<br>SEA: 海运<br>AIR: 空运<br>RAIL: 铁运<br>EXPRESS: 快递 | `FactSalesOrder.TransportMode`<br>`FactSalesShipment.TransportMode` |

### 5. 财务 (Finance)

| 字典代码 | 字典名称 | 枚举值 | 适用字段 |
|---|---|---|---|
| **FinDocType** | 财务单据类型 | RECEIPT: 收款单<br>PAYMENT: 付款单<br>INVOICE: 发票<br>REFUND: 退款<br>ADVANCE: 预收/预付<br>WRITEOFF: 核销 | `FactArReceipt.DocType`<br>`FactApPayment.DocType` |
| **WriteOffType** | 核销类型 | AR: 应收核销<br>AP: 应付核销 | `FactWriteOff.WriteOffType` |
| **InvoiceType** | 发票类型 | VAT_SPECIAL: 增值税专票<br>VAT_NORMAL: 增值税普票<br>ELECTRONIC: 电子发票 | `FactInvoice.InvoiceType` |


## 变更记录

| 版本 | 日期 | 作者 | 变更描述 | 脚本影响 |
|---|---|---|---|---|
| v1.0.0 | 2025-12-25 | GPT-5.2 | 首次输出：维度SCD2 + 事实星座 + ER图 + 字段清单 | 未生成 |
| v1.1.0 | 2025-12-28 | Trae | 新增 DimPerson（人员维度）并关联销售、采购、生产、审批等事实表 | 待生成 |
| v1.2.0 | 2025-12-29 | Trae | 新增「业务数据流转全景图」，包含商机-订单-计划-生产-交付全链路 Mermaid 流程图 | 无 |
| v1.3.0 | 2025-12-29 | Trae | 升级全景图，新增外部采购闭环（PO管理、入库验收IQC、三单匹配AP、供应商管理） | 无 |
| v1.4.0 | 2025-12-29 | Trae | 升级全景图，新增财务与资金阶段（开票Invoice、收付款AP/AR、核销WriteOff、资金CashFlow） | 无 |
| v1.5.0 | 2025-12-30 | Trae | 新增「数据字典」章节，规范化通用类、人员组织、生产库存、销售采购及财务类枚举值 | 无 |
