diff --git a/aceptar.html b/aceptar.html
index 4c982b8..2991d80 100644
--- a/aceptar.html
+++ b/aceptar.html
@@ -51,11 +51,11 @@
-
+
-
Resumen del Siniestro
-
--
+
Resumen Inteligente
+
--
@@ -102,29 +102,40 @@
});
// ==========================================
- // LÓGICA DE RESUMEN INTELIGENTE (IA JS)
+ // 🧠 LÓGICA DE RESUMEN INTELIGENTE TIPO "IA"
// ==========================================
function smartSummarize(text) {
- if (!text || text.trim() === "") return "REVISAR AVERÍA";
+ if (!text || text.trim() === "") return "Se requiere asistencia técnica en el domicilio.";
- // 1. Quitamos saltos de línea y forzamos minúsculas
- let clean = text.replace(/(\r\n|\n|\r)/gm, " ").toLowerCase();
+ // 1. Limpiamos basura, dobles espacios y saltos de línea
+ let clean = text.replace(/(\r\n|\n|\r)/gm, " ").replace(/\s+/g, " ").trim();
- // 2. Cortamos si detectamos que empiezan las notas administrativas
- const cutIndex = clean.search(/(\bmo\b|\bm\.o\b|\bmaterial\b|\basegurado\b|\btelefono\b|\burgente\b|\bobservaciones\b)/i);
- if (cutIndex > 5) clean = clean.substring(0, cutIndex);
-
- // 3. Separamos por palabras y filtramos las palabras vacías/comunes
- const stopWords = ['el', 'la', 'los', 'las', 'un', 'una', 'unos', 'unas', 'de', 'del', 'a', 'ante', 'con', 'para', 'por', 'y', 'e', 'o', 'u', 'en', 'que', 'su', 'se', 'ha', 'al', 'es'];
-
- let words = clean.replace(/[^\w\sáéíóúüñ]/gi, '').split(/\s+/); // Quitamos comas y puntos
- let keywords = words.filter(w => w.length > 2 && !stopWords.includes(w));
-
- // 4. Tomamos solo las primeras 5 palabras clave
- if (keywords.length > 5) {
- return keywords.slice(0, 5).join(' ') + "...";
+ // 2. Cortamos el texto justo antes de que empiecen las notas administrativas (teléfonos, pólizas, asegurados)
+ const cutPattern = /\b(mo\b|m\.o\b|material:|asegurado:|telefono:|teléfono:|urgente:|observaciones:|franquicia:|poliza:|tramitador:)/i;
+ const cutIndex = clean.search(cutPattern);
+ if (cutIndex > 10) {
+ clean = clean.substring(0, cutIndex).trim();
}
- return keywords.join(' ') || "REVISAR AVERÍA";
+
+ // 3. Le damos formato Humano (Primera letra mayúscula, el resto normal para que sea legible)
+ clean = clean.charAt(0).toUpperCase() + clean.slice(1).toLowerCase();
+
+ // 4. Extracción de frases clave: Separamos por puntos y cogemos máximo 2 frases
+ let sentences = clean.match(/[^.!?]+[.!?]+/g);
+ if (!sentences) {
+ // Si no había puntos, cortamos elegantemente a los 130 caracteres sin partir palabras
+ if (clean.length > 130) {
+ let cutText = clean.substring(0, 130);
+ return cutText.substring(0, cutText.lastIndexOf(" ")) + "...";
+ }
+ return clean + (clean.endsWith('.') ? '' : '.');
+ }
+
+ if (sentences.length >= 2) {
+ return sentences.slice(0, 2).join(' ').trim() + " ...";
+ }
+
+ return sentences[0].trim();
}
async function loadAssignmentData() {
@@ -139,18 +150,23 @@
document.getElementById('guild').innerText = raw["Gremio"] || "Servicio General";
document.getElementById('ref').innerText = raw["Expediente"] || "Sin Ref";
- // 2. PROCESADO DE DIRECCIÓN (Solo calle, corta antes del número)
+ // 2. PROCESADO DE DIRECCIÓN ESTRICTO (Corta en el primer número)
const fullAddress = raw["Dirección"] || raw["DOMICILIO"] || "";
let streetOnly = fullAddress;
- // Busca el primer dígito y corta el string justo antes
- const streetMatch = fullAddress.match(/^([^0-9]+)/);
- if (streetMatch && streetMatch[1]) {
- streetOnly = streetMatch[1].replace(/[,/-]+$/, '').trim(); // Quita comas finales
+ // Buscamos dónde empieza el número de la calle
+ const numberIndex = fullAddress.search(/\d/);
+ if (numberIndex > 3) { // Si el número está después de la 3ra letra (ej: Calle 2)
+ streetOnly = fullAddress.substring(0, numberIndex).replace(/[,/-]+$/, '').trim();
+ } else if (numberIndex === -1) {
+ // Si es una dirección rara sin números, la dejamos tal cual pero la limpiamos
+ streetOnly = fullAddress.trim();
}
- if(!streetOnly) streetOnly = "Dirección Oculta";
+
+ // Si nos hemos cargado la calle por error, devolvemos un texto seguro
+ if(!streetOnly || streetOnly.length < 3) streetOnly = "Calle Oculta";
- const city = raw["Población"] || "Ciudad sin especificar";
+ const city = raw["Población"] || "Localidad sin especificar";
const cp = raw["Código Postal"] || "---";
document.getElementById('location-street').innerText = streetOnly;