diff --git a/asignados.html b/asignados.html index ac50a0f..11be78f 100644 --- a/asignados.html +++ b/asignados.html @@ -550,8 +550,37 @@ function renderServices(servicesToRender = localServices) { const isUrgent = s.is_urgent; const company = raw["Compañía"] || raw["Procedencia"] || "Particular"; - let desc = raw["Descripción"] || raw["DESCRIPCION"] || raw["Averia"] || "Sin descripción de avería en el expediente."; - desc = desc.replace(/(\r\n|\n|\r)/gm, " "); + // 🤖 "IA" LIMPIADORA: Filtramos la paja de las aseguradoras para dejar solo la avería real + function limpiarPaja(texto) { + if (!texto) return "Sin descripción de avería en el expediente."; + let res = texto.replace(/(\r\n|\n|\r)/gm, " "); + + // 1. Quitamos todas las fechas de inicio de línea (Ej: "19/03/2026 - ") + res = res.replace(/\d{2}\/\d{2}\/\d{4}\s*-\s*/g, ' '); + + // 2. Pulverizamos las frases administrativas típicas + const basura = [ + /Llama asegurad[oa]\s*\d*/gi, + /solicita (operario|profesional) para/gi, + /Cobro banco.*?(?=\.|\s-|$)/gi, + /El servicio dispone de hasta.*?(?=\.|\s-|$)/gi, + /Servicio asignado a:.*?(?=\.|\s-|$)/gi, + /Cambio de estado:.*?(?=\.|\s-|$)/gi, + /y? el material debe ser aportado.*?(?=\.|\s-|$)/gi, + /informo material a cargo.*?(?=\.|\s-|$)/gi, + /en espera de profesional.*?(?=\.|\s-|$)/gi + ]; + + basura.forEach(regex => { res = res.replace(regex, ' '); }); + + // 3. Limpiamos los espacios rotos y comas sueltas que hayan quedado + res = res.replace(/\s+/g, ' ').replace(/\s,\s/g, ', ').replace(/^[,\.\-\s]+/, '').trim(); + + // Ponemos la primera letra en mayúscula. Si nos pasamos borrando, devolvemos el texto original por seguridad. + return res.length > 5 ? res.charAt(0).toUpperCase() + res.slice(1) : texto; + } + + let desc = limpiarPaja(raw["Descripción"] || raw["DESCRIPCION"] || raw["Averia"]); const calledTimes = parseInt(raw.called_times || 0); const delayDays = calculateDelayDays(s.created_at);