-- =====================================================================
--  MÓDULO: GENERACIÓN DE IMÁGENES CON IA  (migración ADITIVA, prefijo gi_)
--  No modifica ni elimina ninguna tabla existente. Ejecutar UNA vez.
--  Reversión: DROP TABLE de las tablas gi_* (ver final del archivo).
-- =====================================================================
USE `re123_gigantes`;

-- 3) Fondos por evento --------------------------------------------------
CREATE TABLE IF NOT EXISTS `gi_fondos` (
  `id`               INT(11) NOT NULL AUTO_INCREMENT,
  `evento_id`        INT(11) NOT NULL,
  `nombre`           VARCHAR(160) DEFAULT NULL,
  `archivo`          VARCHAR(255) NOT NULL,
  `miniatura`        VARCHAR(255) DEFAULT NULL,
  `formato`          VARCHAR(10) DEFAULT NULL,
  `ancho`            INT(11) DEFAULT NULL,
  `alto`             INT(11) DEFAULT NULL,
  `aspecto`          VARCHAR(20) DEFAULT NULL,
  `orden`            INT(11) NOT NULL DEFAULT 0,
  `activo`           TINYINT(1) NOT NULL DEFAULT 1,
  `prompt`           TEXT DEFAULT NULL,
  `prompt_negativo`  TEXT DEFAULT NULL,
  `posicion_persona` VARCHAR(40) DEFAULT NULL,
  `tamano_persona`   VARCHAR(40) DEFAULT NULL,
  `max_personas`     INT(11) NOT NULL DEFAULT 0,
  `categoria`        VARCHAR(80) DEFAULT NULL,
  `proteger_textos`  TINYINT(1) NOT NULL DEFAULT 1,
  `usos`             INT(11) NOT NULL DEFAULT 0,
  `created_at`       TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_evento` (`evento_id`,`activo`,`orden`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 7) Imágenes generadas -------------------------------------------------
CREATE TABLE IF NOT EXISTS `gi_imagenes` (
  `id`             INT(11) NOT NULL AUTO_INCREMENT,
  `evento_id`      INT(11) NOT NULL,
  `trabajo_id`     INT(11) DEFAULT NULL,
  `foto_id`        INT(11) DEFAULT NULL,
  `fondo_id`       INT(11) DEFAULT NULL,
  `archivo`        VARCHAR(255) NOT NULL,
  `miniatura`      VARCHAR(255) DEFAULT NULL,
  `ancho`          INT(11) DEFAULT NULL,
  `alto`           INT(11) DEFAULT NULL,
  `estado`         ENUM('pendiente_aprobacion','aprobada','rechazada') NOT NULL DEFAULT 'pendiente_aprobacion',
  `destacada`      TINYINT(1) NOT NULL DEFAULT 0,
  `en_slider`      TINYINT(1) NOT NULL DEFAULT 0,
  `galeria_foto_id` INT(11) DEFAULT NULL,        -- id en galeria_fotos (slider existente)
  `descargas`      INT(11) NOT NULL DEFAULT 0,
  `origen`         ENUM('admin','qr') NOT NULL DEFAULT 'qr',
  `created_at`     TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `updated_at`     TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_evento` (`evento_id`,`estado`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 8) Consumo de API -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `gi_consumo` (
  `id`         INT(11) NOT NULL AUTO_INCREMENT,
  `evento_id`  INT(11) DEFAULT NULL,
  `trabajo_id` INT(11) DEFAULT NULL,
  `proveedor`  VARCHAR(40) DEFAULT NULL,
  `modelo`     VARCHAR(80) DEFAULT NULL,
  `llamadas`   INT(11) NOT NULL DEFAULT 1,
  `unidades`   INT(11) DEFAULT NULL,
  `costo`      DECIMAL(10,4) DEFAULT NULL,
  `resultado`  VARCHAR(20) DEFAULT NULL,
  `tiempo_ms`  INT(11) DEFAULT NULL,
  `error_msg`  TEXT DEFAULT NULL,
  `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_evento` (`evento_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 9) Historial / auditoría ---------------------------------------------
CREATE TABLE IF NOT EXISTS `gi_historial` (
  `id`               INT(11) NOT NULL AUTO_INCREMENT,
  `evento_id`        INT(11) DEFAULT NULL,
  `accion`           VARCHAR(60) NOT NULL,
  `usuario_admin_id` INT(11) DEFAULT NULL,
  `descripcion`      VARCHAR(500) DEFAULT NULL,
  `created_at`       TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_evento` (`evento_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 10) Configuración general del módulo (clave/valor) -------------------
CREATE TABLE IF NOT EXISTS `gi_config` (
  `clave` VARCHAR(80) NOT NULL,
  `valor` TEXT DEFAULT NULL,
  PRIMARY KEY (`clave`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

INSERT INTO `gi_config` (`clave`,`valor`) VALUES
('modulo_activo','1'),
('max_carga_mb','12'),
('formatos_permitidos','jpg,jpeg,png,webp'),
('trabajos_simultaneos','2'),
('pausa_entre_solicitudes','1'),
('worker_token', SUBSTRING(MD5(RAND()),1,24)),
('rate_min_segundos','8'),
('max_por_ip_hora','40')
ON DUPLICATE KEY UPDATE `clave`=`clave`;

-- =====================================================================
--  REVERSIÓN (si se necesitara deshacer):
--  DROP TABLE gi_consumo, gi_imagenes, gi_trabajos, gi_autorizaciones,
--    gi_fotos_originales, gi_fondos, gi_eventos, gi_config_ia,
--    gi_historial, gi_config;
-- =====================================================================
