-- 1.0.281（AIDOP-S567-KPI-CONFIGURATION-PLATFORM-1，治理层）。
-- 提交那刻 rename 为正式 1.0.<next>.sql、注册 csproj Copy 条目（见 §二 版本取号）。
-- 表结构由 CodeFirst（EnableInitTable=true）从实体 AdoSmartOpsKpiBusinessInput 创建；EnableUnderLine=false → 列名 PascalCase。
-- 下方 CREATE TABLE IF NOT EXISTS 为兜底（CodeFirst 已建则跳过），列名/类型对齐实体。
-- 种子：不给 49 个 PENDING KPI 落库（缺行 = PENDING_BUSINESS_FIELDS 由后端默认返回）；
--       仅把当前 IsCurrent=1 的 9 个已配置 KPI（7 CONFIG_SQL + S5_L1_001 LEGACY_CODE + S5_L1_004 LEGACY_TVF）
--       INSERT...SELECT 继承 TenantId/MetricCode/ModuleCode 落 READY_FOR_CONFIG，避免迁移后阻断当前功能。
--       ModuleCode 直接取自 calc_config（已含 S5，S5_L1_004 无需 Master 行即可覆盖）；不手写固定 TenantId；NOT EXISTS 幂等、不覆盖人工记录。

CREATE TABLE IF NOT EXISTS ado_smart_ops_kpi_business_input (
  `Id` BIGINT NOT NULL AUTO_INCREMENT,
  `TenantId` BIGINT DEFAULT NULL,
  `MetricCode` VARCHAR(50) NOT NULL,
  `ModuleCode` VARCHAR(20) NOT NULL,
  `BusinessInputStatus` VARCHAR(30) NOT NULL DEFAULT 'PENDING_BUSINESS_FIELDS',
  `SourceSystem` VARCHAR(200) DEFAULT NULL,
  `SourceTables` VARCHAR(500) DEFAULT NULL,
  `SourceFields` TEXT DEFAULT NULL,
  `BusinessSqlSource` VARCHAR(200) DEFAULT NULL,
  `BusinessSqlRemark` TEXT DEFAULT NULL,
  `BusinessOwner` VARCHAR(100) DEFAULT NULL,
  `FieldOwner` VARCHAR(100) DEFAULT NULL,
  `Remark` TEXT DEFAULT NULL,
  `CreatedBy` VARCHAR(100) DEFAULT NULL,
  `CreatedAt` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `UpdatedBy` VARCHAR(100) DEFAULT NULL,
  `UpdatedAt` DATETIME DEFAULT NULL,
  PRIMARY KEY (`Id`),
  UNIQUE KEY `uk_kpi_biz_input_tenant_metric` (`TenantId`, `MetricCode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='KPI 业务来源与准备状态';

-- 9 个已配置 KPI 种 READY（继承 calc_config 的 TenantId/MetricCode/ModuleCode，不硬写租户；逐 KPI NOT EXISTS 幂等）。
INSERT INTO ado_smart_ops_kpi_business_input
  (`TenantId`, `MetricCode`, `ModuleCode`, `BusinessInputStatus`, `Remark`, `CreatedBy`, `CreatedAt`)
SELECT c.`TenantId`, c.`MetricCode`, c.`ModuleCode`, 'READY_FOR_CONFIG',
       '迁移基线：已有生效计算配置，业务来源就绪', 'system', NOW()
FROM ado_smart_ops_kpi_calc_config c
WHERE c.`IsCurrent` = 1
  AND c.`MetricCode` IN ('S5_L1_001','S5_L1_002','S5_L1_003','S5_L1_004',
                         'S6_L2_002','S6_L2_003',
                         'S7_L1_001','S7_L1_002','S7_L1_003')
  AND NOT EXISTS (
    SELECT 1 FROM ado_smart_ops_kpi_business_input b
    WHERE b.`TenantId` = c.`TenantId` AND b.`MetricCode` = c.`MetricCode`
  );
