Skip to content

Feature: mi-perfil del estudiante devuelve la dirección para poder editarla

belen.varsi requested to merge pft/feature/contacto-mi-perfil-estudiante into dev

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 en null. Si el estudiante editaba solo un teléfono, se le borraba la dirección.
  • No había forma de evitarlo desde el frontend: mi-perfil devolvía EstudianteResumenDTO, sin dirección, y el estudiante no puede usar GET /estudiantes/{id}, porque exige VER_ESTUDIANTE.
  • Mientras revisaba esto apareció que PUT /mis-datos y PUT /{id}/foto devolvían la ficha completa (informacionSalud, sistemaSalud, motivoDerivacion) al propio estudiante o a funcionarios sin VER_BLOQUE_CONFIDENCIAL.

Cambios

  • MiPerfilEstudianteDTO (nuevo): el perfil propio del estudiante. Tiene todos los campos que ya devolvía mi-perfil más ciudad, departamento, calle, nroPuerta, fechaNacimiento y paisDocumento. No incluye el bloque confidencial ni el motivo de derivación.
  • EstudianteResumenDTO no se tocó: lo siguen viendo TUTOR y DOCENTE, que no tienen por qué ver la dirección.
  • GET /estudiantes/mi-perfil → devuelve MiPerfilEstudianteDTO. Es compatible con lo que ya consume el frontend: solo agrega campos.
  • PUT /estudiantes/{id}/mis-datos → devuelve MiPerfilEstudianteDTO en lugar de la ficha completa.
  • PUT /estudiantes/{id}/foto → oculta el bloque confidencial a quien no tiene VER_BLOQUE_CONFIDENCIAL, con la misma regla que GET /estudiantes/{id}. Esa regla se extrajo a ocultarBloqueConfidencialSinPermiso(), que ahora usan los dos.
  • EstudianteMapper: nuevo toMiPerfilDto().

Tests

  • verMiPerfil y editarMisDatos: 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 y urlFoto.
  • ./mvnw test: pasan los 780 tests.

Cómo probar

  1. Como estudiante: GET /estudiantes/mi-perfil → trae la dirección.
  2. PUT /estudiantes/{id}/mis-datos con la dirección completa y un teléfono nuevo → se conserva la dirección, y la respuesta no trae informacionSalud ni motivoDerivacion.
  3. Como estudiante, subir la propia foto → la respuesta no trae el bloque confidencial.
  4. 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.

Merge request reports

Loading