Architecture
Este documento describe la arquitectura implementada en el microservicio Operations Reporting.
Arquitectura
Section titled “Arquitectura”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.
Capa de Domain
Section titled “Capa de Domain”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
Componentes Principales
Section titled “Componentes Principales”inventory/: Entities y lógica relacionada con la gestión de inventarioinventory-waste/: Entities y lógica relacionada con la gestión de desperdicios de inventariolocation-manager/: Entities y lógica relacionada con la gestión de ubicacionesproduct/: Entities y lógica relacionada con la información de productosreverse-logistics/: Entities y lógica relacionada con procesos de devoluciónrules/: Entities y lógica relacionada con reglas de negociovalueobjects/: Value Objects utilizados en todo el dominio
Capa de Application
Section titled “Capa de Application”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
Componentes Principales
Section titled “Componentes Principales”inventory-report/: Casos de uso para generar reportes de inventariolocations-report/: Casos de uso para generar reportes de ubicacionesreverse-logistics/: Casos de uso para generar reportes de logística inversarules-report/: Casos de uso para generar reportes de reglaswaste/: Casos de uso para generar reportes de desperdicios
Capa de Infrastructure
Section titled “Capa de Infrastructure”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
Componentes Principales
Section titled “Componentes Principales”http/: Componentes relacionados con HTTPcontrollers/: Manejadores de peticiones HTTPmiddlewares/: Funciones middleware HTTP, incluyendo el filtrado por paísroutes/: Definiciones de rutasvalidators/: Lógica de validación de peticiones
repository/: Implementaciones de repositories para MongoDBinventory/: Implementación del repository de inventarioinventory-waste/: Implementación del repository de desperdicios de inventario
services/: Implementaciones de servicios externoslocation/: Implementación del servicio de ubicacionesproduct/: Implementación del servicio de productos
logger/: Funcionalidad de registro de logs