Skip to content

Refactor: Centralización de asociación ITR-Carrera en ITR, caché, documentación Swagger y Testing (100%)

Agustín Cantero requested to merge feature/itr-refactor into master

Cambios Principales

  • Patrón Aggregate Root:
    • Eliminación completa de ItrCarreraController, ItrCarreraService, y sus DTOs correspondientes.
    • El ItrService ahora se encarga de gestionar de forma transaccional las asociaciones con carreras al crear y modificar ITRs, utilizando listas de IDs (carrerasIds).
  • Optimización con Caché:
    • Implementación de Spring Cache (@Cacheable("itrs")) en el método de listado para reducir drásticamente las consultas a la base de datos PostgreSQL.
    • Inyección inteligente de @CacheEvict(value = "itrs", allEntries = true) en los métodos mutadores (crear, actualizar, dar de baja, reactivar) para garantizar la coherencia de datos sin perder rendimiento.
  • Seguridad Dinámica y Capas:
    • El ItrController ahora es puramente delegativo.
    • Toda la seguridad basada en roles (@PreAuthorize("hasAuthority(...)")) fue trasladada estrictamente a nivel de método en ItrService (VER_ITRS, CREAR_ITR, EDITAR_ITR, ELIMINAR_ITR, REACTIVAR_ITR).
  • Reglas de Negocio:
    • Implementación de un "candado de estado" en actualizar() que devuelve 409 Conflict si se intenta modificar o asociar carreras a un ITR con estado lógico INACTIVO.
    • Se corrigió la restricción del ItrRequestDTO de 50 a 80 caracteres para sincronizar con la restricción VARCHAR(80) y UNIQUE del esquema de la base de datos SQL.
  • Documentación:
    • Inyección masiva de etiquetas @ApiResponses en el ItrController para documentar explícitamente en Swagger los códigos de respuesta (200, 201, 204, 400, 404, 409).
    • Creación del ItrMapper con MapStruct para filtrar asociaciones activas.
  • Testing:
    • Se agregó la suite ItrServiceTest utilizando JUnit 5 y Mockito.
    • 100% de cobertura sobre la lógica de negocio.

Merge request reports

Loading