# 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[("线索处理
In: FactLead
Logic: 线索清洗/转化")]:::process
Node_Opp[("商机确认
In: FactLead
Out: FactOpportunity")]:::process
Decision_Win{商机赢单?}:::decision
Node_Contract[("合同签订
In: FactOpportunity
Out: DimContract")]:::process
Node_SO[("销售订单生成
In: DimContract
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)
In: FactSalesOrder
Logic: 需求合并/产能平衡
Out: FactProductionPlan")]:::process
Node_MRP[("MRP运算/BOM展开
In: FactProductionPlan, DimBom
Logic: 净需求计算
Out: FactWorkOrder(Planned)")]:::process
Decision_MakeBuy{自制/外购?}:::decision
Node_PR[("采购申请生成
Out: FactPurchaseRequest")]:::process
Table_Plan[("FactProductionPlan")]:::table
Table_Bom[("DimBom")]:::table
Table_Stock[("FactInventoryMovement
(当前库存)")]:::table
end
%% 新增:3. 采购与供应阶段
subgraph Stage_Procure [采购与供应阶段]
direction TB
Node_PO[("采购订单(PO)
In: FactPurchaseRequest
Out: FactPurchaseOrder")]:::process
Node_Receive[("收货与IQC
Logic: 验收/质检
Out: FactQualityInspection")]:::process
Decision_IQC{IQC合格?}:::decision
Node_Return[("采购退货
Out: FactPurchaseReturn")]:::process
Node_Mat_In[("原材料入库
Logic: 批次录入/更新库存
Out: FactPurchaseReceipt
FactInventoryMovement")]:::process
Node_AP[("应付挂账(AP)
Logic: 三单匹配
Out: FactApPayment")]:::process
Table_PO[("FactPurchaseOrder")]:::table
Table_Receipt[("FactPurchaseReceipt")]:::table
end
%% 4. 生产执行阶段 (原 Stage_Make)
subgraph Stage_Make [生产执行阶段]
direction TB
Node_WO_Release[("工单下达
In: FactWorkOrder(Planned)
Logic: 物料齐套/锁定资源
Out: FactWorkOrder(Released)")]:::process
Node_Task[("工序任务派工
In: FactWorkOrder, DimRouting
Out: FactOperationTask")]:::process
Node_Labor[("生产报工
In: FactOperationTask
Logic: 投入/产出/工时记录
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)
In: FactLaborReport
Logic: 检验标准比对
Out: FactQualityInspection")]:::process
Decision_Pass{质检合格?}:::decision
Node_Scrap[("报废处理
Logic: 记录不良原因
Out: FactScrap")]:::process
Node_FG_In[("成品入库
In: FactWorkOrder(Closed)
Logic: 更新库存余额
Out: FactInventoryMovement(IN)")]:::process
Table_QC[("FactQualityInspection")]:::table
Table_Inv[("FactInventoryMovement")]:::table
end
%% 6. 交付阶段 (原 Stage_Deliver)
subgraph Stage_Deliver [交付阶段]
direction TB
Node_Ship[("销售发货
In: FactSalesOrder, FactInventoryMovement
Logic: 拣货/出库扣减
Out: FactSalesShipment")]:::process
Node_End((交付完成))
Table_Ship[("FactSalesShipment")]:::table
end
%% 新增:7. 财务与资金阶段
subgraph Stage_Finance [财务与资金阶段]
direction TB
%% AR Flow
Node_Invoice[("销售开票
In: FactSalesShipment
Out: FactInvoice")]:::process
Node_ArRec[("销售收款
Out: FactArReceipt")]:::process
Node_ArOff[("应收核销
Logic: 核销发票与收款
Out: FactWriteOff")]:::process
%% AP Flow
Node_ApPay[("采购付款
Out: FactApPayment")]:::process
Node_ApOff[("应付核销
Logic: 核销应付与付款
Out: FactWriteOff")]:::process
%% Cash Flow
Node_Cash[("资金流水
Logic: 账户变动记录
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: 人民币
USD: 美元
EUR: 欧元
JPY: 日元
HKD: 港币 | `FactSalesOrder.CurrencyCode`
`FactPurchaseOrder.CurrencyCode`
`FactArReceipt.CurrencyCode`
... |
| **UomCode** | 计量单位 | pcs: 个/件
kg: 千克
m: 米
L: 升
box: 箱
set: 套 | `DimProduct.UomCode`
`DimBom.UomCode`
`FactInventoryMovement.UomCode` |
| **Boolean** | 布尔标识 | 0: 否 (No/False)
1: 是 (Yes/True) | `IsCurrent`, `IsLocked`, `IsPrimary`, `IsReship`, `IsConverted`, `IsInvoiced` |
### 2. 人员与组织 (Person & Org)
| 字典代码 | 字典名称 | 枚举值 | 适用字段 |
|---|---|---|---|
| **PersonStatus** | 人员状态 | ACTIVE: 在职
INACTIVE: 离职
LEAVE: 休假 | `DimPerson.Status` |
| **Department** | 部门 | SALES: 销售部
MFG: 生产部
PUR: 采购部
WH: 仓储部
FIN: 财务部
QC: 质检部 | `DimPerson.Department` |
| **SupplierLevel** | 供应商等级 | STRATEGIC: 战略供应商
PREFERRED: 优选供应商
APPROVED: 合格供应商
PROBATION: 考察供应商
EXIT: 淘汰供应商 | `DimSupplier.SupplierLevel` |
| **CustomerLevel** | 客户等级 | KA: 重点客户
VIP: 重要客户
NORMAL: 普通客户
POTENTIAL: 潜在客户 | `DimCustomer.CustomerLevel`
`FactLead.CustomerLevel` |
| **Industry** | 行业 | MFG: 制造
RETAIL: 零售
IT: 互联网
FIN: 金融
EDU: 教育 | `DimCustomer.Industry`
`FactLead.Industry` |
### 3. 生产与库存 (Production & Inventory)
| 字典代码 | 字典名称 | 枚举值 | 适用字段 |
|---|---|---|---|
| **WorkOrderStatus** | 工单状态 | PLANNED: 计划中
RELEASED: 已下达
STARTED: 生产中
PAUSED: 暂停
COMPLETED: 已完工
CLOSED: 已结案
SCRAP: 报废 | `FactWorkOrder.Status` |
| **MovementType** | 出入库类型 | IN_PURCHASE: 采购入库
IN_FG: 完工入库
IN_RETURN: 销售退货入库
IN_OTHER: 其他入库
OUT_SALES: 销售出库
OUT_MATERIAL: 生产领料
OUT_RETURN: 采购退货出库
OUT_SCRAP: 报废出库
TRANSFER: 调拨 | `FactInventoryMovement.DocType` |
| **WarehouseType** | 仓库类型 | RAW: 原材料仓
FG: 成品仓
WIP: 线边仓/半成品仓
SCRAP: 废品仓
VMI: 供应商库存仓 | `DimWarehouse.WarehouseType` |
| **QcType** | 质检类型 | IQC: 来料检验
IPQC: 制程检验
FQC: 终检
OQC: 出货检验 | `FactQualityInspection.QcType` |
| **ProductType** | 产品类型 | FINISHED: 成品
SEMI: 半成品
RAW: 原材料
SERVICE: 服务 | `DimProduct.ProductType` |
| **TransportCondition** | 运输条件 | NORMAL: 常温
COLD: 冷链
FRAGILE: 易碎
HAZARDOUS: 危险品 | `DimProduct.TransportCondition` |
| **PlanStatus** | 计划状态 | DRAFT: 草稿
CONFIRMED: 已确认
EXECUTING: 执行中
COMPLETED: 已完成 | `FactProductionPlan.PlanStatus` |
### 4. 销售与采购 (Sales & Purchase)
| 字典代码 | 字典名称 | 枚举值 | 适用字段 |
|---|---|---|---|
| **LeadSource** | 线索来源 | WEB: 官网
REFERRAL: 推荐
EXHIBITION: 展会
COLD_CALL: 陌拜
OTHER: 其他 | `FactLead.LeadSource` |
| **SalesStage** | 销售阶段 | NEW: 新建
QUOTED: 已报价
NEGOTIATING: 谈判中
WON: 赢单
LOST: 输单 | `FactOpportunity.Stage`
`FactLead.Stage` |
| **OppStatusGroup** | 商机状态组 | OPEN: 开启
WON: 赢单
LOST: 输单 | `FactOpportunity.StatusGroup` |
| **PurchaseStatus** | 采购状态 | DRAFT: 草稿
APPROVED: 已审批
SENT: 已发送
PARTIAL_RECEIVED: 部分收货
RECEIVED: 全部收货
CLOSED: 关闭 | `FactPurchaseRequest.Status` |
| **PaymentStatus** | 支付状态 | UNPAID: 未付款
PARTIAL: 部分付款
PAID: 已付款
OVERDUE: 逾期 | `FactSalesOrder.PaymentStatus`
`FactPurchaseReceipt.PaymentStatus` |
| **TransportMode** | 运输方式 | LAND: 陆运
SEA: 海运
AIR: 空运
RAIL: 铁运
EXPRESS: 快递 | `FactSalesOrder.TransportMode`
`FactSalesShipment.TransportMode` |
### 5. 财务 (Finance)
| 字典代码 | 字典名称 | 枚举值 | 适用字段 |
|---|---|---|---|
| **FinDocType** | 财务单据类型 | RECEIPT: 收款单
PAYMENT: 付款单
INVOICE: 发票
REFUND: 退款
ADVANCE: 预收/预付
WRITEOFF: 核销 | `FactArReceipt.DocType`
`FactApPayment.DocType` |
| **WriteOffType** | 核销类型 | AR: 应收核销
AP: 应付核销 | `FactWriteOff.WriteOffType` |
| **InvoiceType** | 发票类型 | VAT_SPECIAL: 增值税专票
VAT_NORMAL: 增值税普票
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 | 新增「数据字典」章节,规范化通用类、人员组织、生产库存、销售采购及财务类枚举值 | 无 |