Analizador Inteligente de Calificaciones para Aulas Virtuales
Una aplicación web moderna para analizar y visualizar el desempeño académico de estudiantes en diferentes aulas virtuales. Permite importar datos de bases de datos y calificaciones en formatos Excel/ODS, con detección automática de configuraciones de aula y generación de reportes interactivos.
- 📊 Análisis Inteligente de Datos: Procesa archivos Excel/ODS (.xlsx, .ods) con datos de estudiantes y calificaciones
- 🔍 Detección Automática de Aulas: Identifica automáticamente la configuración del aula basándose en los datos importados
- 📈 Visualización Interactiva: Genera tablas dinámicas con filtros y búsqueda en tiempo real
- 📱 Interfaz Responsive: Diseño moderno y adaptable a dispositivos móviles
- 🎓 Soporte Multi-Aula: Compatible con múltiples configuraciones de aulas (IHS, MT-IS, MT-IIS, etc.)
- 📋 Reportes Flexibles: Modo reporte que oculta/muestra calificaciones según necesidad
- 👥 Análisis por Grupos: Filtrado dinámico por grupo, módulo y estado de completitud
- 📸 Captura de Pantalla: Exportar análisis como imágenes (html2canvas)
- 💬 Integración WhatsApp: Generador de listas formateadas para compartir en WhatsApp
anali-tic/
├── index.html # Punto de entrada principal (v2.0)
├── config/ # Configuraciones de aulas
│ └── aulas/
│ ├── 2026_IHS_IS.json # Identidad Histórica y Sociocultural
│ ├── 2026_MT_IIS.json # Módulo II de Ingeniería de Sistemas
│ └── 2026_MT_IS.json # Módulo de Informática Superior
├── css/
│ └── styles.css # Estilos personalizados de la aplicación
├── js/
│ ├── app.js # Orquestador principal - flujo de la aplicación
│ ├── core/ # Lógica central y procesamiento de datos
│ │ ├── fileParser.js # Lectura y parseo de archivos Excel/ODS
│ │ ├── aulaMatcher.js # Detección inteligente de aulas
│ │ └── analyzer.js # Análisis y procesamiento de datos
│ └── ui/ # Componentes de interfaz de usuario
│ ├── tableRenderer.js # Renderizado de tablas y filtros
│ ├── chartRenderer.js # Generación de gráficos y visualizaciones
│ └── modalRenderer.js # Componentes de modales y diálogos
└── README.md # Este archivo
- Navegador moderno con soporte ES6 (Chrome, Firefox, Safari, Edge)
- Archivos de datos en formato Excel (.xlsx) u ODS (.ods)
-
Clonar o descargar el repositorio
git clone https://github.com/nanypoe/anali-tic.git cd anali-tic -
Abrir en navegador
- Opción 1: Abrir directamente
index.htmlen el navegador - Opción 2: Usar un servidor local (recomendado):
# Con Python 3 python -m http.server 8000 # Con Node.js (http-server) npx http-server
- Luego acceder a
http://localhost:8000
- Opción 1: Abrir directamente
-
Cargar Archivos:
- Hacer clic en "Cargar Base de Datos" y seleccionar archivo con datos de estudiantes
- Hacer clic en "Cargar Calificaciones" y seleccionar archivo con calificaciones
-
Procesamiento Automático:
- La aplicación detecta automáticamente la configuración de aula
- Procesa y analiza los datos
- Genera la interfaz de análisis
-
Explorar Datos:
- Seleccionar módulos usando las píldoras en la parte superior
- Filtrar por grupo usando el selector desplegable
- Usar píldoras de estado (Todos, Completados, Pendientes, etc.)
- Buscar estudiantes por nombre
-
Generar Reportes:
- Usar botón "Ocultar/Mostrar Calificaciones" para modo reporte
- Exportar como imagen con captura de pantalla
- Generar listas para WhatsApp
Las configuraciones de aula se definen en archivos JSON bajo config/aulas/. Cada archivo especifica:
- id: Identificador único de la aula
- nombre: Nombre descriptivo del módulo/aula
- convalidaciones_map: Mapeo de nombres de módulos para detectar variantes
- modulos: Estructura de módulos con unidades y cuestionarios
{
"id": "26_ihs_1semestre",
"nombre": "Identidad Histórica y Sociocultural de Nicaragua",
"convalidaciones_map": {
"Identidad Histórica y Sociocultural de Nicaragua": "conv_IHS"
},
"modulos": {
"Identidad Histórica y Sociocultural de Nicaragua": {
"Unidad 1": [
"Cuestionario:Act1.2-Cuest-Saberes ancestrales..."
],
"Unidad 2": [
"Cuestionario:Act.2.2-Cuest-Espíritu de resistencia..."
]
}
}
}- Crear archivo JSON en
config/aulas/siguiendo el formato anterior - Actualizar lista de archivos en
js/core/aulaMatcher.js - Recargar la aplicación
- Frontend: HTML5, CSS3, JavaScript ES6+ (Módulos)
- CSS Framework: Bootstrap 5.3
- Librerías:
- SheetJS (XLSX): Lectura de archivos Excel/ODS
- html2canvas: Captura de pantalla
- Bootstrap Icons: Iconografía
┌─────────────────┐
│ Cargar Archivos│
└────────┬────────┘
│
▼
┌──────────────────────┐
│ fileParser.js │ ← Leer Excel/ODS
│ Extraer datos │
└────────┬─────────────┘
│
▼
┌──────────────────────┐
│ aulaMatcher.js │ ← Detectar configuración
│ Seleccionar config │
└────────┬─────────────┘
│
▼
┌──────────────────────┐
│ analyzer.js │ ← Procesar y analizar
│ Calcular métricas │
└────────┬─────────────┘
│
▼
┌──────────────────────┐
│ tableRenderer.js │ ← Renderizar UI
│ chartRenderer.js │
│ modalRenderer.js │
└──────────────────────┘
Responsabilidad: Lectura y parseo de archivos
leerArchivo(file): Lee archivos .xlsx/.ods y extrae datos en JSON- Extrae automáticamente nombres de columnas
- Manejo de errores con mensajes descriptivos
- Soporta múltiples formatos de hoja de cálculo
Responsabilidad: Detección inteligente de aula
detectarConfiguracionAula(columnasCalificaciones): Identifica qué configuración JSON se ajusta mejor- Algoritmo de matching por coincidencias de cuestionarios
- Desempate automático eligiendo configuración más específica
- Carga dinámica de archivos JSON de configuración
Responsabilidad: Análisis y procesamiento de datos
analizarEstudiantes(dbData, gradesData, config): Procesa y analiza datosobtenerValorCampo(): Búsqueda flexible de campos (insensible a mayúsculas, tildes)deducirTurno(): Detecta turno académico (Diurno, Nocturno, Sabatino, etc.)- Genera objetos de estudiantes enriquecidos con métricas
- Calcula porcentajes de completitud por unidad/módulo
Responsabilidad: Renderizado dinámico de tablas
inicializarControlesTabla(): Configura todos los filtros y búsquedarenderizarPildorasModulos(): Genera píldoras de módulos clicablespopularSelectorGrupos(): Llena selector dinámicamenteconfigurarFiltrosEstado(): Configura filtros de completitud- Actualización en tiempo real de tabla según filtros
- Integración con modalRenderer para acciones
Responsabilidad: Generación de gráficos y visualizaciones
- Renderizado de gráficos de progreso
- Estadísticas visuales por grupo/módulo/unidad
- Integración con librerías de gráficos
Responsabilidad: Componentes modales y diálogos
mostrarModalBoletaIndividual(): Boleta individual de estudiantecopiarListaWhatsAppGrupal(): Genera lista formateada para WhatsAppmostrarModalCredenciales(): Muestra credenciales de acceso- Diálogos interactivos reutilizables
Debe contener al menos:
- Nombres/Identificadores de estudiantes
- Grupo/Turno
- Carrera/Programa
Debe contener:
- Identificador de estudiante (para matching)
- Columnas de cuestionarios/actividades (nombres deben coincidir con config)
- Calificaciones o estado de completitud
Editar css/styles.css para cambiar colores, tamaños y estilos.
- Crear
config/aulas/2026_[CODIGO].json - Definir estructura de módulos y cuestionarios
- Agregar archivo a lista en
aulaMatcher.js
- Agregar nuevos renderers en
js/ui/ - Extender lógica de análisis en
js/core/analyzer.js - Crear nuevos componentes siguiendo patrón de módulos ES6
| Problema | Solución |
|---|---|
| No detecta aula correctamente | Verificar que nombres de columnas en Excel coincidan con configuración |
| Archivo no carga | Usar formato .xlsx o .ods; verificar estructura del archivo |
| Errores en consola | Abrir DevTools (F12) y revisar mensajes de error detallados |
| Tabla vacía | Verificar que archivos tengan datos y estructura válida |
- El proyecto usa módulos ES6 para mejor organización y reutilización
- Sin dependencias de npm: Todas las librerías se cargan desde CDN
- Arquitectura modular: Fácil de mantener, testear y extender
- Manejo de errores: Mensajes descriptivos en toda la aplicación
- Performance: Procesamiento asincrónico para archivos grandes
Para contribuir al proyecto:
- Fork del repositorio
- Crear rama para feature:
git checkout -b feature/nueva-feature - Commit cambios:
git commit -m "Añadir nueva feature" - Push a rama:
git push origin feature/nueva-feature - Abrir Pull Request
Proyecto desarrollado para fines educativos.
nanypoe - GitHub Profile
Para reportar bugs o solicitar features, abrir un issue en el repositorio.
- ✅ Refactorización completa con arquitectura modular
- ✅ Separación de componentes de UI
- ✅ Detección inteligente de aulas
- ✅ Interfaz modernizada con Bootstrap 5
- ✅ Sistema de configuración dinámico
- ✅ Análisis flexible de datos
- 🔹 Versión inicial monolítica
Última actualización: 2026-08-17