-- 全局业务对象域 · KPI 最小颗粒度原子聚合层（日粒度）
-- 只存可二次聚合的基础量，不存模块/客户/产品/时间范围等二次汇总结果。
-- API 根据前端查询条件动态 SUM/GROUP BY 计算最终 KPI。

SET NAMES utf8mb4;

CREATE TABLE IF NOT EXISTS ado_smart_ops_kpi_atomic_day (
    id BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键',
    tenant_id BIGINT NOT NULL COMMENT '租户ID',
    factory_id BIGINT NOT NULL DEFAULT 1 COMMENT '工厂ID',
    domain_code VARCHAR(50) NOT NULL COMMENT '业务对象域 order_delivery/supply_purchase/work_schedule/inventory',
    metric_code VARCHAR(50) NOT NULL COMMENT '指标编码',
    metric_level TINYINT NOT NULL DEFAULT 1 COMMENT '指标层级 1-4',
    stat_date DATE NOT NULL COMMENT '统计日期',
    customer_code VARCHAR(100) NOT NULL DEFAULT '' COMMENT '客户编码',
    product_code VARCHAR(100) NOT NULL DEFAULT '' COMMENT '产品/物料编码',
    order_no VARCHAR(100) NOT NULL DEFAULT '' COMMENT '订单号',
    production_line VARCHAR(100) NOT NULL DEFAULT '' COMMENT '产线',
    supplier_code VARCHAR(100) NOT NULL DEFAULT '' COMMENT '供应商编码',
    material_code VARCHAR(100) NOT NULL DEFAULT '' COMMENT '物料编码',
    po_no VARCHAR(100) NOT NULL DEFAULT '' COMMENT '采购单号',
    warehouse_code VARCHAR(100) NOT NULL DEFAULT '' COMMENT '仓库编码',
    work_order_no VARCHAR(100) NOT NULL DEFAULT '' COMMENT '工单号',
    equipment_code VARCHAR(100) NOT NULL DEFAULT '' COMMENT '设备编码',
    outbound_no VARCHAR(100) NOT NULL DEFAULT '' COMMENT '出库单号',
    sum_value DECIMAL(18, 6) NULL COMMENT '可累加值',
    numerator_value DECIMAL(18, 6) NULL COMMENT '比率分子',
    denominator_value DECIMAL(18, 6) NULL COMMENT '比率分母',
    sample_count INT NULL COMMENT '样本数(平均类)',
    min_value DECIMAL(18, 6) NULL COMMENT '最小值',
    max_value DECIMAL(18, 6) NULL COMMENT '最大值',
    batch_id VARCHAR(100) NULL COMMENT 'MDP批次',
    calc_time DATETIME(3) NULL COMMENT '计算时间',
    grain VARCHAR(20) NOT NULL DEFAULT 'day' COMMENT '统计粒度 day/hour',
    is_deleted TINYINT NOT NULL DEFAULT 0 COMMENT '删除标识',
    PRIMARY KEY (id),
    UNIQUE KEY uk_atomic_grain (
        tenant_id, factory_id, domain_code, metric_code, stat_date,
        customer_code, product_code, order_no, production_line,
        supplier_code, material_code, po_no, warehouse_code,
        work_order_no, equipment_code, outbound_no
    ),
    KEY idx_tenant_domain_metric_date (tenant_id, domain_code, metric_code, stat_date),
    KEY idx_tenant_module_lookup (tenant_id, factory_id, metric_code, stat_date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='KPI原子聚合层(日)';
