Feature: el estudiante puede ver sus informes médicos, y vista previa de informes (RF09)
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}/descargaryDELETEen/informes-adjuntossiguen exigiendo exactamenteADJUNTAR_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,urlDescargaapunta a/informes-adjuntos/mios/{id}/descargar, no al endpoint de funcionarios. -
InformeAdjuntoRepository: nueva consultafindByIdInformeAndEstudianteIdUsuarioAndEstado.
Tests
-
InformeAdjuntoServiceTest: lista los del estudiante del token con su ruta de descarga; descarga uno propio; uno ajeno → 404. -
InformeAdjuntoServiceSecurityTest(nuevo,@EnableMethodSecurityreal):- 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_INFORMEsigue listando como antes.
-
InformeAdjuntoMapperTest(nuevo): la ruta de descarga de cada variante. -
InformeAdjuntoControllerTest:GET /informes-adjuntos/miosno se confunde conGET /informes-adjuntos/{id}. -
./mvnw test: pasan los 787 tests.
Cómo probar
- Como funcionario con
ADJUNTAR_INFORME: adjuntar un informe a un estudiante (igual que siempre). - Como ese estudiante:
GET /informes-adjuntos/mios→ aparece, conurlDescarga/informes-adjuntos/mios/{id}/descargar; descargarlo → OK. - Como otro estudiante:
GET /informes-adjuntos/mios/{id}/descargarcon ese id → 404. - Como estudiante:
POST /informes-adjuntos→ 403.GET /informes-adjuntos?idUsuario=…oGET /informes-adjuntos/{id}→ 403.
🗄️ Cambios en la base de datos
Ninguno. Se puede mergear y levantar sin tocar la BD.
Edited by belen.varsi