-- ═══════════════════════════════════════════════════════════════════════
-- 2026-10-21_01 · Módulo KPI (indicadores por mes)
-- ═══════════════════════════════════════════════════════════════════════
-- Los indicadores se calculan en vivo desde las tablas de cada módulo
-- (app/models/Kpi.php); aquí solo se guardan las metas que el usuario
-- cambia. Si un KPI no tiene fila, se usa la meta por defecto del código.
--
-- Reversa: database/rollback/2026-10-21_01_kpi.sql
-- ═══════════════════════════════════════════════════════════════════════

USE tinsa_db;

INSERT INTO modulos (id, nombre, icono, orden, estado) VALUES (9, 'KPI', 'fa-chart-line', 9, 1);
INSERT INTO pestanas (id_modulo, nombre, ruta, icono, orden, estado) VALUES
  (9, 'Indicadores', '/kpi', 'fa-chart-line', 1, 1);
INSERT INTO permisos_roles (id_rol, id_pestana, puede_leer, puede_escribir, puede_eliminar)
SELECT 1, p.id, 1, 1, 1 FROM pestanas p WHERE p.ruta = '/kpi';

CREATE TABLE kpi_meta (
  clave             VARCHAR(40)   NOT NULL PRIMARY KEY COMMENT 'clave del KPI en Kpi::DEFINICIONES',
  meta              DECIMAL(5,2)  NOT NULL COMMENT 'porcentaje objetivo (0-100)',
  usuario_modifico  INT(10) UNSIGNED DEFAULT NULL,
  updated_at        TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  CONSTRAINT chk_kpi_meta_rango CHECK (meta BETWEEN 0 AND 100),
  CONSTRAINT fk_kpi_meta_usuario FOREIGN KEY (usuario_modifico) REFERENCES usuarios (id_usuario)
    ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
