-- ============================================================
-- Club Palestino - Módulo Memoria de Asistentes Virtuales
-- ============================================================

-- ── PERFIL DEL SOCIO EN EL ASISTENTE ─────────────────────────
CREATE TABLE IF NOT EXISTS `asistente_perfiles` (
    `id`              INT UNSIGNED  NOT NULL AUTO_INCREMENT,
    `socio_id`        INT UNSIGNED  NULL     COMMENT 'FK a tabla socios si está identificado',
    `rut`             VARCHAR(12)   NULL,
    `nombre_completo` VARCHAR(150)  NULL,
    `asistente`       ENUM('yusef','tamer','amani','amira') NOT NULL DEFAULT 'yusef',
    `primera_visita`  TIMESTAMP     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `ultima_visita`   TIMESTAMP     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    `visitas_total`   INT UNSIGNED  NOT NULL DEFAULT 1,
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_rut` (`rut`),
    KEY `idx_socio` (`socio_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ── MEMORIA ACUMULADA DEL SOCIO ───────────────────────────────
-- Cada entrada es un "recuerdo" aprendido en conversaciones
CREATE TABLE IF NOT EXISTS `asistente_memoria` (
    `id`          INT UNSIGNED  NOT NULL AUTO_INCREMENT,
    `perfil_id`   INT UNSIGNED  NOT NULL,
    `categoria`   ENUM(
        'personal',       -- nombre, edad, cumpleaños, familia
        'preferencias',   -- actividades favoritas, gustos
        'deportes',       -- ramas en que participa o le interesan
        'familia',        -- composición familiar, edades
        'membresia',      -- tipo de socio, forma de pago preferida
        'comportamiento', -- cómo interactúa, qué prefiere preguntar
        'otro'
    ) NOT NULL DEFAULT 'otro',
    `clave`       VARCHAR(100)  NOT NULL COMMENT 'Ej: actividad_favorita, edad_hijo_mayor',
    `valor`       TEXT          NOT NULL,
    `confianza`   TINYINT       NOT NULL DEFAULT 5 COMMENT '1-10: qué tan seguro es este dato',
    `origen`      VARCHAR(200)  NULL     COMMENT 'De qué conversación se extrajo',
    `created_at`  TIMESTAMP     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    `updated_at`  TIMESTAMP     NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_perfil_clave` (`perfil_id`, `clave`),
    KEY `fk_mem_perfil` (`perfil_id`),
    CONSTRAINT `fk_mem_perfil` FOREIGN KEY (`perfil_id`) REFERENCES `asistente_perfiles`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- ── HISTORIAL DE CONVERSACIONES ───────────────────────────────
CREATE TABLE IF NOT EXISTS `asistente_conversaciones` (
    `id`          INT UNSIGNED  NOT NULL AUTO_INCREMENT,
    `perfil_id`   INT UNSIGNED  NOT NULL,
    `asistente`   ENUM('yusef','tamer','amani','amira') NOT NULL,
    `sesion_id`   VARCHAR(64)   NOT NULL COMMENT 'ID único de sesión',
    `mensaje_usuario` TEXT      NOT NULL,
    `respuesta`       TEXT      NOT NULL,
    `tokens_usados`   SMALLINT  NULL,
    `created_at`  TIMESTAMP     NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (`id`),
    KEY `fk_conv_perfil` (`perfil_id`),
    KEY `idx_sesion` (`sesion_id`),
    CONSTRAINT `fk_conv_perfil` FOREIGN KEY (`perfil_id`) REFERENCES `asistente_perfiles`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

