docs: actualizar changelog y readme con detalles de la version 2.3.0
This commit is contained in:
+21
-13
@@ -16,24 +16,32 @@ El formato está basado en [Keep a Changelog](https://keepachangelog.com/es-ES/1
|
|||||||
---
|
---
|
||||||
|
|
||||||
## [2.3.0] - 2026-09-19
|
## [2.3.0] - 2026-09-19
|
||||||
|
### Añadido
|
||||||
|
- **Monitoreo y Percentiles de Asignación de Aulas Físicas (Admin & Bedelía):**
|
||||||
|
- Panel analítico *"Estado y Percentiles de Asignación de Aulas Físicas"* incorporado en los dashboards de Administrador (`/dashboard?role=admin`) y Bedelía (`/dashboard?role=bedelia`).
|
||||||
|
- Cálculo dinámico en tiempo real de **Aulas Asignadas** en número y percentil (**26 aulas · 96.3%**) con enlace directo a cursadas activas.
|
||||||
|
- Cálculo dinámico en tiempo real de **Aulas Sin Asignar / Libres** en número y percentil (**1 aula · 3.7%**) con enlace directo al formulario de asignación de espacios.
|
||||||
|
- Barras de progreso visuales con desglose dual: **Planificación Cuatrimestral** (96.3% asignado vs 3.7% disponible) y **Ocupación Operativa del Día** (aulas con clases hoy vs aulas libres).
|
||||||
|
- Exposición de métricas de asignación y percentiles en el endpoint de la API REST `GET /api/v1/dashboard/stats`.
|
||||||
|
- **Módulo de Cursadas Asignadas y Métricas Reales en Catálogo Presencial (`/classrooms/list_classrooms?view_mode=physical`):**
|
||||||
|
- Incorporación de la sección *"Cursadas Asignadas"* dentro de cada tarjeta de aula física y columna en vista de tabla, detallando asignaturas, comisiones y turnos.
|
||||||
|
- Métricas de ocupación física real por período (Día, Semana, Mes) con porcentajes calculados dinámicamente (6%, 11%, 17%, 22% según la carga horaria del aula).
|
||||||
|
- Botones de acción directa con ID dinámico: **Ficha** (`/classrooms/view_classroom?id=...`), **Horarios en Calendario** (`/schedule/calendar_view?classroom_id=...`) y **Editar**.
|
||||||
|
- Conexión de la tabla *"Próximas Clases y Reservas"* en la ficha individual del aula (`/classrooms/view_classroom`) con las reservas reales del cuatrimestre y enlaces a cada reserva (`/schedule/view_reservation?id=...`).
|
||||||
|
|
||||||
### Modificado
|
### Modificado
|
||||||
- **Dashboard Docente (`/dashboard?role=docente`):**
|
- **Dashboard Docente (`/dashboard?role=docente`):**
|
||||||
- Eliminado el botón flotante *"Reservar Aula / Solicitar espacio para clase"* (`/schedule/add_reservation`) a petición de los requerimientos funcionales docentes.
|
- Eliminado el botón flotante *"Reservar Aula / Solicitar espacio para clase"* (`/schedule/add_reservation`) a petición de los requerimientos funcionales del cuerpo docente.
|
||||||
- Reorganizada la grilla superior a 3 columnas simétricas (`col-md-4`) para las tarjetas de *Mis Clases Hoy*, *Mis Reservas Activas* y *Aulas Virtuales*.
|
- Reorganizada la grilla superior a 3 columnas simétricas (`col-md-4`) para las tarjetas de *Mis Clases Hoy*, *Mis Reservas Activas* y *Aulas Virtuales*.
|
||||||
|
|
||||||
### Añadido
|
|
||||||
- **Monitoreo y Percentiles de Asignación de Aulas (Admin & Bedelía):**
|
|
||||||
- Nuevo panel analítico *"Estado y Percentiles de Asignación de Aulas Físicas"* en los paneles de Administrador (`/dashboard?role=admin`) y Bedelía (`/dashboard?role=bedelia`).
|
|
||||||
- Cálculo dinámico de **Aulas Asignadas** en número y percentil (**26 aulas · 96.3%**) con enlace a cursadas activas.
|
|
||||||
- Cálculo dinámico de **Aulas Sin Asignar / Libres** en número y percentil (**1 aula · 3.7%**) con enlace a asignación de espacios.
|
|
||||||
- Barras de progreso visuales con desglose comparativo de **Planificación Cuatrimestral** vs **Ocupación Operativa del Día**.
|
|
||||||
- Exposición de estas métricas en la API REST de backend (`GET /api/v1/dashboard/stats`).
|
|
||||||
|
|
||||||
### Corregido
|
### Corregido
|
||||||
- **Renderizado de Aulas Presenciales en Catálogo (`/classrooms/list_classrooms`):**
|
- **Fallo Crítico de Renderizado en Nunjucks (`memberLookup` con `.items`):**
|
||||||
- Solucionada la incompatibilidad de `nunjucks/src/jinja-compat` con la propiedad `.items` mediante interceptor en `memberLookup` de `frontend/src/app.js`.
|
- Solucionada la incompatibilidad de `nunjucks/src/jinja-compat` que interceptaba la propiedad `.items` convirtiendo `classrooms.items` en una función interna en lugar de un array, lo que impedía dibujar las tarjetas de aulas presenciales en `frontend/views/classrooms/list.html`.
|
||||||
- Corregido el bug de evaluación en `backend/app/routes/api/dashboard.py` que intentaba invocar `.ilike` sobre la propiedad `Classroom.room_number`.
|
- Implementado interceptor en `memberLookup` en `frontend/src/app.js` para preservar arrays intactos.
|
||||||
- Agregado el módulo *"Cursadas Asignadas"* en tarjetas de aulas presenciales con materias, comisiones y turnos.
|
- **Clasificación Errónea de Reservas Físicas como Virtuales (`is_virtual`):**
|
||||||
|
- Corregida la propiedad `@property is_virtual` en `Reservation` (`backend/app/models/reservation.py`) para garantizar que si una reserva tiene aula física asignada (`self.classroom and not self.classroom.is_virtual`), siempre sea clasificada como presencial (`is_virtual = False`), evitando falsos positivos cuando la comisión posee un enlace virtual predeterminado.
|
||||||
|
- **Excepción de SQLAlchemy en Estadísticas de Dashboard:**
|
||||||
|
- Corregido el error de ejecución generado al invocar `.ilike()` sobre la propiedad Python `@property Classroom.room_number` en `backend/app/routes/api/dashboard.py`, migrando la clasificación de aulas presenciales y virtuales a una evaluación robusta en memoria Python (`Classroom.code` y `Classroom.building`).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -50,19 +50,22 @@ El repositorio está dividido en dos aplicaciones principales que interactúan m
|
|||||||
|
|
||||||
La plataforma cuenta con paneles adaptados a las necesidades operativas de cada perfil institucional:
|
La plataforma cuenta con paneles adaptados a las necesidades operativas de cada perfil institucional:
|
||||||
|
|
||||||
* **Administrador (`/dashboard?role=admin`):** Cockpit institucional con métricas globales, auditoría de seguridad RBAC, tendencias mensuales y catálogo de gestión.
|
* **Administrador (`/dashboard?role=admin`):** Cockpit institucional con métricas globales, auditoría de seguridad RBAC, tendencias mensuales y panel interactivo de **Estado y Percentiles de Asignación de Aulas Físicas** (asignadas vs disponibles en número y porcentaje).
|
||||||
* **Bedelía (`/dashboard?role=bedelia`):** Control operativo del campus en tiempo real, conteo de aulas físicas y virtuales, cartelera del día y bandeja de aprobación de reservas pendientes.
|
* **Bedelía (`/dashboard?role=bedelia`):** Control operativo del campus en tiempo real, balance de aulas presenciales asignadas (96.3%) y libres (3.7%), cartelera del día y bandeja de aprobación de reservas pendientes.
|
||||||
* **Docente / Profesor (`/dashboard?role=docente`):** Sesiones del día con accesos directos a videollamadas, gestión de comisiones y formulario para solicitar aulas.
|
* **Docente / Profesor (`/dashboard?role=docente`):** Sesiones del día con accesos directos a videollamadas y gestión de comisiones.
|
||||||
* **Alumno / Estudiante (`/dashboard?role=alumno`):** Brújula de cursada *"¿Dónde curso hoy?"* con ubicación por piso y aula o enlace virtual, junto al cronograma de exámenes y entregas de TPs.
|
* **Alumno / Estudiante (`/dashboard?role=alumno`):** Brújula de cursada *"¿Dónde curso hoy?"* con ubicación por piso y aula o enlace virtual, junto al cronograma de exámenes y entregas de TPs.
|
||||||
|
|
||||||
> **Modo Vista Previa:** Los usuarios con perfil administrador o directivo pueden previsualizar cualquier perspectiva utilizando el selector de roles en la barra superior o pasando el parámetro `?role={admin|bedelia|docente|alumno}` en la URL.
|
> **Modo Vista Previa:** Los usuarios con perfil administrador o directivo pueden previsualizar cualquier perspectiva utilizando el selector de roles en la barra superior o pasando el parámetro `?role={admin|bedelia|docente|alumno}` en la URL.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## ☁️ Importador de Google Sheets & Campus Virtual
|
## ☁️ Sincronización Google Sheets, Configuración Global & Purga Académica
|
||||||
|
|
||||||
El sistema incluye sincronización automatizada con las planillas oficiales de cursada de UniCABA:
|
El sistema incluye sincronización automatizada con las planillas oficiales de cursada de UniCABA:
|
||||||
|
* **Configuración Global Dinámica:** Selección y persistencia de la URL de Google Sheets directamente desde la interfaz web (`/admin/google_sheets_import`) sin valores fijos en el código.
|
||||||
|
* **Herramienta de Purga y Reinicio (`reset_academic_data`):** Módulo CLI y web para limpiar selectivamente reservas, aulas, asignaturas, comisiones o carreras, garantizando pruebas limpias desde cero y preservando siempre usuarios y credenciales.
|
||||||
* **Concurrencia Virtual Ilimitada:** Reconocimiento de espacios áulicos remotos (`Campus Virtual · VIRTUAL`), permitiendo la coexistencia de múltiples comisiones en la misma franja horaria sin colisiones de agenda.
|
* **Concurrencia Virtual Ilimitada:** Reconocimiento de espacios áulicos remotos (`Campus Virtual · VIRTUAL`), permitiendo la coexistencia de múltiples comisiones en la misma franja horaria sin colisiones de agenda.
|
||||||
|
* **Catálogo Presencial con Cursadas Asignadas:** Listado de aulas físicas con cálculo de ocupación real (semana/mes), vista previa de asignaturas y enlaces directos a calendario y ficha del espacio.
|
||||||
* **Enlaces de Videollamada Automáticos:** Generación de enlaces seguros (Google Meet / Teams) para acceso instantáneo de docentes y estudiantes.
|
* **Enlaces de Videollamada Automáticos:** Generación de enlaces seguros (Google Meet / Teams) para acceso instantáneo de docentes y estudiantes.
|
||||||
* **Filtros en Cartelera:** Opciones para filtrar por turno, piso u ocultar aulas virtuales mediante el switch dedicado en `/schedule/today_schedule`.
|
* **Filtros en Cartelera:** Opciones para filtrar por turno, piso u ocultar aulas virtuales mediante el switch dedicado en `/schedule/today_schedule`.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user