Volver a la wiki

kb.js v2 — Módulo de auto-marcado de términos del diccionario

Resumen técnico

Módulo: public/informes/_kb/kb.js
Versión: v2 (2026-07-09)
Arquitectura: Sistema de auto-marcado de términos basado en diccionario centralizado
Dependencias: glossary.json (consumida vía fetch en runtime)

El módulo marca automáticamente TODAS las apariciones de los 127 términos del [[feature—informes—diccionario-glosa-127-terminos|diccionario central]] en las páginas de informes públicos, sin tocar enlaces, código, títulos ni marcados manuales previos.

Componentes principales

1. Inicialización y bootstrap

2. Construcción del matcher

3. Escaneo y marcado automático

4. El globo flotante (tooltip)

5. Binding de términos marcados

Reglas de marcado

ReglaAplicación
Límites de palabraNo marca un término dentro de otro (firewall en firewallsudo se salta)
Caso en siglasDCIM matchea solo DCIM, no dcim (case-sensitive)
Caso en palabrascloud matchea Cloud, CLOUD, cloud (insensible, preserva forma)
AliasesAmbas formas (cloud y nube) activan el mismo gloss
Manuales gananUn <abbr data-kb="..."> puesto a mano se respeta y no se sobre-marca
Tags prohibidosNunca marca dentro de <a>, <code>, <pre>, <h1..h3>, <script>, <style>
Recursión guardadaMáximo 200 iteraciones por nodo para evitar bucles (safety)

Variables de control

var KB_ENABLED = true;                    // Apagar todo el sistema
var GLOSSARY_URL = '/informes/_kb/glossary.json';  // Ruta del JSON

Por página: añadir <html data-kb-off> para desactivar (respeta estructura del documento).

Por contenedor: añadir data-kb-scan="..." a un elemento para acotar el escaneo solo a su subárbol (por defecto <body>).

Ejemplos de uso

Activación implícita

<!-- Sin hacer nada, el módulo carga y marca automáticamente -->
<p>Para montar un datacenter con alta disponibilidad, 
   necesitas redundancia en energía (UPS + generador).</p>

<!-- Se transforma en: -->
<p>Para montar un <abbr data-kb="Centro de datos...">datacenter</abbr> 
   con alta disponibilidad, necesitas redundancia en energía 
   (<abbr data-kb="Sistema con baterías...">UPS</abbr> + generador).</p>

Marcado manual con prioridad

<!-- Esto respeta el gloss manual, no lo sobre-marca -->
<p>El <abbr data-kb="Custom gloss para este contexto">API</abbr> 
   del proveedor permite...</p>

Desactivación por página

<html data-kb-off>  <!-- Todo el sistema desactivado aquí -->
  <body>
    <p>datacenter, API, etc. NO se marcarán</p>
  </body>
</html>

Desactivación por contenedor

<html>
  <body>
    <p data-kb-scan>Esto SÍ se marca</p>
    <article>Esto NO se marca (fuera del scope)</article>
  </body>
</html>

Performance y optimizaciones

Cambios v1 → v2

Aspectov1v2
MarcadoSolo <abbr data-kb="..."> manualesAutomático desde diccionario
CoberturaLimitada a lo que el editor marcaba100% del diccionario
Límites de palabraManual (responsabilidad del editor)Automático (regex lookbehind/lookahead)
Case-sensitivityManualInteligente (siglas vs palabras)
AliasesNo soportadosSoportados (cloud + nube)
DiccionarioInline en HTMLCentralizado en JSON

Véase también

Subir