-- Tabla de mapeos de vehículos entre MasterOne y Dominicana de Seguros
-- Actúa como diccionario persistente para evitar re-procesar el matching

CREATE TABLE IF NOT EXISTS vehicle_mapping (
    id INT AUTO_INCREMENT PRIMARY KEY,

    -- Datos del vehículo en MasterOne (como llegan del sistema)
    marca_masterone VARCHAR(100) NOT NULL,
    modelo_masterone VARCHAR(200) NOT NULL,

    -- Códigos resultantes para Dominicana de Seguros
    cd_marca VARCHAR(50) NOT NULL,
    cd_modelo VARCHAR(50) NOT NULL,
    cd_version VARCHAR(50) NOT NULL,
    de_indice_dato VARCHAR(100) NOT NULL,  -- formato: "cdMarca|cdModelo|cdVersion"

    -- Nombres legibles de Dominicana (para display en admin)
    nombre_marca VARCHAR(200) NULL,
    nombre_modelo VARCHAR(200) NULL,
    nombre_version VARCHAR(200) NULL,

    -- Control de calidad del mapeo
    confirmado TINYINT(1) DEFAULT 0,       -- 0=auto/pendiente, 1=revisado por admin
    metodo_mapeo ENUM('exacto', 'fuzzy', 'manual') DEFAULT 'fuzzy',
    usos_count INT DEFAULT 0,              -- cuántas transacciones han usado este mapeo

    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    UNIQUE KEY idx_masterone_pair (marca_masterone, modelo_masterone),
    INDEX idx_confirmado (confirmado),
    INDEX idx_cd_marca (cd_marca)
);

-- Tabla de fallos de mapeo (vehículos que el algoritmo no pudo resolver)
-- El admin puede asignarles manualmente los códigos de Dominicana

CREATE TABLE IF NOT EXISTS vehicle_mapping_failures (
    id INT AUTO_INCREMENT PRIMARY KEY,

    marca_masterone VARCHAR(100) NOT NULL,
    modelo_masterone VARCHAR(200) NOT NULL,

    -- Tipo de fallo
    error_tipo ENUM(
        'marca_no_encontrada',
        'modelo_no_encontrado',
        'sin_versiones',
        'error_api'
    ) NOT NULL,
    error_mensaje TEXT NULL,

    intentos INT DEFAULT 1,               -- cuántas veces ha fallado este vehículo
    resuelto TINYINT(1) DEFAULT 0,        -- 1 cuando el admin lo resuelve manualmente

    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

    UNIQUE KEY idx_pair (marca_masterone, modelo_masterone),
    INDEX idx_resuelto (resuelto),
    INDEX idx_error_tipo (error_tipo)
);
