Skip to content

feat(reportes): implementar RF30 y RF31 - generación y exportación de reportes con métricas de instancias, recordatorios e incidencias

lautaro.barros requested to merge feat/report into develop

¿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: groupId y careerId no pueden enviarse juntos (400)

Tests

  • 8 tests unitarios (ReportServiceImplTest)
  • 7 tests de integración (ReportIntegrationTest)

Merge request reports

Loading