diff --git a/robot.js b/robot.js index d32a7c3..4a8dd50 100644 --- a/robot.js +++ b/robot.js @@ -31,6 +31,19 @@ function arreglarNombre(nombreRaw) { return nombreLimpio; } +// 🛡️ DESCODIFICADOR UNIVERSAL PARA HOMESERVE (Arregla los +, Ó, Ñ, etc.) +function arreglarCodificacion(texto) { + if (!texto) return ""; + let limpio = texto.replace(/\+/g, ' '); // Primero cambiamos los + por espacios + try { + // Truco clásico de Javascript para transformar ISO a UTF-8 + limpio = decodeURIComponent(escape(limpio)); + } catch(e) { + // Si no se puede, lo dejamos con los espacios arreglados + } + return limpio.trim(); +} + // NUEVO: La función ahora lee las keywords directamente del JSON de la base de datos function clasificarGremio(descripcion, gremiosActivosDB) { if (!descripcion || gremiosActivosDB.length === 0) return null; @@ -356,7 +369,8 @@ async function runHomeserve(ownerId, user, pass, gremiosDB) { // Quitamos los filtros destructivos que borraban el "Cambio de estado" return !["ESTADO ASIGNADO", "SMS NO ENVIADO", "CONTACTO CON PROF", "0000"].some(b => l.includes(b)); }).join('\n').trim(); - d['Descripción'] = cleanDesc; + // Aplicamos el descodificador a la avería + d['Descripción'] = cleanDesc; // Se limpiará luego abajo } else if (k.length > 1 && v.length > 0 && !k.includes("MENU")) { d[k] = v; } @@ -378,7 +392,13 @@ async function runHomeserve(ownerId, user, pass, gremiosDB) { }); if (scrapData && scrapData['Nombre Cliente']) { - // 🪄 Arreglamos el nombre ANTES de guardarlo (Solo en HomeServe) + // 🪄 Arreglamos la codificación alienígena de HomeServe EN TODOS LOS CAMPOS IMPORTANTES + scrapData['Nombre Cliente'] = arreglarCodificacion(scrapData['Nombre Cliente']); + scrapData['Dirección'] = arreglarCodificacion(scrapData['Dirección']); + scrapData['Población'] = arreglarCodificacion(scrapData['Población']); + scrapData['Descripción'] = arreglarCodificacion(scrapData['Descripción']); + + // 🪄 Arreglamos el formato de "Apellidos, Nombre" (Solo en HomeServe) scrapData['Nombre Cliente'] = arreglarNombre(scrapData['Nombre Cliente']); // 🛑 NUEVO: Le inyectamos los iconos que cazamos antes en la lista