Skip to content

Architecture

Este documento describe la arquitectura implementada en el microservicio Operations Reporting.

El microservicio sigue una arquitectura hexagonal (también conocida como puertos y adaptadores) con una clara separación de responsabilidades entre las capas de domain, application e infrastructure.

La capa de domain es el núcleo de la aplicación y contiene la lógica de negocio. Esta capa define:

  • Entities: Objetos que tienen una identidad y ciclo de vida (Inventory, Location, Product, Rule)
  • Value Objects: Objetos inmutables que representan conceptos del dominio (Country, Warehouse)
  • Repository Interfaces: Contratos para el acceso a datos
  • Service Interfaces: Contratos para servicios externos
  • Domain Errors: Tipos de errores específicos para operaciones del dominio
  • inventory/: Entities y lógica relacionada con la gestión de inventario
  • inventory-waste/: Entities y lógica relacionada con la gestión de desperdicios de inventario
  • location-manager/: Entities y lógica relacionada con la gestión de ubicaciones
  • product/: Entities y lógica relacionada con la información de productos
  • reverse-logistics/: Entities y lógica relacionada con procesos de devolución
  • rules/: Entities y lógica relacionada con reglas de negocio
  • valueobjects/: Value Objects utilizados en todo el dominio

La capa de application orquesta el flujo de datos entre el mundo exterior y el dominio. Contiene los casos de uso de la aplicación, que representan las operaciones que el sistema puede realizar. Esta capa:

  • Coordina las entities del dominio para realizar tareas específicas
  • Implementa lógica de negocio que involucra múltiples entities del dominio
  • Maneja la transformación de datos entre las capas de domain e infrastructure
  • inventory-report/: Casos de uso para generar reportes de inventario
  • locations-report/: Casos de uso para generar reportes de ubicaciones
  • reverse-logistics/: Casos de uso para generar reportes de logística inversa
  • rules-report/: Casos de uso para generar reportes de reglas
  • waste/: Casos de uso para generar reportes de desperdicios

La capa de infrastructure proporciona implementaciones concretas de las interfaces definidas en la capa de domain. Esta capa:

  • Implementa el acceso a datos a través de repositories
  • Proporciona adaptadores para servicios externos
  • Maneja las peticiones y respuestas HTTP
  • Gestiona las conexiones a la base de datos
  • Implementa el registro de logs y manejo de errores
  • http/: Componentes relacionados con HTTP
    • controllers/: Manejadores de peticiones HTTP
    • middlewares/: Funciones middleware HTTP, incluyendo el filtrado por país
    • routes/: Definiciones de rutas
    • validators/: Lógica de validación de peticiones
  • repository/: Implementaciones de repositories para MongoDB
    • inventory/: Implementación del repository de inventario
    • inventory-waste/: Implementación del repository de desperdicios de inventario
  • services/: Implementaciones de servicios externos
    • location/: Implementación del servicio de ubicaciones
    • product/: Implementación del servicio de productos
  • logger/: Funcionalidad de registro de logs