Architecture
El microservicio de Utilidades de Inventario WMS está implementado siguiendo los principios de la arquitectura hexagonal (también conocida como arquitectura de puertos y adaptadores). Esta arquitectura permite una clara separación de responsabilidades y facilita la mantenibilidad y testabilidad del código.
Arquitectura
Section titled “Arquitectura”Capa de Dominio
Section titled “Capa de Dominio”Contiene la lógica de negocio central y las reglas del dominio de inventario, independiente de cualquier infraestructura o tecnología específica.
Componentes Principal
Section titled “Componentes Principal”-
Entidades: Representan los conceptos fundamentales del dominio.
Container: Representa un contenedor físico que puede almacenar productos.Inventory: Representa el inventario de productos.Location: Representa una ubicación físicas en el almacén.Metric: Representa métricas relacionadas con operaciones de inventario.
-
Value Objects: Objetos inmutables que representan conceptos del dominio sin identidad propia.
LocationName: Nombre de una ubicación.ContainerName: Nombre de un contenedor.Country: País donde se encuentra el almacén.Warehouse: Almacén específico.
-
Servicios de Dominio: Implementan lógica de negocio que no pertenece naturalmente a una entidad específica.
ContainerService: Define operaciones relacionadas con contenedores.InventoryService: Define operaciones relacionadas con el inventario.LocationService: Define operaciones relacionadas con ubicaciones.MetricService: Define operaciones relacionadas con métricas.
-
Errores de Dominio: Definen excepciones específicas del dominio.
BusinessError: Error base para excepciones de negocio.IllegalArgumentError: Error para argumentos inválidos.
Capa de Aplicación
Section titled “Capa de Aplicación”Orquesta el flujo de datos entre la capa de dominio y la capa de infraestructura, implementando los casos de uso de la aplicación.
Componentes Principal
Section titled “Componentes Principal”-
Casos de Uso: Implementan las operaciones específicas que la aplicación puede realizar.
AdjustmentProduct: Ajusta el inventario de productos.MoveContainers: Mueve contenedores entre ubicaciones.
-
DTOs (Data Transfer Objects): Objetos que transportan datos entre procesos.
AdjustmentProductParams: Parámetros para ajustar el inventario de productos.MoveContainerParams: Parámetros para mover contenedores.
-
Manejadores de Errores: Gestionan los errores que ocurren durante la ejecución de los casos de uso.
handleError: Función para manejar errores en los casos de uso.
-
Utilidades de Aplicación: Funciones auxiliares para los casos de uso.
sortEntriesWithStrategy: Ordena entradas de inventario según una estrategia específica.
Capa de Infraestructura
Section titled “Capa de Infraestructura”Proporciona implementaciones concretas de las interfaces definidas en el dominio, interactuando con sistemas externos, bases de datos, y otros recursos.
Componentes Principal
Section titled “Componentes Principal”-
Adaptadores de Entrada (Controladores): Reciben solicitudes externas y las traducen a llamadas a casos de uso.
- Controladores HTTP en la carpeta
http.
- Controladores HTTP en la carpeta
-
Adaptadores de Salida (Repositorios y Servicios): Implementan las interfaces del dominio para interactuar con sistemas externos.
HttpInventoryService: Implementación del servicio de inventario que se comunica con una API HTTP.HttpContainerService: Implementación del servicio de contenedores que se comunica con una API HTTP.HttpLocationService: Implementación del servicio de ubicaciones que se comunica con una API HTTP.OtelMetricService: Implementación del servicio de métricas que utiliza OpenTelemetry.
-
Configuración: Gestiona la configuración de la aplicación.
- Archivos en la carpeta
config.
- Archivos en la carpeta
-
Middleware: Componentes que procesan las solicitudes HTTP antes de llegar a los controladores.
- Middleware de logging de errores.
- Middleware de validación.
-
Utilidades de Infraestructura: Funciones auxiliares para la capa de infraestructura.
- Utilidades en
utils.ts.
- Utilidades en