-- AIDOP-S567-KPI-T8-SQL-CONFIG-MIGRATION-1：S5_L1_004 品类物料库存周转 收口迁移 CONFIG_SQL。
-- 背景：S5/S6/S7 现有 9 个 KPI 中 8 个已是 CONFIG_SQL/MDP_LOCAL（读已准备好的 dwd_t8_*），
--       唯 S5_L1_004 仍 LEGACY_TVF（1.0.279.sql 当时判定"不迁"，本批经 CTO 拍板按范式 A 收口）。
-- 范式 A（与 8 个兄弟一致）：TVF dbo.Rep_总账_存货_V3 保留为数据准备（BuildS5L1004 写 dwd_t8_material_inventory_turnover），
--       最终汇总（AVG(turnover_days)）改由 MDP_LOCAL CONFIG_SQL 读该 dwd，不扩执行器、不直连 T8、不改任何业务公式。
-- 等价性：legacy 现状 = AVG(turnover_days)，当前 turnover_days 全 NULL → legacy 实跑 NO_DATA；
--       CONFIG_SQL AVG(turnover_days) 同为 NO_DATA（逐项等价，见验收对账）。
-- 表列 PascalCase（EnableUnderLine=false）；租户=AIDOP 运行租户 797403760988229。
-- 幂等：先把 v1 IsCurrent 置 0（保留 PUBLISHED 作回滚），再 INSERT ... WHERE NOT EXISTS 建 v2；重复执行影响行 0。
-- 绑定参数由运行时注入：@tenant_id/@factory_id/@biz_date/@ztid（月度 KPI @biz_date=月末，DATE_FORMAT 取 YYYY-MM）。

-- ① v1 LEGACY_TVF 退出当前生效（保留为回滚版本，PublishStatus 仍 PUBLISHED）
UPDATE ado_smart_ops_kpi_calc_config
SET `IsCurrent` = 0
WHERE `MetricCode` = 'S5_L1_004' AND `TenantId` = 797403760988229 AND `VersionNo` = 1 AND `IsCurrent` = 1;

-- ② v2 CONFIG_SQL 成为当前生效：读本地 dwd 月行 turnover_days 均值（排除 NULL），MDP_LOCAL 只读执行器
INSERT INTO ado_smart_ops_kpi_calc_config
  (`TenantId`,`MetricCode`,`ModuleCode`,`VersionNo`,`CalcEngineType`,`DataSourceCode`,`SqlScript`,`TimeoutSeconds`,`PublishStatus`,`IsCurrent`,`Remark`,`CreatedBy`,`CreatedAt`)
SELECT 797403760988229,'S5_L1_004','S5',2,'CONFIG_SQL','MDP_LOCAL',
'SELECT ROUND(AVG(turnover_days), 4) AS metric_value, COUNT(*) AS numerator_value
FROM dwd_t8_material_inventory_turnover
WHERE tenant_id = @tenant_id AND factory_id = @factory_id
  AND biz_month = DATE_FORMAT(@biz_date, ''%Y-%m'') AND source_ztid = @ztid
  AND turnover_days IS NOT NULL',
30,'PUBLISHED',1,'CONFIG_SQL：读 dwd 月行 turnover_days 均值（排除 NULL），1:1 复刻 legacy AVG(turnover_days)；TVF 仅作数据准备；turnover_days 全 NULL 时→NO_DATA，与 legacy 现状同为 NO_DATA','system',NOW()
FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM ado_smart_ops_kpi_calc_config WHERE `MetricCode`='S5_L1_004' AND `TenantId`=797403760988229 AND `VersionNo`=2);
