Feature: mi-perfil del estudiante devuelve la dirección para poder editarla
Qué se hizo
GET /estudiantes/mi-perfil ahora devuelve también la dirección del estudiante, para que pueda editar sus datos de contacto desde "Mi perfil". De paso se corrigieron dos respuestas que le mandaban datos confidenciales a quien no debía verlos.
Por qué
-
PUT /estudiantes/{id}/mis-datos(dirección y teléfonos) es un reemplazo completo: los campos que no se mandan quedan ennull. Si el estudiante editaba solo un teléfono, se le borraba la dirección. - No había forma de evitarlo desde el frontend:
mi-perfildevolvíaEstudianteResumenDTO, sin dirección, y el estudiante no puede usarGET /estudiantes/{id}, porque exigeVER_ESTUDIANTE. - Mientras revisaba esto apareció que
PUT /mis-datosyPUT /{id}/fotodevolvían la ficha completa (informacionSalud,sistemaSalud,motivoDerivacion) al propio estudiante o a funcionarios sinVER_BLOQUE_CONFIDENCIAL.
Cambios
-
MiPerfilEstudianteDTO(nuevo): el perfil propio del estudiante. Tiene todos los campos que ya devolvíami-perfilmásciudad,departamento,calle,nroPuerta,fechaNacimientoypaisDocumento. No incluye el bloque confidencial ni el motivo de derivación. -
EstudianteResumenDTOno se tocó: lo siguen viendo TUTOR y DOCENTE, que no tienen por qué ver la dirección. -
GET /estudiantes/mi-perfil→ devuelveMiPerfilEstudianteDTO. Es compatible con lo que ya consume el frontend: solo agrega campos. -
PUT /estudiantes/{id}/mis-datos→ devuelveMiPerfilEstudianteDTOen lugar de la ficha completa. -
PUT /estudiantes/{id}/foto→ oculta el bloque confidencial a quien no tieneVER_BLOQUE_CONFIDENCIAL, con la misma regla queGET /estudiantes/{id}. Esa regla se extrajo aocultarBloqueConfidencialSinPermiso(), que ahora usan los dos. -
EstudianteMapper: nuevotoMiPerfilDto().
Tests
-
verMiPerfilyeditarMisDatos: verifican que se use el DTO del perfil y nunca la ficha completa. -
subirFoto: el propio estudiante no recibe el bloque confidencial; un funcionario con permiso sí lo recibe. -
EstudianteMapperTest: el DTO nuevo incluye dirección yurlFoto. -
./mvnw test: pasan los 780 tests.
Cómo probar
- Como estudiante:
GET /estudiantes/mi-perfil→ trae la dirección. -
PUT /estudiantes/{id}/mis-datoscon la dirección completa y un teléfono nuevo → se conserva la dirección, y la respuesta no traeinformacionSaludnimotivoDerivacion. - Como estudiante, subir la propia foto → la respuesta no trae el bloque confidencial.
- Como funcionario con
VER_BLOQUE_CONFIDENCIAL, subir una foto → la respuesta sigue trayendo la ficha completa.
🗄️ Cambios en la base de datos
Ninguno. Se puede mergear y levantar sin tocar la BD.
Compatibilidad
No choca con los otros MRs abiertos y no rompe el frontend actual. La pantalla para editar dirección y teléfonos en el frontend va en un MR aparte.