6.3 KiB
6.3 KiB
Changelog Oficial — Admin Edu-Space (UniCABA)
Todas las modificaciones notables a este proyecto serán documentadas en este archivo. El formato está basado en Keep a Changelog y este proyecto se adhiere a Semantic Versioning.
[Unreleased]
Planificado (Fase 2 del Roadmap MVP)
- Co-docencia en Cátedras: Asignación de múltiples profesores (titular, adjunto, ayudante) a una misma comisión.
- Matriz de Conflictos: Detección de solapamiento físico, docente y control de aforo en tiempo real.
- Regla de Restricción Diaria del Alumno: Validación para impedir cursar dos materias regulares el mismo día, con motor de excepciones para cursos cortos o autorización de Bedelía.
- Libro de Calificaciones (Gradebook): Carga rápida de notas y seguimiento de regularidad.
- Grilla Semanal Drag & Drop: Asignación visual interactiva para la oficina de Bedelía.
[2.1.0] - 2026-09-19
Añadido
- Ficha Detallada de Reserva (
schedule.view_reservation):- Implementación en BFF Node.js de la ruta
/schedule/view_reservation(soportando parámetros:id,?id=o selección automática del primer registro). - Vistas y controladores para modificar reservas con selectores en cascada (
/schedule/edit_reservation). - Endpoints de acción rápida en backend y BFF:
POST /schedule/confirm_reservationyPOST /schedule/cancel_reservation. - Actualización de enlaces en
today.html,list.html,dashboard.htmlyview.htmlpara navegar directamente con el identificador de la reserva (?id=...).
- Implementación en BFF Node.js de la ruta
- Creación y Asociación de Comisiones a Asignaturas (
admin/commissions_list):- Botón destacado
+ Nueva Comisiónen el encabezado y en el estado vacío de la tabla. - Modal interactivo
#modalAddCommissioncon selección obligatoria y clara de la Asignatura / Materia Asociada (<select name="subject_id" required>), mostrando código oficial, nombre y carrera. - Campos completos de cursada: cuatrimestre (1C/2C/Anual), año lectivo, turno, docente a cargo, cupo máximo y días/horarios.
- Generación y configuración automática de enlace a Google Meet institucional cuando no se ingresa un enlace personalizado.
- Alerta de confirmación visual (
?created=1) al registrar y vincular una comisión exitosamente. - Tabla de comisiones actualizada con visualización explícita del código de materia, nombre y badge de carrera.
- Botón destacado
- Enriquecimiento de la API REST:
- Endpoint
GET /api/v1/reservations/<id>ampliado con objetos relacionales anidados:classroom(código, edificio, piso, capacidad, descripción, virtualidad),commission(código, código compuesto, materia),user(docente, nombre, apellido, correo), duración en minutos y enlaces virtuales. - Endpoint
POST /api/v1/admin/commissionscon validación estricta de existencia de asignatura y resolución inteligente de unicidad.
- Endpoint
[2.0.0] - 2026-09-18
Añadido
- Reingeniería de Arquitectura Fullstack (Desacople Monolito -> Backend + BFF):
- Desacople completo del backend Python/Flask como una API REST pura bajo
/api/v1/retornando exclusivamente JSON. - Implementación del Frontend BFF en Node.js + Express con renderizado de servidor mediante Nunjucks.
- Autenticación sin estado (Stateless) basada en tokens JWT firmados con algoritmo HS256.
- Almacenamiento seguro del token de acceso en cookies del navegador con directivas
HttpOnly,SameSite=LaxySecure. - Inyección transparente del token
Beareren peticiones internas mediante cliente Axios centralizado.
- Desacople completo del backend Python/Flask como una API REST pura bajo
- Dashboards Personalizados por Rol Institucional:
- Dashboard de Bedelía (
/dashboard?role=bedelia): Métricas operativas de campus físico y virtual, cartelera del día y panel de aprobación de solicitudes pendientes. - Dashboard de Docente (
/dashboard?role=docente): Sesiones del día con botones directos para ingresar a reuniones virtuales (Meet/Teams/Zoom) y formulario de solicitud de aulas. - Dashboard de Alumno (
/dashboard?role=alumno): Brújula de cursada "¿Dónde curso hoy?" con ubicación por piso/aula o enlace virtual, junto al calendario de exámenes y entregas. - Dashboard de Administrador (
/dashboard?role=admin): Cockpit institucional de capacidad, usuarios, auditoría RBAC y distribución de comisiones. - Selector dinámico de vista previa de roles en el banner superior para administradores.
- Dashboard de Bedelía (
- Cartelera del Día Interactiva (
/schedule/today_schedule):- Grilla estructurada en bloques horarios (07:00 a 21:00 hs) con métricas en tiempo real de ocupación y reservas confirmadas/pendientes.
- Filtro dinámico para ocultar clases virtuales (
hide_virtual=1) y segmentación por pisos o turnos.
- Seguridad Enterprise (SecurityFilterChain):
- Pipeline centralizado de cabeceras de blindaje OWASP (
nosniff,SAMEORIGIN,X-XSS-Protection,Strict-Transport-Security). - Rate limiting dinámico contra ataques de fuerza bruta en endpoints de autenticación.
- Pipeline centralizado de cabeceras de blindaje OWASP (
Corregido
- Resolución de Colisión de Horarios en Clases Virtuales (Importador de Google Sheets):
- Corrección de la búsqueda de duplicados en
sheets_importer.pyque limitaba indebidamente la unicidad a(classroom_id, start_time, end_time). - Habilitación de concurrencia ilimitada para el aula virtual (
Campus Virtual · VIRTUAL) mediante discriminación porcommission_id. - El total de reservas registradas aumentó de 363 a 643 (incorporando 280 clases virtuales que eran descartadas por falso conflicto).
- Generación y guardado automático de enlaces institucionales de Google Meet (
https://meet.google.com/edu-{materia}-{comision}).
- Corrección de la búsqueda de duplicados en
[1.0.0] - 2026-09-04
Añadido
- Versión Monolítica Base (
legacy_admin-edu-space):- Aplicación monolítica en Flask con plantillas Jinja2 y persistencia SQLAlchemy (SQLite / PostgreSQL).
- Modelado de datos inicial para sedes, aulas físicas, materias, comisiones, usuarios y reservas.
- Sistema de roles inicial (Admin, Bedelía, Docente, Alumno) basado en sesión tradicional de Flask-Login.
- Calendario de reservas mensual y semanal con FullCalendar.
- Prototipo experimental de algoritmo genético para optimización de ocupación áulica.
- Módulo de sincronización inicial con planillas de Google Sheets.