diff --git a/robot.js b/robot.js index 638acfd..3a941e6 100644 --- a/robot.js +++ b/robot.js @@ -158,24 +158,50 @@ async function runHomeserve(ownerId, user, pass) { const link = await page.getByText(ref).first(); if (await link.isVisible()) { await link.click(); await page.waitForTimeout(1500); - const fullData = await page.evaluate(() => { - const d = {}; - const rows = Array.from(document.querySelectorAll('tr')); - rows.forEach(r => { - const cells = r.querySelectorAll('td'); - if(cells.length >= 2) { - const k = cells[0].innerText.toUpperCase().trim().replace(':', ''); - const v = cells[1].innerText.trim(); - if(k.length > 1 && v.length > 0) d[k] = v; - } - if(cells.length >= 4) { - const k2 = cells[2].innerText.toUpperCase().trim().replace(':', ''); - const v2 = cells[3].innerText.trim(); - if(k2.length > 1 && v2.length > 0) d[k2] = v2; - } - }); - return d; + // ... dentro de la función runHomeserve, en el evaluate del detalle: + +const fullData = await page.evaluate(() => { + const d = {}; + const rows = Array.from(document.querySelectorAll('tr')); + + rows.forEach(r => { + const cells = r.querySelectorAll('td'); + if (cells.length >= 2) { + const k = cells[0].innerText.toUpperCase().trim(); + const v = cells[1].innerText.trim(); + + // Si es la celda de COMENTARIOS (donde está el textarea) + if (k.includes("COMENTARIOS")) { + const textarea = cells[1].querySelector('textarea'); + if (textarea) { + const rawText = textarea.value; + const lines = rawText.split('\n'); + + // FILTRO QUIRÚRGICO DE LÍNEAS + const cleanLines = lines.filter(line => { + const l = line.toUpperCase(); + // Descartamos basura del sistema + if (l.includes("CAMBIO DE ESTADO")) return false; + if (l.includes("ESTADO ASIGNADO")) return false; + if (l.includes("SMS NO ENVIADO")) return false; + if (l.includes("CONTACTO CON PROF")) return false; + if (l.includes("CITA CONFIRMADA")) return false; + if (l.includes("0000")) return false; // Líneas vacías de sistema + return true; }); + + // Nos quedamos con las 3 primeras líneas útiles (que suelen ser la descripción) + d['Descripción'] = cleanLines.slice(0, 3).join('\n').trim(); + } + } else { + // Captura normal de otros campos (CLIENTE, DOMICILIO, etc.) + const cleanKey = k.replace(':', ''); + if (cleanKey.length > 1) d[cleanKey] = v; + } + } + }); + return d; +}); if (fullData) await saveServiceToDB(ownerId, 'homeserve', ref, fullData); } } catch (errRef) { console.error(`⚠️ Error ref ${ref}`); }