-- =============================================================================
-- Dashboard V2 — indicador por defecto de cada proceso (bloque ANS)
-- Base: asercolg_po (conexión `mysql`) · MariaDB 10.6
-- Ver specs/SPEC_Dashboard_V2.MD §4.5 · R3 y §12 · P3
-- =============================================================================
--
-- El bloque de cumplimiento abre siempre un proceso con un indicador ya
-- seleccionado. `asercol.graficos` marca ese indicador con `defecto = 'S'`, pero
-- esa columna no se copió al catálogo nuevo y, además, un proceso no la tenía.
--
-- Este script:
--   1. Añade `por_defecto` a `indicadores`.
--   2. Marca los 7 que el ERP ya definía.
--   3. Marca el de INGRESOS A ZONA FRANCA, que el ERP NO definía y que el
--      negocio resolvió el 2026-09-11: «Aviso de llegada contra entrega de
--      transporte» (ans_72, etapas 0501 -> 3002, meta 3 días).
--
-- Los nueve indicadores de ese proceso tienen además `orden` nulo en el ERP, así
-- que sin esta decisión la elección habría sido arbitraria.
--
-- Es idempotente. SE APLICA DESPUÉS de dashboard_v2_catalogo_ans.sql.
--
-- =============================================================================
-- PASO 0 — Estado antes
-- =============================================================================

SELECT `id_proceso_ws`, COUNT(*) AS indicadores
  FROM `indicadores`
 WHERE `bloque` = 'ans' AND `estado` = 1
 GROUP BY `id_proceso_ws`
 ORDER BY `id_proceso_ws`;

-- =============================================================================
-- PASO 1 — La columna
-- =============================================================================
--
-- Si ya existe, MariaDB responde «Duplicate column name»: es inofensivo, seguir.

ALTER TABLE `indicadores`
  ADD COLUMN `por_defecto` TINYINT(4) NOT NULL DEFAULT 0
  COMMENT '1 = indicador que se abre al seleccionar el proceso'
  AFTER `umbral_cumplimiento`;

-- =============================================================================
-- PASO 2 — Los defectos
-- =============================================================================
--
-- Un solo indicador por proceso: primero se limpia, luego se marca.

UPDATE `indicadores` SET `por_defecto` = 0 WHERE `bloque` = 'ans';

UPDATE `indicadores`
   SET `por_defecto` = 1
 WHERE `bloque` = 'ans'
   AND `codigo` IN (
       'ans_1',   -- proceso  1 · IMPORTACIONES POR PUERTO        · INICIO-LEVANTE
       'ans_7',   -- proceso  2 · EXPORTACIONES                   · DCTOS-INGRESO
       'ans_18',  -- proceso  3 · TRÁNSITO ADUANERO               · INICIO-LEVANTE DTA
       'ans_72',  -- proceso  4 · INGRESOS A ZONA FRANCA          · AVISO LLEGADA - ENTREGA TRANSP  <- decidido por el negocio
       'ans_9',   -- proceso  5 · SALIDA A TERCEROS PAÍSES DE ZF  · DOC AUTORIZACION-INGR PUERTO
       'ans_8',   -- proceso  7 · IMPORTACIONES DESDE ZONA FRANCA · DCTOS-LEVANTE
       'ans_24',  -- proceso  8 · IMPORTACIONES DESDE DEPÓSITO    · DCTOS-LEVANTE
       'ans_6'    -- proceso 11 · NACIONALIZACIÓN AEROPUERTO      · INICIO-LEVANTE
   );

-- =============================================================================
-- PASO 3 — Umbral de cumplimiento
-- =============================================================================
--
-- Decisión del negocio (2026-09-11): 90 % para todos, y operación lo ajusta
-- después indicador por indicador. Ya se cargó así; esta sentencia solo repara
-- filas que hubieran quedado nulas.

UPDATE `indicadores`
   SET `umbral_cumplimiento` = 90
 WHERE `bloque` = 'ans'
   AND `umbral_cumplimiento` IS NULL;

-- Para ajustar un indicador concreto más adelante:
--   UPDATE `indicadores` SET `umbral_cumplimiento` = 95 WHERE `codigo` = 'ans_1';
--
-- Y para un solo cliente, sin tocar al resto:
--   INSERT INTO `indicador_asignacion`
--          (`id_indicador`, `id_grupo_empresarial`, `umbral_override`, `estado`, `created_at`, `updated_at`)
--   SELECT `id`, 41, 95, 1, NOW(), NOW() FROM `indicadores` WHERE `codigo` = 'ans_1';

-- =============================================================================
-- PASO 4 — Verificación
-- =============================================================================

SELECT i.`id_proceso_ws`,
       COUNT(*)                      AS indicadores,
       SUM(i.`por_defecto`)          AS con_defecto,
       MIN(i.`umbral_cumplimiento`)  AS umbral_min,
       MAX(i.`umbral_cumplimiento`)  AS umbral_max,
       GROUP_CONCAT(CASE WHEN i.`por_defecto` = 1 THEN i.`nombre` END) AS el_defecto
  FROM `indicadores` i
 WHERE i.`bloque` = 'ans' AND i.`estado` = 1 AND i.`id_proceso_ws` IS NOT NULL
 GROUP BY i.`id_proceso_ws`
 ORDER BY i.`id_proceso_ws`;

-- Esperado: `con_defecto` = 1 en los 8 procesos, umbral 90 en todos.
-- Los 26 indicadores heredados de `indicadores_kpi` tienen `id_proceso_ws` nulo
-- y quedan fuera de esta verificación: se agrupan por régimen, no por proceso.
