-- =============================================================================
-- Esquema mínimo para un agente WhatsApp + Claude
-- =============================================================================

-- Conversaciones (historial que carga el agente cada vez)
CREATE TABLE IF NOT EXISTS whatsapp_conversaciones (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    from_number VARCHAR(25) NOT NULL,
    role        ENUM('user','assistant') NOT NULL,
    content     TEXT NOT NULL,
    created_at  TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_from_created (from_number, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Slots de selección (cuando el agente muestra "Opción 1/2/3", guarda qué producto
-- corresponde a cada slot para identificar cuál apretó el cliente)
CREATE TABLE IF NOT EXISTS whatsapp_seleccion_pending (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    from_number     VARCHAR(25) NOT NULL,
    slot            VARCHAR(8)  NOT NULL,  -- 'op1' / 'op2' / 'op3'
    id_producto     INT NOT NULL,
    id_marca        INT NULL,
    codigo_producto VARCHAR(50) NULL,
    titulo          VARCHAR(255) NULL,
    precio          DECIMAL(12,2) NULL,
    created_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_from_created (from_number, created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Config de templates Twilio (los SIDs por friendly_name) — para no tener que
-- recrear templates en cada deploy
CREATE TABLE IF NOT EXISTS whatsapp_config (
    clave VARCHAR(64) PRIMARY KEY,
    valor TEXT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- Log de mensajes outbound (útil para debug y métricas)
CREATE TABLE IF NOT EXISTS twilio_mensajes_log (
    id              INT AUTO_INCREMENT PRIMARY KEY,
    to_number       VARCHAR(25),
    from_number     VARCHAR(25),
    channel         VARCHAR(20),
    body            TEXT,
    twilio_sid      VARCHAR(40),
    status          VARCHAR(20),
    error_message   TEXT,
    created_at      TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_created (created_at),
    INDEX idx_to (to_number)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- (Opcional) clientes de tu negocio con whatsapp verificado
-- Si tu producto se conecta al sistema del cliente, estas son las columnas mínimas
-- necesarias para que el agente identifique al cliente por número.
CREATE TABLE IF NOT EXISTS clientes (
    id                  INT AUTO_INCREMENT PRIMARY KEY,
    nombre              VARCHAR(255),
    telefono_whatsapp   VARCHAR(25),         -- formato: +549XXXXXXXXX (con el "9" móvil)
    whatsapp_verificado TINYINT NOT NULL DEFAULT 0,
    categoria           VARCHAR(50),         -- ej. para precios por nivel: 'gremio_a', 'publico', etc.
    bloqueado           TINYINT DEFAULT 0,
    eliminado           TINYINT DEFAULT 0,
    INDEX idx_whatsapp (telefono_whatsapp)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
