feat(reportes): implementar RF30 y RF31 - generación y exportación de reportes con métricas de instancias, recordatorios e incidencias
¿Qué incluye?
Implementación completa de los requerimientos RF30 (Generación de Reportes) y RF31 (Exportación de Reportes).
Endpoints
| Método | Ruta | Descripción |
|---|---|---|
POST |
/api/v1/reportes |
Genera reporte en JSON |
POST |
/api/v1/reportes/exportar |
Exporta reporte en PDF, Excel o CSV |
Filtros soportados (RF30)
-
dateFrom/dateTo(obligatorios): rango de fechas -
studentId: filtra por estudiante -
careerId: filtra por carrera -
groupId: filtra por grupo -
category: filtra por categoría de instancia (MEETING,CALL,COORDINATION,REPORT)
Métricas incluidas
- Instancias: total, activas/inactivas, por categoría, por estudiante, por mes
- Recordatorios: total, completados/pendientes, por tipo, por estudiante, por mes
- Incidencias: total, por tipo, por estado, por mes
Formatos de exportación (RF31)
- PDF: tablas de resumen con secciones separadas para cada entidad
-
Excel: múltiples hojas (Resumen, Por Estudiante, Por Mes) con columnas prefijadas (
Inst:,Rec:,Inc:) - CSV: secciones delimitadas con prefijos
Seguridad
-
@PreAuthorize("hasAnyRole('ADMINISTRADOR', 'EQUIPO_EDUCATIVO')")en el controller - Reglas URL en
SecurityConfig:/api/v1/reportes/** - Validación:
groupIdycareerIdno pueden enviarse juntos (400)
Tests
- 8 tests unitarios (
ReportServiceImplTest) - 7 tests de integración (
ReportIntegrationTest)