-- ==========================================
-- SCRIPT DE BASE DE DATOS PARA SUPABASE
-- PROYECTO: Asistente Virtual Inteligente (ASSEGURA AI - Paquete 3)
-- ==========================================

-- 1. Crear la tabla principal para el Paquete 3
CREATE TABLE IF NOT EXISTS paq3_asistente_virtual (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    cliente_nombre VARCHAR(255) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
    fase_actual INT DEFAULT 1,
    estado VARCHAR(50) DEFAULT 'en_progreso', -- 'en_progreso' o 'completado'
    
    -- Datos estructurados por fase (JSONB para flexibilidad de datos)
    fase1_data JSONB DEFAULT '{}'::jsonb, -- Contacto y Validación del caso
    fase2_data JSONB DEFAULT '{}'::jsonb, -- Reunión de descubrimiento
    fase3_data JSONB DEFAULT '{}'::jsonb, -- Levantamiento de información
    fase4_data JSONB DEFAULT '{}'::jsonb, -- Diseño del alcance del asistente
    fase5_data JSONB DEFAULT '{}'::jsonb, -- Diseño conversacional
    fase6_data JSONB DEFAULT '{}'::jsonb, -- Preparación de base de conocimiento
    fase7_data JSONB DEFAULT '{}'::jsonb, -- Configuración técnica
    fase8_data JSONB DEFAULT '{}'::jsonb, -- Desarrollo del asistente
    fase9_data JSONB DEFAULT '{}'::jsonb, -- Integraciones (Web, WhatsApp, CRM)
    fase10_data JSONB DEFAULT '{}'::jsonb, -- Pruebas y entrenamiento
    fase11_data JSONB DEFAULT '{}'::jsonb, -- Publicación
    fase12_data JSONB DEFAULT '{}'::jsonb, -- Capacitación y entrega
    fase13_data JSONB DEFAULT '{}'::jsonb, -- Monitoreo inicial
    fase14_data JSONB DEFAULT '{}'::jsonb  -- Conversión comercial
);

-- 2. Habilitar el soporte de Row Level Security (RLS)
ALTER TABLE paq3_asistente_virtual ENABLE ROW LEVEL SECURITY;

-- 3. Crear políticas de seguridad para permitir el acceso (Lectura/Escritura)
CREATE POLICY "Permitir lectura de asistente_virtual" 
ON paq3_asistente_virtual FOR SELECT 
USING (true);

CREATE POLICY "Permitir creación de asistente_virtual" 
ON paq3_asistente_virtual FOR INSERT 
WITH CHECK (true);

CREATE POLICY "Permitir actualización de asistente_virtual" 
ON paq3_asistente_virtual FOR UPDATE 
USING (true);

CREATE POLICY "Permitir eliminación de asistente_virtual" 
ON paq3_asistente_virtual FOR DELETE 
USING (true);

-- 4. Crear o reutilizar la función de actualización de 'updated_at'
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = NOW();
    RETURN NEW;
END;
$$ language 'plpgsql';

-- 5. Crear el trigger para actualizar la columna updated_at
DROP TRIGGER IF EXISTS update_paq3_asistente_virtual_updated_at ON paq3_asistente_virtual;
CREATE TRIGGER update_paq3_asistente_virtual_updated_at
    BEFORE UPDATE ON paq3_asistente_virtual
    FOR EACH ROW
    EXECUTE FUNCTION update_updated_at_column();
