Actualizar robot.js

This commit is contained in:
2026-02-13 23:33:49 +00:00
parent 3f40f88f33
commit 5cdc8fdd58

View File

@@ -160,43 +160,42 @@ async function runHomeserve(ownerId, user, pass) {
await link.click(); await page.waitForTimeout(1500); await link.click(); await page.waitForTimeout(1500);
// ... dentro de la función runHomeserve, en el evaluate del detalle: // ... dentro de la función runHomeserve, en el evaluate del detalle:
// ... dentro de la función runHomeserve ...
const fullData = await page.evaluate(() => { const fullData = await page.evaluate(() => {
const d = {}; const d = {};
const rows = Array.from(document.querySelectorAll('tr')); const clean = (t) => t ? t.replace(/\s+/g, ' ').trim() : "";
// 1. EXTRAER CAMPOS NORMALES (CLIENTE, DOMICILIO, ETC.)
const rows = Array.from(document.querySelectorAll('tr'));
rows.forEach(r => { rows.forEach(r => {
const cells = r.querySelectorAll('td'); const cells = r.querySelectorAll('td');
if (cells.length >= 2) { if (cells.length >= 2) {
const k = cells[0].innerText.toUpperCase().trim(); const k = cells[0].innerText.toUpperCase().trim().replace(':', '');
const v = cells[1].innerText.trim(); const v = cells[1].innerText.trim();
// Si es la celda de COMENTARIOS (donde está el textarea) // 2. CAPTURA ESPECIAL DEL CUADRO DE COMENTARIOS (LA DESCRIPCIÓN)
if (k.includes("COMENTARIOS")) { if (k.includes("COMENTARIOS")) {
const textarea = cells[1].querySelector('textarea'); const textarea = cells[1].querySelector('textarea');
if (textarea) { if (textarea) {
const rawText = textarea.value; const lines = textarea.value.split('\n');
const lines = rawText.split('\n');
// FILTRO QUIRÚRGICO DE LÍNEAS // Filtro inteligente para quitar basura de sistema
const cleanLines = lines.filter(line => { const cleanLines = lines.filter(line => {
const l = line.toUpperCase(); const l = line.toUpperCase();
// Descartamos basura del sistema
if (l.includes("CAMBIO DE ESTADO")) return false; if (l.includes("CAMBIO DE ESTADO")) return false;
if (l.includes("ESTADO ASIGNADO")) return false; if (l.includes("ESTADO ASIGNADO")) return false;
if (l.includes("SMS NO ENVIADO")) return false; if (l.includes("SMS NO ENVIADO")) return false;
if (l.includes("CONTACTO CON PROF")) return false; if (l.includes("CONTACTO CON PROF")) return false;
if (l.includes("CITA CONFIRMADA")) return false; if (l.includes("0000")) return false;
if (l.includes("0000")) return false; // Líneas vacías de sistema
return true; return true;
}); });
// Nos quedamos con las 3 primeras líneas útiles (que suelen ser la descripción) // Guardamos las primeras líneas útiles como "Descripción"
d['Descripción'] = cleanLines.slice(0, 3).join('\n').trim(); d['Descripción'] = cleanLines.slice(0, 3).join('\n').trim();
} }
} else { } else if (k.length > 1 && v.length > 0 && !k.includes("MENU")) {
// Captura normal de otros campos (CLIENTE, DOMICILIO, etc.) d[k] = v;
const cleanKey = k.replace(':', '');
if (cleanKey.length > 1) d[cleanKey] = v;
} }
} }
}); });