-- ═══════════════════════════════════════════════════════════════════════════════
-- ACTUALIZACIÓN: SISTEMA DE ROTACIÓN CÍCLICA PARA ANÁLISIS DE CANCIONES
-- ═══════════════════════════════════════════════════════════════════════════════
-- Fecha: 2025-11-12
-- Propósito: Agregar columna para rastrear rotación de canciones usadas en análisis
--
-- PROBLEMA RESUELTO:
-- Antes: Todos los pedidos usaban las mismas top 10 canciones
--        → Vocabulario repetitivo entre usuarios
--
-- Ahora: Sistema rota a través de TODAS las canciones del artista
--        → Máxima diversidad entre pedidos
-- ═══════════════════════════════════════════════════════════════════════════════

-- 1. Verificar si la tabla existe, sino crearla
CREATE TABLE IF NOT EXISTS `artist_rotation_state` (
  `artist_name` VARCHAR(255) NOT NULL PRIMARY KEY,
  `last_song_index` INT DEFAULT 0 COMMENT 'Índice de última canción específica seleccionada',
  `last_analysis_index` INT DEFAULT 0 COMMENT 'Índice del último bloque de canciones usado para análisis',
  `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  INDEX `idx_updated` (`updated_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 2. Si la tabla ya existe, agregar columna last_analysis_index (si no existe)
ALTER TABLE `artist_rotation_state`
ADD COLUMN IF NOT EXISTS `last_analysis_index` INT DEFAULT 0
COMMENT 'Índice del último bloque de canciones usado para análisis';

-- 3. Información sobre el sistema
-- ═══════════════════════════════════════════════════════════════════════════════
-- FUNCIONAMIENTO DEL SISTEMA DE ROTACIÓN CÍCLICA:
-- ═══════════════════════════════════════════════════════════════════════════════
--
-- EJEMPLO: Angela Aguilar con 61 canciones
--
-- Pedido 1 → last_analysis_index = 0  → Usa canciones 1-10   → Vocabulario A
-- Pedido 2 → last_analysis_index = 10 → Usa canciones 11-20  → Vocabulario B
-- Pedido 3 → last_analysis_index = 20 → Usa canciones 21-30  → Vocabulario C
-- Pedido 4 → last_analysis_index = 30 → Usa canciones 31-40  → Vocabulario D
-- Pedido 5 → last_analysis_index = 40 → Usa canciones 41-50  → Vocabulario E
-- Pedido 6 → last_analysis_index = 50 → Usa canciones 51-60  → Vocabulario F
-- Pedido 7 → last_analysis_index = 60 → Usa canciones 1-10   → Vocabulario A (ciclo)
--
-- RESULTADO: Máxima diversidad - cada pedido usa canciones/vocabulario diferente
-- ═══════════════════════════════════════════════════════════════════════════════

-- Verificar estado actual
SELECT
    artist_name,
    last_song_index AS 'Canción Específica',
    last_analysis_index AS 'Bloque Análisis',
    updated_at AS 'Última Actualización'
FROM artist_rotation_state
ORDER BY updated_at DESC
LIMIT 10;
