Skip to content

Refactor: quita 17 endpoints sin uso del frontend

Agustín Cantero requested to merge pft/refactor/quitar-endpoints-sin-uso into dev

Qué

  • Se eliminan 17 endpoints que el frontend no consume, junto con sus métodos de service, DTOs, repository y tests.
  • Se sacan del seed de proyecto_schema.sql los 5 permisos que dejaron de exigirse (EDITAR_PERMISO y los 4 de editar y eliminar comentarios de estudiante), y de la lista de permisos del rol PSICOPEDAGOGO.

Por qué

  • Se cruzaron los 137 endpoints del backend con las llamadas del frontend. Se usan 107 y los 17 de este MR no tenían ningún consumidor.
  • La mayoría eran redundantes. Los GET por id repetían lo que ya devuelve el listado, y los teléfonos ya viajan en el arreglo telefonos de los estudiantes.
  • PUT y DELETE de comentarios de estudiante no se usan a propósito. Un comentario es historia de seguimiento y se corrige citándolo desde uno nuevo.
  • Los 5 permisos quedaban sin ningún endpoint que los exija.

Cambios

  • Teléfonos: se eliminan GET, POST y DELETE /telefonos completos (controller, service, repository, mapper y DTOs). Se conservan la entidad Telefono y la tabla estu_telefonos, que usa EstudianteService.asignarTelefonos.
  • Permisos: se elimina PUT /permisos/{id}, PermisoUpdateDTO y el @CacheEvict de PermisoService, que ya no tiene quién lo invalide.
  • Funcionarios: se elimina GET /funcionarios/documento/{documento} y findByDocumentoAndEstado. Queda GET /funcionarios?texto=, que ya busca por documento.
  • Auditoría: se elimina GET /auditorias/{id}. El listado ya trae valorAnterior y valorNuevo.
  • Recordatorios: se elimina GET /recordatorios/responsable/{idResponsable} y las dos sobrecargas de findByResponsableAndEstado. Quedan GET /recordatorios y GET /recordatorios/instancia/{cod}.
  • Informes adjuntos: se elimina GET /informes-adjuntos/{id}. El listado ya devuelve los mismos datos de cada informe. Se conservan la descarga y los endpoints /mios del estudiante.
  • Comentarios de instancia: se eliminan los GET por id de normales y confidenciales. editar y eliminar conservan la validación de que el comentario pertenezca a la instancia de la URL.
  • Comentarios de estudiante: se eliminan GET, PUT y DELETE por id de normales y confidenciales, con sus UpdateDTO.
  • Estudiantes: se elimina GET /estudiantes/{id}/resumen. El listado sigue usando aResumen y toResumenDto.

Despliegue

En bases ya desplegadas hay que borrar a mano los 5 permisos. Primero se borran sus filas en rol_permisos y después las de permisos, porque las FK son ON DELETE RESTRICT. En una base nueva no hace falta.

BEGIN;
DELETE FROM proyecto.rol_permisos
 WHERE id_permiso IN (SELECT id_permiso FROM proyecto.permisos WHERE nom_permiso IN (
   'EDITAR_PERMISO',
   'EDITAR_COMENTARIO_NORMAL_ESTUDIANTE', 'EDITAR_COMENTARIO_CONFIDENCIAL_ESTUDIANTE',
   'ELIMINAR_COMENTARIO_NORMAL_ESTUDIANTE', 'ELIMINAR_COMENTARIO_CONFIDENCIAL_ESTUDIANTE'));
DELETE FROM proyecto.permisos WHERE nom_permiso IN (
   'EDITAR_PERMISO',
   'EDITAR_COMENTARIO_NORMAL_ESTUDIANTE', 'EDITAR_COMENTARIO_CONFIDENCIAL_ESTUDIANTE',
   'ELIMINAR_COMENTARIO_NORMAL_ESTUDIANTE', 'ELIMINAR_COMENTARIO_CONFIDENCIAL_ESTUDIANTE');
COMMIT;

Impacto en el frontend

  • Ninguno de los endpoints eliminados se usaba, así que no debería romper nada.
  • Los 5 permisos eliminados se sacan de src/lib/permisos.ts en el MR 57 del frontend.

Merge request reports

Loading