feat: acople de schedule.view_reservation al BFF y creacion/asociacion de comisiones a materias

This commit is contained in:
2026-09-19 10:23:50 -03:00
parent 1080acd43a
commit 500aeeb9df
12 changed files with 597 additions and 55 deletions
@@ -72,3 +72,29 @@ Se ejecutó la suite de verificación automatizada:
- 643 eventos en calendario (388 virtuales identificados con `#6366F1` y enlaces activos).
4. **Vistas Principales**:
- 11/11 rutas pasaron con código 200 sin errores de plantilla ni excepciones de servidor.
---
## 4. Acople de `schedule.view_reservation` al BFF Node.js y Gestión de Comisiones
### A. Vista Detallada de Reserva (`schedule.view_reservation`)
- **Backend API (`/api/v1/reservations/<id>`)**:
- Enriquecimiento del payload serializado para incluir objetos relacionales completos: `classroom` (código, edificio, piso, capacidad, descripción, modalidad virtual), `commission` (código, código compuesto, materia, cuatrimestre, año, cupos), `user` (docente, nombre, apellido, email), `duration`, `effective_virtual_link` y `can_be_cancelled`.
- Incorporación de endpoints de acción directa `POST /api/v1/reservations/<id>/confirm` y `POST /api/v1/reservations/<id>/cancel`.
- **Node.js BFF (`frontend/src/routes/schedule.js`)**:
- Implementación de `handleViewReservation` con soporte para `/view_reservation`, `/view_reservation/:id`, `/view/:id`, y `/reservation/:id/view`.
- Implementación de `handleEditReservation` (GET & POST), `handleConfirmReservation` y `handleCancelReservation`.
- Actualización de plantillas (`view.html`, `today.html`, `list.html`, `dashboard.html`) para enlazar directamente las fichas pasando el ID de la reserva.
### B. Creación de Comisiones y Asociación con Materias (`/admin/commissions_list`)
- **Modal y Acción en Interfaz**:
- Incorporación de botón destacado `+ Nueva Comisión` en el encabezado y en el estado vacío de la tabla.
- Implementación de modal interactivo `#modalAddCommission`:
- Selector obligatorio de **Asignatura / Materia Asociada** (`subject_id`), mostrando código, nombre y carrera.
- Campos de código de comisión, cuatrimestre, año lectivo, turno, docente a cargo, cupo máximo y días/horarios.
- Generación y configuración de enlace a aula virtual (Google Meet institucional).
- Alerta de confirmación visual (`?created=1`) al registrar y vincular la comisión exitosamente.
- **Backend API (`POST /api/v1/admin/commissions`)**:
- Validación de existencia de la asignatura vinculada y resolución inteligente de duplicados (`subject_id`, `code`, `semester`, `year`).
- Auto-generación de enlaces seguros de Google Meet en caso de no especificarse enlace personalizado.