-- 1.0.278:KPI SQL 配置化计算引擎(AIDOP-KPI-SQL-CONFIG-RUNTIME-1)。 -- 表结构由 CodeFirst(EnableInitTable=true)从实体创建;本项目 EnableUnderLine=false → 列名 PascalCase。 -- 下方 CREATE TABLE IF NOT EXISTS 为兜底(CodeFirst 已建则跳过),列名/类型对齐实体。 -- 种子:S5_L1_001 在 AIDOP 租户 797403760988229 的 LEGACY_CODE v1(PUBLISHED/IsCurrent=1)——默认=legacy 向后兼容 + 支持"回滚到 LEGACY_CODE"演示。 CREATE TABLE IF NOT EXISTS ado_smart_ops_kpi_calc_config ( `Id` BIGINT NOT NULL AUTO_INCREMENT, `TenantId` BIGINT DEFAULT NULL, `MetricCode` VARCHAR(50) NOT NULL, `ModuleCode` VARCHAR(20) NOT NULL, `VersionNo` INT NOT NULL, `CalcEngineType` VARCHAR(20) NOT NULL DEFAULT 'CONFIG_SQL', `DataSourceCode` VARCHAR(100) DEFAULT NULL, `SqlScript` TEXT DEFAULT NULL, `SqlParametersJson` TEXT DEFAULT NULL, `TimeoutSeconds` INT NOT NULL DEFAULT 30, `PublishStatus` VARCHAR(20) NOT NULL DEFAULT 'DRAFT', `IsCurrent` TINYINT(1) NOT NULL DEFAULT 0, `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, `PublishedBy` VARCHAR(100) DEFAULT NULL, `PublishedAt` DATETIME DEFAULT NULL, `RetiredBy` VARCHAR(100) DEFAULT NULL, `RetiredAt` DATETIME DEFAULT NULL, PRIMARY KEY (`Id`), UNIQUE KEY `uk_kpi_calc_cfg_metric_ver` (`MetricCode`, `TenantId`, `VersionNo`), KEY `idx_kpi_calc_cfg_current` (`MetricCode`, `TenantId`, `IsCurrent`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='KPI 计算配置(SQL 配置化)'; CREATE TABLE IF NOT EXISTS ado_smart_ops_kpi_calc_run_log ( `Id` BIGINT NOT NULL AUTO_INCREMENT, `TenantId` BIGINT DEFAULT NULL, `BatchId` VARCHAR(100) NOT NULL, `ModuleCode` VARCHAR(20) NOT NULL, `MetricCode` VARCHAR(50) NOT NULL, `ConfigId` BIGINT DEFAULT NULL, `VersionNo` INT DEFAULT NULL, `EngineType` VARCHAR(20) NOT NULL, `DataSourceCode` VARCHAR(100) DEFAULT NULL, `BizDate` DATE NOT NULL, `StartedAt` DATETIME NOT NULL, `FinishedAt` DATETIME DEFAULT NULL, `DurationMs` BIGINT NOT NULL DEFAULT 0, `Status` VARCHAR(20) NOT NULL, `RowCount` INT NOT NULL DEFAULT 0, `MetricValue` DECIMAL(18,4) DEFAULT NULL, `NumeratorValue` DECIMAL(18,4) DEFAULT NULL, `DenominatorValue` DECIMAL(18,4) DEFAULT NULL, `ErrorCode` VARCHAR(50) DEFAULT NULL, `ErrorMessage` VARCHAR(500) DEFAULT NULL, `SqlHash` VARCHAR(64) DEFAULT NULL, `ParameterSnapshot` TEXT DEFAULT NULL, `TriggerType` VARCHAR(20) NOT NULL, `CreateTime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Id`), UNIQUE KEY `uk_kpi_calc_run_metric_batch` (`MetricCode`, `BatchId`), KEY `idx_kpi_calc_run_metric_time` (`MetricCode`, `StartedAt`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='KPI 计算 SQL 运行日志'; -- 种子 S5_L1_001 LEGACY_CODE v1(幂等:存在则跳过)。列名 PascalCase(EnableUnderLine=false)。 INSERT INTO ado_smart_ops_kpi_calc_config (`TenantId`, `MetricCode`, `ModuleCode`, `VersionNo`, `CalcEngineType`, `TimeoutSeconds`, `PublishStatus`, `IsCurrent`, `Remark`, `CreatedBy`, `CreatedAt`) SELECT 797403760988229, 'S5_L1_001', 'S5', 1, 'LEGACY_CODE', 30, 'PUBLISHED', 1, 'S5_L1_001 初始 legacy 版本(向后兼容+回滚基线)', 'system', NOW() FROM DUAL WHERE NOT EXISTS ( SELECT 1 FROM ado_smart_ops_kpi_calc_config WHERE `MetricCode`='S5_L1_001' AND `TenantId`=797403760988229 AND `VersionNo`=1 );