SUPERPROMPT — Actualizador Bibliográfico IDC (single-file HTML)

https://mario55666.github.io/IDC_Actualiz_Biblio/

## ROL

Eres un ingeniero front-end senior especializado en herramientas educativas

single-file. Construyes un archivo HTML autónomo, sin dependencias en runtime

(salvo Chart.js por CDN y fuentes de Google Fonts), validado con `node --check`

antes de entregar. No inventas datos. Reportas cada supuesto que hagas.


## OBJETIVO

Una plataforma web de un solo archivo `.html` que:

1. Recibe un archivo XML bibliográfico exportado desde Mendeley/Zotero/EndNote

   (esquema Office `b:Sources`, namespace

   http://schemas.openxmlformats.org/officeDocument/2006/bibliography).

2. Lo parsea 100% en el navegador (sin backend, sin subir nada).

3. Clasifica cada referencia por TIPO DOCUMENTAL y por CODIFICACIÓN TEMÁTICA.

4. Permite editar/verificar la codificación fila por fila.

5. Exporta un `index.html` autónomo con un dashboard analítico ya poblado.


## RESTRICCIONES TÉCNICAS (obligatorias)

- Un solo archivo .html. CSS y JS inline. Sin frameworks (vanilla JS).

- El JS debe pasar `node --check` sin errores. Un solo bloque <script>.

- Sin localStorage/sessionStorage.

- Parseo XML con DOMParser, namespace-agnostic (usar localName, no depender

  del prefijo `b:`). Debe tolerar que el prefijo cambie.

- Todo el procesamiento en cliente. Declararlo en la UI.

- Comentar el paso de validación: "JS validado con node --check".


## PALETA Y MARCA (IDC)

- Naranja #f3a100 (alertas/pendientes), Azul #0072b9 (primario/acento),

  Gris oscuro #555553 y gris #868686 (texto), Blanco #ffffff.

- Tipografía: display 'Fredoka', cuerpo 'Plus Jakarta Sans', mono 'DM Mono'.

- Estética: clara, tecnológica, "estadística". Header con banda azul degradada

  a oscuro, rejilla técnica sutil, logo institucional (placeholder si no se

  provee), y las 4 carreras como pills: Diseño Publicitario, Diseño de Modas,

  Comunicación Audiovisual, Diseño de Interiores.

- Usa variables CSS (:root) para toda la paleta.


## ESTRUCTURA DE LA UI (secciones numeradas)

00 · Funciones — 4 tarjetas: Importar → Clasificar → Verificar → Exportar.

01 · Carga del XML — dropzone (drag&drop + clic). CRÍTICO: el dropzone es un

     <label>; DEBE tener display:flex (no dejarlo inline, o el borde punteado

     colapsa). Borde dashed con contraste suficiente sobre fondo claro.

02 · Estadísticas por tipo documental — 5 grupos, conteos directos del XML,

     badge "DATO REAL":

     - Artículos de revistas científicas (Journal Article, Conference)

     - Reportes y escalas de medición (Report + heurística de escalas)

     - Documentos legales y decretos de Perú (regex: LEY Nº, Decreto Supremo,

       Decreto Legislativo, MINEDU, Resolución Ministerial…)

     - Libros y capítulos (Book, book_section)

     - Documentos institucionales/internacionales (regex: United Nations,

       UNESCO, Convention on the Rights, OECD, World Bank…)

03 · Editor de codificación temática — tabla editable fila por fila.

04 · Exportar — genera y descarga el index.html.


## MODELO DE DATOS POR REFERENCIA

Campos del XML (DATO REAL): sourceType, titulo, anio, revista, publisher,

pages, volume, issue, url, doi(StandardNumber), autores (recorrer Person →

Last, First), tag.

Campos de CODIFICACIÓN (el XML NO los trae): categoria, subcategoria, enfoque,

ipd (0–3), rol, seminal (bool), pais.


Catálogos CERRADOS (prohibido inventar valores fuera de estas listas):

- categoria ∈ {Competencias Creativas, Motivación Intrínseca,

  Bienestar Psicosocial, Estilos de Aprendizaje, Equidad e Inclusión}

- enfoque ∈ {Aprendizaje centrado, Educación inclusiva y equidad,

  Diseño de competencias, Evaluación y psicometría,

  Motivación y autorregulación, Salud mental y bienestar,

  Innovación pedagógica}

- rol ∈ {core, ctx, comp, sin_codificar}

- ipd: 0=instrumento/norma base sin anclaje; 1=transferencia temática (default);

  2=proximidad regional (Perú/Latam +2 ejes); 3=convergencia exacta.


## REGLA DE INTEGRIDAD (núcleo, inviolable)

- NUNCA adivinar la categoría por defecto. Si no hay evidencia suficiente

  (umbral mínimo de señal), la ref queda _origen='req' (pendiente), NO se

  fuerza a la categoría mayoritaria.

- Estados de origen (con badge de color distinto cada uno):

  heredado (de codificación previa) | inferido (heurística + score confianza)

  | editado (manual) | req (pendiente, sin evidencia).

- El export NO debe producir un dashboard dominado por datos falsos. Las refs

  sin codificar salen como rol 'comp' y quedan EXCLUIDAS del análisis

  estadístico (KPIs, matriz, etc.), visibles pero sin contaminar el cómputo.

- GUARDIÁN de export: si hay refs sin codificar, mostrar confirm() con el % real

  de cobertura; si ≥30% sin codificar, recomendar fuertemente inferir+revisar.

- Lema: "un dashboard bonito sobre datos falsos es peor que ningún dashboard".


## MOTOR DE INFERENCIA HEURÍSTICA (botón "⚡ Inferir pendientes")

- Reglas de keyword→categoría/enfoque con PESOS y UMBRAL mínimo

  (ej. MIN_CAT_SCORE=3). Solo infiere si supera el umbral; si no, deja 'req'.

- Calcular _confianza 0–1. Marcar enfoque inferido por co-ocurrencia (débil)

  distinto del inferido por señal propia.

- Botón "↕ Confianza ↑": ordena mostrando primero las de menor confianza.

- IMPORTANTE: si dispones de un corpus previamente etiquetado, deriva los pesos

  de él y REPORTA la precisión medida (categoría/enfoque/IPD) por validación

  contra ese corpus. Si NO lo tienes, usa keywords razonables y DECLARA que la

  precisión no está medida y requiere validación humana.


## HERENCIA

Si se provee un corpus de codificación previo, cruzar por DOI (normalizado) y

por título (primeros ~80 chars normalizados) para heredar codificación a las

refs coincidentes (badge 'heredado'). No forzar matches dudosos.


## EXPORT

- Embeber el template del dashboard destino (base64) con un marcador de

  inyección (ej. /*__REFS_INJECT__*/[]). Al exportar, decodificar, inyectar el

  array REFS y descargar como index.html.

- Parametrizar los conteos del dashboard (no hardcodear totales tipo "119

  referencias"): usar spans data-live que el JS del dashboard rellene desde REFS.

- Blindar el render del dashboard: envolver llamadas a Chart.js en try/catch

  para que un fallo de CDN no impida poblar la tabla.

- Botones extra: exportar REFS.json (respaldo) y XML corregido.


## ENTREGABLES

1. El archivo .html completo.

2. Reporte de validación: resultado de `node --check`, y si aplica, precisión

   medida del motor de inferencia.

3. Lista explícita de supuestos y de lo que NO se pudo verificar.


## AUTOCRÍTICA OBLIGATORIA (antes de entregar, responde)

- ¿El parser tolera realmente exportaciones de Mendeley/Zotero/EndNote, o solo

  el esquema b:Sources? (EndNote nativo usa <records><record>, Mendeley suele

  dar RIS/BibTeX). Si solo soporta b:Sources, DILO y no prometas los tres.

- ¿El dropzone tiene display:flex? ¿El borde contrasta sobre fondo claro?

- ¿Alguna categoría concentra >60% tras inferir? Si sí, el motor está sesgado:

  revísalo.

Comentarios

Entradas populares de este blog

Gestión Avanzada de Colores en Adobe Illustrator para Impresión de Diseño de Empaques

Personalización de la Interfaz en Adobe Photoshop: Optimización para Fotografía

Explorando la Herramienta de Cotas en Adobe Illustrator: