Skip to content

Architecture

El BFF de Logística Inversa está implementado siguiendo los principios de la Arquitectura Hexagonal (también conocida como Arquitectura de Puertos y Adaptadores).

La capa de dominio contiene la lógica de negocio central y las entidades del sistema, independientes de cualquier framework o tecnología externa. Definir las entidades de negocio, reglas, y servicios de dominio que representan el núcleo de la lógica de logística inversa.

  • Entidades:

    • ReverseLogisticItem: Representa un elemento en el proceso de logística inversa, con propiedades como id, tipo, prioridad, estado, productos, etc.
  • Servicios de Dominio:

    • ReverseLogisticService: Define las operaciones disponibles para la gestión de elementos de logística inversa.
    • ProductService: Define las operaciones relacionadas con productos.
  • Errores de Dominio:

    • BusinessError: Clase base para errores de negocio.
    • Errores específicos como NotFoundError, BadRequestError, etc.
  • Tipos y Definiciones:

    • Interfaces y tipos que definen la estructura de los datos del dominio.

La capa de aplicación orquesta los flujos de trabajo de la aplicación utilizando los servicios del dominio. Implementa los casos de uso de la aplicación. Coordinar la ejecución de casos de uso específicos, orquestando los servicios del dominio y aplicando lógica de aplicación.

  • Casos de Uso:

    • FilterPending: Filtra elementos pendientes de logística inversa.
    • FindPending: Busca un elemento específico de logística inversa.
    • Casos de uso para reportes de productos faltantes, no recogidos y de desecho.
  • DTOs y Tipos:

    • PendingFilterQuery: Parámetros para filtrar elementos pendientes.
    • PendingFindQuery: Parámetros para buscar un elemento específico.
    • MissingReportQuery, UnpickReportQuery, WasteReportQuery: Parámetros para los diferentes tipos de reportes.

La capa de infraestructura proporciona implementaciones concretas de las interfaces definidas en el dominio, interactuando con sistemas externos, bases de datos, APIs, etc. Implementar los adaptadores que conectan la aplicación con el mundo exterior, incluyendo APIs, bases de datos, y otros servicios.

  • Servicios HTTP:

    • HttpReverseLogisticService: Implementación del servicio de logística inversa que se comunica con una API externa.
    • HttpProductService: Implementación del servicio de productos que se comunica con una API externa.
  • Controladores y Rutas HTTP:

    • Controladores que manejan las peticiones HTTP y las dirigen a los casos de uso apropiados.
    • Rutas que definen los endpoints de la API.
  • Middleware:

    • Middleware para manejo de errores, logging, etc.
  • Validadores:

    • Validadores de entrada utilizando Zod para asegurar que los datos recibidos cumplen con los esquemas esperados.
  • Utilidades de Infraestructura:

    • Logging
    • Monitoreo (APM)
    • Gestión de contexto