diff --git a/index2.html b/index2.html
index 8cb2fc0..246c40b 100644
--- a/index2.html
+++ b/index2.html
@@ -347,16 +347,58 @@
// --- FUNCIONES DE TEXTO Y FECHAS ---
function summarizeDescription(rawText) {
- if (!rawText) return "Revisión técnica de avería en el domicilio.";
+ if (!rawText) return "Revisión técnica en el domicilio.";
+
+ // 1. Limpieza inicial de saltos de línea
let text = String(rawText).replace(/(\r\n|\n|\r)/gm, " ");
- const regexCorte = /(\bM\.O\b|\bMATERIAL\b|\bASEGURADO\b|\bTELEFONO\b|\bTEL\b|\bURGENTE\b|\bFRANQUICIA\b|\[PROPUESTA)/i;
- let cutPos = text.search(regexCorte);
- if (cutPos > 15) text = text.substring(0, cutPos);
- text = text.replace(/^(Aver[ií]a|Descripci[oó]n|Motivo|Siniestro|Detalle)[\s:]*/i, '').trim();
- if (text.length > 0) text = text.charAt(0).toUpperCase() + text.slice(1);
- let words = text.split(/\s+/);
- if (words.length > 20) text = words.slice(0, 20).join(" ") + "...";
- if (text.length < 5) return "Revisión general en el domicilio.";
+
+ // 2. Eliminar fechas, horas y marcas automáticas de los CRM (ej. 27/02/2026 - 15:44)
+ text = text.replace(/\(?\d{2}\/\d{2}\/\d{4}.{0,12}\d{2}:\d{2}\)?/g, " ");
+ text = text.replace(/\d{2}\/\d{2}\/\d{4}\s*-\s*/g, " ");
+ text = text.replace(/Texto manual/gi, " ");
+
+ // 3. Extracción de paja: Condiciones de seguros, notas internas, seguimientos y operadoras
+ const paja = [
+ /COBERTURA.*?PROFESIONAL/gi,
+ /INDICO DEBE FACILITAR MATERIAL.*?REPARACIÓN/gi,
+ /INFO SERVICIOS DISPONIBLES/gi,
+ /CONFORME/gi,
+ /SERVICIOS PRESTADOS:?/gi,
+ /Primer contacto con cliente.*?(\.|$)/gi,
+ /Por seguimiento se desasigna.*?(\.|$)/gi,
+ /Cliente llama.*?(\.|$)/gi,
+ /LLAMA TOMADOR/gi,
+ /SOLICITA SERVICIO DE /gi,
+ /Enviar factura.*?Madrid/gi,
+ /\[PROPUESTA.*?\]/gi,
+ /Aver[ií]a:?/gi, /Descripci[oó]n:?/gi, /Motivo:?/gi, /Siniestro:?/gi, /Detalle:?/gi,
+ /\bM\.O\.?\b/gi, /\bMATERIALES?\b/gi, /\bASEGURADO\b/gi, /\bFRANQUICIA\b/gi,
+ /TEL[EÉ]FONO\s*\d+/gi, /\b[6789]\d{8}\b/g // Elimina teléfonos sueltos
+ ];
+
+ paja.forEach(regex => {
+ text = text.replace(regex, " ");
+ });
+
+ // 4. Limpiar símbolos sobrantes (barras, guiones o comas repetidas tras la limpieza)
+ text = text.replace(/[\/]+/g, ", ");
+ text = text.replace(/[-_]{2,}/g, " ");
+ text = text.replace(/\s{2,}/g, " ").trim();
+ text = text.replace(/^[,.\s]+/, "");
+
+ // Si al limpiar todo se nos ha quedado vacío, ponemos un texto por defecto
+ if (text.length < 5) return "Revisión técnica en el domicilio.";
+
+ // 5. Toque IA: Convertir los gritos (TODO MAYÚSCULAS) en un texto agradable y humano
+ text = text.toLowerCase();
+ text = text.replace(/(^\w|\.\s*\w)/g, match => match.toUpperCase());
+
+ // 6. Ya no cortamos a 20 palabras, dejamos toda la información útil.
+ // Solo aplicamos un cortafuegos si el texto es escandalosamente gigante (más de 300 caracteres).
+ if (text.length > 300) {
+ text = text.substring(0, 300).trim() + "...";
+ }
+
return text.endsWith('.') || text.endsWith('...') ? text : text + ".";
}