diff --git a/configuracion.html b/configuracion.html index 7a59e8b..755bfc5 100644 --- a/configuracion.html +++ b/configuracion.html @@ -244,8 +244,8 @@
Cuando el cliente pregunte por costes, materiales o qué cubre el seguro, la IA usará el texto de la compañía que coincida con el expediente. La palabra clave se busca dentro del campo "Compañía" del expediente (sin importar mayúsculas ni el resto del texto alrededor).
+ +Cuando el cliente pregunte por costes, materiales o qué cubre el seguro, la IA usará el texto que coincida con el expediente. Puedes poner solo compañía, solo gremio (manitas, electricista, fontanería...), o ambos a la vez para que las condiciones cambien según el tipo de servicio dentro de una misma compañía. Si hay varias reglas que coinciden, se usa la más específica (compañía + gremio combinados).
Buscar compañía vista en tus expedientes
@@ -992,10 +992,11 @@ let currentTemplateType = null; let localGuilds = []; - document.addEventListener("DOMContentLoaded", () => { + document.addEventListener("DOMContentLoaded", async () => { if (!localStorage.getItem("token")) window.location.href = "index.html"; showTab('templates'); loadTemplates(); + await loadGuildsForCoverage(); loadWaSettings(); loadDetectedCompanies(); }); @@ -1196,7 +1197,7 @@ } document.getElementById('coverageRulesList').innerHTML = ""; - (s.coverage_rules || []).forEach(r => addCoverageRule(r.keyword, r.text)); + (s.coverage_rules || []).forEach(r => addCoverageRule(r.keyword, r.text, r.gremio_id)); document.getElementById('cfg_delay').checked = s.wa_delay_enabled !== false; document.getElementById('cfg_evt_welcome').checked = s.wa_evt_welcome || false; @@ -1208,23 +1209,42 @@ } catch(e) { console.error("Error cargando ajustes WA", e); } } - // 🧾 Condiciones de cobertura por compañía: cada fila es { keyword, text }. La IA - // busca esta "keyword" (sin mayúsculas ni tildes) DENTRO del campo Compañía del - // expediente, así que da igual si viene envuelta en texto de Multiasistencia, - // HomeServe, etc. — con que contenga la palabra clave (ej. "santander") es suficiente. - function addCoverageRule(keyword = "", text = "") { + // 🧾 Condiciones de cobertura por compañía y/o gremio: cada fila es + // { keyword, gremio_id, text }. La "keyword" (opcional) se busca sin mayúsculas ni + // tildes DENTRO del campo Compañía del expediente, así que da igual si viene envuelta + // en texto de Multiasistencia, HomeServe, etc. El "gremio_id" (opcional) es el id real + // de uno de tus gremios (Electricista, Fontanería, Manitas...), para que las + // condiciones cambien según el tipo de servicio. Puedes dejar cualquiera de los dos + // vacío: solo compañía, solo gremio, o ambos combinados (más específico). + let guildsCache = []; + + async function loadGuildsForCoverage() { + try { + const res = await fetch(`${API_URL}/guilds`, { headers: { "Authorization": `Bearer ${localStorage.getItem("token")}` } }); + const data = await res.json(); + guildsCache = data.guilds || []; + } catch (e) { console.error("Error cargando gremios", e); guildsCache = []; } + } + + function addCoverageRule(keyword = "", text = "", gremioId = "") { const wrap = document.createElement('div'); wrap.className = "coverage-rule-row bg-white border border-slate-200 rounded-lg p-3 space-y-2"; + const gremioOptions = [''] + .concat(guildsCache.map(g => ``)) + .join(''); wrap.innerHTML = ` -Deja la palabra clave vacía para que aplique a cualquier compañía, o "Todos los gremios" para que aplique sin importar el tipo de servicio.
`; document.getElementById('coverageRulesList').appendChild(wrap); wrap.querySelector('.cr-keyword').value = keyword; wrap.querySelector('.cr-text').value = text; + wrap.querySelector('.cr-gremio').value = gremioId || ""; if (window.lucide) lucide.createIcons(); } @@ -1294,9 +1314,10 @@ const coverageRules = [...document.querySelectorAll('#coverageRulesList .coverage-rule-row')] .map(row => ({ keyword: row.querySelector('.cr-keyword').value.trim(), + gremio_id: row.querySelector('.cr-gremio').value.trim(), text: row.querySelector('.cr-text').value.trim() })) - .filter(r => r.keyword && r.text); + .filter(r => (r.keyword || r.gremio_id) && r.text); const settings = { wa_ai_enabled: document.getElementById('cfg_ai_enabled').checked,