-- S0ProcessFlowCard 租户隔离补齐（承接 1.0.389 的 12 张表，本脚本只处理这一张）。
--
-- 背景：AdoS0ProcessFlowCard 实体已实现 ITenantIdFilter 并映射 tenant_id，
--   且唯一索引声明为 (TenantId, FactoryRefId, FlowCardNo)；物理表需同步，否则
--   启动后 CodeFirst 与实体声明不一致、且唯一键仍为跨租户口径。
--
-- 该表当前 0 行（2026-08-25 实测），因此无历史数据回填，只做 DDL 对齐。
-- 组织解析改造（AdoS0ProcessFlowCardsController.ResolveDefaultOrgAsync 去 ClearFilter、
--   改为当前租户内 C1→C3→C2→C4 / F1→F2→F3→F4 分级解析）与本脚本同批提交。
--
-- 幂等：ADD COLUMN / ADD INDEX 均有 information_schema 存在性保护；
--       唯一键按实际列清单比对，已是目标结构则跳过。重复执行无副作用。
-- 本脚本不含 DELETE / TRUNCATE / DROP TABLE，不创建任何演示数据。

SET @t1 := (SELECT COUNT(*) FROM information_schema.TABLES
  WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='S0ProcessFlowCard');
SET @c1 := (SELECT COUNT(*) FROM information_schema.COLUMNS
  WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='S0ProcessFlowCard' AND COLUMN_NAME='tenant_id');
SET @a1 := CASE WHEN @t1=1 AND @c1=0
  THEN 'ALTER TABLE `S0ProcessFlowCard` ADD COLUMN `tenant_id` BIGINT NULL COMMENT ''租户Id'''
  ELSE 'SELECT 1' END;
PREPARE p1a FROM @a1; EXECUTE p1a; DEALLOCATE PREPARE p1a;

SET @i1 := (SELECT COUNT(*) FROM information_schema.STATISTICS
  WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='S0ProcessFlowCard' AND INDEX_NAME='idx_tenant');
SET @b1 := CASE WHEN @t1=1 AND @i1=0
  THEN 'ALTER TABLE `S0ProcessFlowCard` ADD INDEX `idx_tenant` (`tenant_id`)'
  ELSE 'SELECT 1' END;
PREPARE p1b FROM @b1; EXECUTE p1b; DEALLOCATE PREPARE p1b;

-- 不回填：该表 0 行，无历史归属可推导，不伪造租户值。

SET @u1 := (SELECT GROUP_CONCAT(COLUMN_NAME ORDER BY SEQ_IN_INDEX) FROM information_schema.STATISTICS
  WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='S0ProcessFlowCard'
    AND INDEX_NAME='uk_S0ProcessFlowCard_factory_flowcard');
SET @e1 := CASE
  WHEN @t1<>1 THEN 'SELECT 1'
  WHEN @u1 = 'tenant_id,factory_ref_id,flow_card_no' THEN 'SELECT 1'
  WHEN @u1 IS NULL THEN
    'ALTER TABLE `S0ProcessFlowCard` ADD UNIQUE INDEX `uk_S0ProcessFlowCard_factory_flowcard` (`tenant_id`,`factory_ref_id`,`flow_card_no`)'
  ELSE
    'ALTER TABLE `S0ProcessFlowCard` DROP INDEX `uk_S0ProcessFlowCard_factory_flowcard`, ADD UNIQUE INDEX `uk_S0ProcessFlowCard_factory_flowcard` (`tenant_id`,`factory_ref_id`,`flow_card_no`)'
  END;
PREPARE p1e FROM @e1; EXECUTE p1e; DEALLOCATE PREPARE p1e;
