Files
admin-edu-space/CHANGELOG_MVP.md
T

4.0 KiB

CHANGELOG MVP — Admin Edu-Space (UniCABA)

Registro de hitos y versiones correspondientes a las Fases del ROADMAP_MVP.md.


[Fase 2: Co-docencia, Matriz de Conflictos y Regla Diaria] — v2.6.0 (2026-09-19)

Estado: ✅ 100% Completada

Estadio 2.1 — Modelo y Gestión Integral de Co-docencia

  • Modelo CommissionTeacher: Soporte para múltiples docentes por comisión en base de datos (commission_teachers), admitiendo roles académicos diferenciados (Titular, Adjunto, JTP, Ayudante) y flag is_primary.
  • API REST de Cátedras: Endpoints POST /api/v1/commissions/<id>/teachers y DELETE /api/v1/commissions/<id>/teachers/<user_id> con serialización completa de cátedra en comisiones.
  • Interfaz de Gestión: Tarjeta interactiva "Equipo Docente / Cátedra" en /admin/commission_detail para incorporar y desvincular profesores con rol dinámico, y visualización de badges en /admin/commissions_list.

Estadio 2.2 — Matriz de Conflictos y Validación Integral

  • Conflicto Físico: Bloqueo estricto e infranqueable de superposiciones de reservas en la misma aula física (ReservationRepository.find_overlapping).
  • Conflicto Docente: Detección de doble asignación simultánea para un mismo docente en diferentes aulas o formatos.
  • Excepción Justificada por Co-docencia: Si un docente asignado presenta solapamiento pero la comisión cuenta con co-docentes registrados en CommissionTeacher, la matriz de validación autoriza la reserva validando la cobertura del equipo de cátedra.
  • Conflicto de Aforo: Bloqueo estricto cuando expected_attendees > classroom.capacity en espacios físicos.
  • Endpoint de Pre-validación: POST /api/v1/reservations/check-conflicts para validación asíncrona de conflictos físicos, docentes y de aforo antes del commit.

Estadio 2.3 — Regla de Restricción Diaria del Alumno y Motor de Excepciones

  • Servicio EnrollmentService: Lógica de matriculación académica con análisis de días de cursada por comisión y verificación de cupos.
  • Regla Restrictiva: Un alumno no puede cursar dos asignaturas regulares el mismo día de la semana.
  • Excepción Automática por Curso Corto: Atributo is_short_course en modelo Subject; si una de las materias es un taller o curso corto, el sistema autoriza la cursada simultánea en el mismo día.
  • Excepción Expresa de Bedelía: Campos allow_same_day_exception y exception_reason en StudentEnrollment. La oficina de Bedelía puede autorizar la matriculación simultánea mediante switch justificado en la interfaz.
  • Endpoints de Matrícula: GET/POST /api/v1/commissions/<id>/enrollments, DELETE/PUT /api/v1/commissions/<id>/enrollments/<student_id>.
  • UI en Detalle de Comisión: Formulario de matriculación con toggle de autorización de Bedelía, motivo de excepción y tabla de inscriptos con badges de estado.

Cobertura de Pruebas

  • Suite completa en backend/tests/test_phase2_rules.py validando los 6 criterios de aceptación (conflicto físico, aforo, co-docencia, restricción diaria, bypass de curso corto y bypass de Bedelía). 6/6 tests aprobados con 100% de éxito.

[Fase 1: Paridad Legacy y Estabilización] — v2.5.0 / v2.4.0 (2026-09-19)

Estado: ✅ 100% Completada

  • Seguridad automatizada SAST/DAST/SCA (Bandit, pip-audit, schemathesis, njsscan, npm audit).
  • Tipificaciones de documentos argentinos y extranjeros, perfiles extendidos de usuarios con email personal e institucional.
  • Gestión completa de aulas físicas vs virtuales con percentiles de asignación y métricas de ocupación real.
  • Reingeniería del modal de edición y eliminación segura de asignaturas.

[Fase 0: Desacople y Arquitectura Base] — v2.0.0 (2026-09-18)

Estado: ✅ 100% Completada

  • Desacople arquitectónico completo: Backend Flask RESTful (/api/v1/) + Frontend BFF Node.js/Express con Nunjucks.
  • Autenticación basada en tokens JWT con sincronización de estado de sesión.