Skip to content

Feature: el estudiante puede ver sus informes médicos, y vista previa de informes (RF09)

belen.varsi requested to merge pft/feature/informes-subidos-por-estudiante into dev

Qué se hizo

El estudiante puede ver y descargar sus propios informes médicos desde "Mi perfil". No puede subirlos ni borrarlos: los informes los carga únicamente el personal, como hasta ahora.

Por qué

El estudiante no tenía forma de consultar los informes de su propia historia. Darle VER_INFORME al rol ESTUDIANTE no era una opción, porque con ese permiso podría ver los de cualquier estudiante.

Cambios

  • Endpoints de funcionarios: sin cambios. POST, GET, GET /{id}, GET /{id}/descargar y DELETE en /informes-adjuntos siguen exigiendo exactamente ADJUNTAR_INFORME / VER_INFORME / ELIMINAR_INFORME, sin ninguna excepción para el estudiante.
  • Endpoints nuevos, exclusivos del estudiante (hasRole('ESTUDIANTE'), con el id tomado siempre del token, nunca de un parámetro):
    • GET /informes-adjuntos/mios: sus informes activos.
    • GET /informes-adjuntos/mios/{id}/descargar: solo si el informe es suyo. Si es de otro estudiante responde 404, igual que si no existiera, para no revelar que existe.
  • InformeAdjuntoMapper.toDtoDelEstudiante: en la lista del estudiante, urlDescarga apunta a /informes-adjuntos/mios/{id}/descargar, no al endpoint de funcionarios.
  • InformeAdjuntoRepository: nueva consulta findByIdInformeAndEstudianteIdUsuarioAndEstado.

Tests

  • InformeAdjuntoServiceTest: lista los del estudiante del token con su ruta de descarga; descarga uno propio; uno ajeno → 404.
  • InformeAdjuntoServiceSecurityTest (nuevo, @EnableMethodSecurity real):
    • el estudiante lista lo suyo;
    • el estudiante no puede subir (ni a su propia historia) ni usar ningún endpoint de funcionarios;
    • un funcionario, aunque tenga VER_INFORME, no puede usar los /mios;
    • un funcionario con VER_INFORME sigue listando como antes.
  • InformeAdjuntoMapperTest (nuevo): la ruta de descarga de cada variante.
  • InformeAdjuntoControllerTest: GET /informes-adjuntos/mios no se confunde con GET /informes-adjuntos/{id}.
  • ./mvnw test: pasan los 787 tests.

Cómo probar

  1. Como funcionario con ADJUNTAR_INFORME: adjuntar un informe a un estudiante (igual que siempre).
  2. Como ese estudiante: GET /informes-adjuntos/mios → aparece, con urlDescarga /informes-adjuntos/mios/{id}/descargar; descargarlo → OK.
  3. Como otro estudiante: GET /informes-adjuntos/mios/{id}/descargar con ese id → 404.
  4. Como estudiante: POST /informes-adjuntos → 403. GET /informes-adjuntos?idUsuario=… o GET /informes-adjuntos/{id} → 403.

🗄️ Cambios en la base de datos

Ninguno. Se puede mergear y levantar sin tocar la BD.

Edited by belen.varsi

Merge request reports

Loading