Informe de Funcionalidades
Cronograma AE Tajo v2.5 — Aplicación de Gestión de Acciones Formativas
Fecha: Marzo 2026
Version: 2.5
URL: cronograma.tajoformacion.es
1. Descripción General
Cronograma AE Tajo es una aplicación web para la gestión integral de acciones formativas en Autoescuela Tajo. Permite planificar, asignar y supervisar cursos, prácticas y actividades formativas, gestionando profesores, aulas, centros, alumnos y horarios de forma centralizada.
Stack tecnológico:
Node.js
Express
SQLite (sql.js)
HTML/CSS/JS vanilla
Nodemailer
bcrypt
xlsx
Despliegue en Windows Server 2022 con acceso externo via Cloudflare.
2. Sistema de Autenticación y Roles
2.1 Autenticación
- Página de login independiente (
login.html) con formulario de usuario y contraseña.
- Contraseñas almacenadas con hash bcrypt (10 rounds).
- Sesiones gestionadas con
express-session, duración máxima de 24 horas con rolling.
- Redirección automática al calendario si la sesión está activa.
2.2 Roles de Usuario
| Rol | Permisos | Vista por defecto |
| Admin |
Acceso completo: CRUD de acciones, profesores, centros, aulas, ausencias, cursos, alumnos, usuarios. Importación, exportación, notificaciones. |
Mes |
| Supervisor |
Solo lectura del calendario completo. Ve colores de todos los profesores. Filtros por curso, profesor, centro. No puede crear, modificar ni eliminar. |
Mes |
| Profesor |
Solo sus propias acciones. Vista en gris (sin colores de otros). No puede filtrar por curso. Puede editar su perfil personal. |
Día |
Acceso especial: El usuario antonio.gomez tiene acceso exclusivo a la Gestión de Cursos y Alumnos, y a los Logs de Errores.
2.3 Gestión de Cuenta
- Cambio de contraseña: Desde la barra superior, clic en el saludo «¡Hola, [nombre]!». Requiere contraseña actual y nueva (mínimo 4 caracteres).
- Perfil de profesor: Los profesores pueden editar nombre, email, teléfono y color desde el sidebar.
2.4 Footer Contextual por Rol
El pie de página muestra enlaces a documentación diferente según el rol del usuario:
| Rol | Enlaces visibles en el footer |
| Admin | Informe de Funcionalidades + Manual de Instrucciones |
| Supervisor | Manual del Supervisor |
| Profesor | Manual del Profesor |
3. Interfaz Principal
3.1 Barra de Navegación Superior (v2.5)
Barra horizontal fija en la parte superior (53px de alto). Contiene:
- Logo de Autoescuela Tajo.
- Links de navegación: Calendario (siempre visible), Cursos (solo admin).
- Saludo personalizado: Muestra «¡Hola, [primer nombre]!» en lugar del nombre completo. Clickable para acceder al cambio de contraseña.
- Botón «Salir».
3.2 Sidebar (Menu Lateral)
Panel lateral fijo a la izquierda con:
- Badges de alertas (solo admin): Conflictos, sin profesor, sin horario, sin aula.
- Filtros: Centro, Otros Centros (colapsable), Cursos (con buscador), Profesores (con buscador).
- Menu agrupado en 4 secciones colapsables (v2.5), visibles solo para administradores:
- Datos y Consultas: Listado de Acciones, Horas Profesores, Distribución de Clases.
- Gestión: Profesores, Centros y Aulas, Ausencias, Usuarios, Gestión de Cursos.
- Importar / Exportar: Importar Cronograma.
- Comunicación y Logs: WhatsApp Semanal, Logs de Envios, Logs de Errores.
Visibilidad por rol: Los menús de gestión (Datos y Consultas, Gestión, Importar/Exportar, Comunicación y Logs) solo son visibles para usuarios con rol admin. Los supervisores y profesores no ven estas secciones en el sidebar.
Solo un grupo puede estar abierto a la vez; el activo se resalta en azul. En móvil el sidebar es un overlay deslizante.
3.3 Layout Fijo (v2.5)
- Barra superior fija (53px).
- Sidebar fijo a la izquierda (280px).
- Solo el contenido del calendario hace scroll, eliminando scrollbars duplicados.
- Scrollbars finos (6px) y sutiles en toda la aplicación.
4. Calendario - Vistas
4.1 Vista Mensual
- Grid completo del mes con acciones agrupadas por centro dentro de cada celda.
- Cada acción identificada por el color de su profesor o color personalizado.
- Domingos y festivos con fondo rojo claro (
#fef2f2).
- Click en fecha vacía para crear; click en acción para editar.
4.2 Vista Semanal
- Lunes a domingo, organizada por centros con secciones mañana/tarde.
- Cabecera compacta: día y número en una sola línea (v2.5).
- Domingos y festivos sombreados en rojo claro en toda la columna (v2.5).
- En móvil: días apilados verticalmente.
4.3 Vista Diaria
- Timeline con franjas de mañana (06:00-14:00) y tarde (14:00-22:00).
- Detalle completo: nombre, horario, profesor, centro, aula, observaciones.
- Vista predeterminada para profesores.
4.4 Controles de Cabecera
| Control | Función |
| Flechas ← → | Navegación prev/next según vista activa |
| «Hoy» | Volver al día actual |
| Mes / Sem / Día | Cambiar entre vistas |
| Selector de fecha | Ir a una fecha concreta |
| Todo / Mañana / Tarde | Filtro de turno horario |
| Todos | Pío XII | Puebla | Madrid | Teleform. | Botones rápidos de filtrado por centro en la cabecera, sin necesidad de usar el sidebar. El centro activo se resalta visualmente. |
| Solo Prácticas | Botón compacto de tipo toggle en la cabecera para filtrar únicamente las sesiones de prácticas de conducción. |
| Exportar | Genera Excel de la semana (solo vista semanal) |
| + Nueva | Crear acción formativa (solo admin) |
5. Acciones Formativas
5.1 Campos
- Obligatorios: Nombre, Fecha, Hora inicio, Hora fin.
- Opcionales: Color, Fecha fin (rango), Profesor, Número de alumnos, Centro, Aula, Grupo aula, Observaciones, Alumno prácticas.
5.2 Tipos Especiales
| Tipo | Indicador visual | Conflicto de aula | Uso |
| Práctica (vehículo) | Borde rojo + tag Circ./Pista | No | Clases prácticas de conduccion |
| Aula Virtual | Borde cyan | No | Clases online/teleformación |
| Tarea Especial | Borde fucsia | No | Reuniones, exámenes, etc. |
| Reserva de Aula (v2.5) | Borde naranja + fondo amarillo | Si | Alquiler de instalaciones |
| Mostrar observaciones (v2.5) | Texto visible en calendario | N/A | Notas visibles sin abrir |
Los tipos se almacenan como tags en el campo observaciones (ej: [práctica][circulacion]) y se gestionan via checkboxes en el formulario.
5.3 Operaciones
- Creación: Formulario modal. Creación individual o en rango de fechas.
- Edición: Click en la acción. Verificación de conflictos en tiempo real (debounce 300ms).
- Eliminación: Individual o masiva. Notificación automática al profesor por email.
- Duplicación: Copiar a multiples fechas con selector semanal (L, M, X, J, V, S, D).
6. Festivos y Días No Laborables (v2.5)
6.1 Visualización
- Los domingos y festivos oficiales se muestran con fondo rojo claro en todas las vistas (mensual, semanal, diaria).
- Los días no laborables personalizados (puentes, cierres) se muestran con el mismo estilo.
6.2 Gestión de Días No Laborables
- Desde Gestionar Ausencias, sección «Días no laborables».
- Crear: indicar fecha y motivo. Se crean como festivos para todos los centros con ámbito
empresa.
- Eliminar individualmente.
7. Gestión de Profesores
- Modal desde sidebar: Gestión > Profesores.
- Edición inline de nombre, email, teléfono (click directo sobre el campo).
- Selector de color por profesor.
- Activar/desactivar profesores (los inactivos no aparecen en desplegables).
- Buscador en el sidebar con lista filtrable.
8. Gestión de Centros y Aulas
- Modal desde sidebar: Gestión > Centros y Aulas.
- Centros como secciones con aulas asociadas.
- Edición inline de nombre, capacidad (alumnos), metros cuadrados.
- Añadir y eliminar aulas dentro de cada centro.
9. Gestión de Ausencias
- Modal desde sidebar: Gestión > Ausencias.
- Tipos: Día completo, Mañana, Tarde, Rango horario personalizado.
- Motivo opcional.
- Las ausencias generan conflictos automáticos si el profesor tiene acciones asignadas.
- Sección de días no laborables personalizados (v2.5).
10. Sistema de Detección de Conflictos
10.1 Tipos de Conflictos
| Tipo | Badge | Descripción |
| Conflicto de profesor | Rojo | Solapamiento de horarios del mismo profesor |
| Conflicto de aula | Rojo | Solapamiento en la misma aula (excepto: mismo grupo_aula, prácticas, aula virtual, tarea especial) |
| Sin profesor | Amarillo | Acciones sin profesor asignado |
| Sin horario | Gris | Acciones con hora 00:00-00:00 |
| Sin aula | Azul | Acciones sin aula asignada |
10.2 Indicadores
- Badges en el sidebar con conteo de cada tipo.
- Panel lateral deslizante con detalle de cada conflicto al pulsar un badge.
- Verificación en tiempo real al editar acciones (debounce 300ms).
11. Gestión de Cursos y Alumnos
Página independiente (acciones.html) accesible desde la barra superior. Solo para el administrador principal.
11.1 Vista de Listado
- Pestañas por estado: En ejecucion, Planificados, Finalizados, Todos.
- Filtros: búsqueda de texto, categoría, profesor, centro.
- Tabla: nombre, categoría, sesiones, período, estado, progreso (barra), expediente.
- Exportación CSV.
11.2 Categorías
PRIVADOS
MODALIDAD I/II
DUAL
DESEMPLEADOS MADRID
OCUPADOS MADRID
ESTATAL HABILITANTE/MULTISECTORIAL
CURSOS CAP/ADR
PERMISOS POR PUNTOS
AUTOESCUELA
11.3 Detalle de Curso
- Datos: Categoría, expediente, código SEPE, certificado, horas planificadas.
- Progreso: Barra visual de horas programadas vs impartidas, con desglose por profesor.
- Pestaña Sesiones: Filtro todas/pendientes/impartidas.
- Pestaña Alumnos: Matriculación, importación Excel, búsqueda (sin acentos), documentacion, asistencia, evaluación.
- Pestaña Historial: Registro automático de cambios.
11.4 Gestión de Alumnos
- Matriculación individual con validación de DNI duplicado.
- Importación masiva desde Excel (plantilla descargable).
- Documentacion por alumno: subida de archivos (max 10MB), indicador visual verde/rojo.
- Asistencia en lote por rango de fechas. Alerta si asistencia < 75%.
- Evaluación APTO/NO APTO. Exportación CSV.
12. Notificaciones por Email
12.1 Configuración
- SMTP:
smtp.serviciodecorreo.es puerto 465 (SSL).
- Remitente:
cronograma@tajoformacion.es.
12.2 Notificaciones Automáticas
- Al crear, modificar, eliminar o desasignar una acción del profesor.
- Resumen semanal: Viernes a las 14:00. Reporte de envío al admin 5 minutos después.
12.3 Notificación Manual
Desde el formulario de edición de cualquier acción, botón «Email».
13. Notificaciones WhatsApp
- Resumen semanal: Genera enlace
wa.me por profesor con mensaje formateado.
- Notificación urgente: Desde formulario de edición de acción.
- Formateo automático de teléfonos al formato internacional (+34).
14. Importación desde Excel
- Modos: Cronograma (acciones generales) y Prácticas.
- Preview con detección de duplicados y matching automático de profesores.
- Asignación de centro y aula destino.
- Sistema de alias para matching de nombres de profesores (ej: «Ma Jesus» → «Maria Jesus Jimenez»).
15. Listado de Acciones (Edición Masiva)
- Vista en tabla con buscador y ordenación por columnas.
- Selección multiple con checkboxes.
- Operaciones masivas: cambiar profesor, nombre, color, eliminar.
16. Horas Profesores
- Tabla resumen de horas asignadas por profesor y mes.
- Filtros por profesor y mes.
17. Distribución de Clases
- Análisis de uso de aulas por centro.
- Datos: capacidad, metros cuadrados, porcentaje de utilización.
18. Logs y Monitorización
- Logs de Email: Historial completo con estado de envío (OK/Error) y detalle del error.
- Logs de WhatsApp: Registro de mensajes generados.
- Logs de Errores (solo
antonio.gomez): Errores frontend y backend con stack trace, timestamp y contexto.
19. Diseño Responsive
19.1 Móvil (≤ 768px)
- Barra superior compacta (44px). Nombre de usuario oculto.
- Sidebar como overlay deslizante (translateX).
- Botones de centro y Solo Prácticas ocultos en la cabecera para ahorrar espacio. El filtrado de centro se realiza desde el sidebar.
- Vista semanal con días apilados verticalmente.
- Vista diaria optimizada como predeterminada para profesores.
19.2 Scrollbars (v2.5)
- Scrollbars finos (6px) con color sutil (
#cbd5e1).
- Layout fijo: solo el contenido del calendario hace scroll.
20. Base de Datos
Tablas Principales
| Tabla | Descripción |
usuarios | Cuentas de login con roles (admin, supervisor, profesor) |
profesores | Datos de profesores (nombre, email, teléfono, color, activo) |
centros / aulas | Centros de formación y aulas asociadas |
acciones_formativas | Tabla principal de planificación (sesiones) |
cursos | Datos administrativos (categoría, expediente, SEPE) |
alumnos | Datos personales de alumnos |
curso_alumnos | Matriculaciones (relación curso-alumno) |
asistencias | Registro de asistencia por sesión y alumno |
documentos_alumno | Documentacion con archivo adjunto (BLOB) |
ausencias | Ausencias de profesores con tipo y rango |
festivos | Festivos oficiales y días no laborables personalizados |
historial_acciones | Log de cambios en acciones formativas |
historial_cursos | Log de cambios en cursos |
email_logs | Registro de emails enviados |
whatsapp_logs | Registro de mensajes WhatsApp |
error_logs | Errores frontend y backend |
Las migraciones se ejecutan automáticamente al iniciar el servidor (ALTER TABLE con try/catch para idempotencia).
21. API REST
Todos los endpoints están protegidos por autenticación. Las operaciones de modificación requieren rol admin.
| Recurso | Operaciones |
| Autenticación | Login, logout, sesión, cambio de contraseña, perfil |
| Profesores | CRUD completo + activar/desactivar |
| Centros / Aulas | CRUD completo |
| Acciones | CRUD + batch (profesor, color, nombre, eliminación masiva) + duplicación + búsqueda |
| Cursos | CRUD + historial + importar alumnos + asistencia lote |
| Alumnos | CRUD + matriculación + documentos (upload/download) |
| Ausencias | CRUD |
| Festivos | GET, POST (crea en todos los centros), DELETE |
| Conflictos | Verificación en tiempo real + reporte mensual |
| Notificaciones | Email y WhatsApp (automático y manual) |
| Importación | Preview y ejecucion |
| Logs | Email, WhatsApp, Errores (GET) |
22. Infraestructura
| Componente | Tecnologia |
| Backend | Node.js + Express |
| Base de datos | SQLite (sql.js, in-memory con persistencia a disco) |
| Email | Nodemailer (SMTP puerto 465) |
| Servidor | Windows Server 2022 — 192.168.2.200 |
| DNS / CDN | Cloudflare |
| Repositorio | GitHub (github.com/aetajo/cronograma-gemma) |
| Ramas | dev (desarrollo), master (produccion) |