-- =====================================================
-- MIGRACION: Crear tabla preguntas_clasificacion_multi
-- Fecha: 2026-01-24
-- Autor: Claude Code
-- =====================================================

-- CREAR TABLA
CREATE TABLE preguntas_clasificacion_multi (
    pregunta_id SERIAL PRIMARY KEY,
    business_id VARCHAR(100) NOT NULL,
    nombre VARCHAR(100) NOT NULL,
    pregunta TEXT NOT NULL,
    contexto TEXT,
    limites TEXT,
    modo_clasificacion VARCHAR(20) NOT NULL
        CHECK (modo_clasificacion IN ('seleccion_unica', 'seleccion_multiple')),
    categorias_participantes INTEGER[] NOT NULL,
    ejemplos_por_categoria JSONB DEFAULT '{}',
    permitir_crear_categoria BOOLEAN DEFAULT FALSE,
    color_nuevas_categorias VARCHAR(7) DEFAULT '#6366f1',
    habilitada BOOLEAN DEFAULT TRUE,
    orden INTEGER DEFAULT 100,
    sucursal INTEGER[],
    created_at TIMESTAMPTZ DEFAULT NOW(),
    created_by_login_id INTEGER NOT NULL,
    updated_at TIMESTAMPTZ,
    updated_by_login_id INTEGER,
    soft_delete BOOLEAN DEFAULT FALSE,
    soft_delete_date TIMESTAMPTZ
);

-- COMENTARIOS
COMMENT ON TABLE preguntas_clasificacion_multi IS
    'Preguntas multi-categoria para clasificacion de clientes. Complementa pregunta_config (binario) en categorias.';

COMMENT ON COLUMN preguntas_clasificacion_multi.modo_clasificacion IS
    'seleccion_unica=elegir 1 de N, seleccion_multiple=elegir 1+ de N. Binario usa pregunta_config.';

COMMENT ON COLUMN preguntas_clasificacion_multi.categorias_participantes IS
    'Array de category_ids de categorias_conocimientos_clientes. Minimo 2 elementos.';

COMMENT ON COLUMN preguntas_clasificacion_multi.ejemplos_por_categoria IS
    'JSONB con ejemplos de respuesta por categoria. Keys son category_id como string.';

COMMENT ON COLUMN preguntas_clasificacion_multi.permitir_crear_categoria IS
    'Si true, el empleado digital puede crear nuevas categorias basandose en respuestas del usuario.';

COMMENT ON COLUMN preguntas_clasificacion_multi.color_nuevas_categorias IS
    'Color HEX por defecto para categorias creadas dinamicamente.';

-- INDICES
CREATE INDEX idx_preg_clas_business_id
    ON preguntas_clasificacion_multi(business_id);

CREATE INDEX idx_preg_clas_soft_delete
    ON preguntas_clasificacion_multi(soft_delete)
    WHERE soft_delete = FALSE;

CREATE INDEX idx_preg_clas_categorias_gin
    ON preguntas_clasificacion_multi USING GIN (categorias_participantes);

CREATE INDEX idx_preg_clas_sucursal_gin
    ON preguntas_clasificacion_multi USING GIN (sucursal);

CREATE INDEX idx_preg_clas_orden
    ON preguntas_clasificacion_multi(business_id, orden)
    WHERE soft_delete IS NOT TRUE;

CREATE UNIQUE INDEX uq_preg_clas_business_nombre
    ON preguntas_clasificacion_multi(business_id, LOWER(nombre))
    WHERE soft_delete IS NOT TRUE;

-- VERIFICACION
SELECT 'Tabla preguntas_clasificacion_multi creada exitosamente' AS resultado;
