Architecture
Este documento describe la arquitectura implementada en el microservicio de Forklift, explicando las diferentes capas y cómo interactúan entre sí.
Arquitectura
Section titled “Arquitectura”Capa de Dominio
Section titled “Capa de Dominio”La capa de dominio contiene las entidades, objetos de valor, reglas de negocio y puertos (interfaces) que definen el comportamiento del sistema. Esta capa es independiente de cualquier tecnología o framework específico.
Componentes Principales
Section titled “Componentes Principales”-
Entidades: Representan los objetos principales del dominio con identidad y ciclo de vida
Container: Representa un contenedor físico en el almacénLocation: Representa una ubicación en el almacénPalletMovement: Representa el movimiento de un palletUser: Representa un usuario del sistema
-
Objetos de Valor: Objetos inmutables que representan conceptos del dominio
ContainerName: Nombre de un contenedorLocationName: Nombre de una ubicaciónUsername: Nombre de usuarioCountry: País de operaciónWarehouse: Almacén específico
-
Puertos (Interfaces): Definen los contratos para servicios externos
ContainerService: Interfaz para el servicio de contenedoresLocationService: Interfaz para el servicio de ubicacionesUserService: Interfaz para el servicio de usuariosRestockingService: Interfaz para el servicio de reabastecimiento
-
Errores de Dominio: Errores específicos del dominio
ContainerNotFoundError: Error cuando no se encuentra un contenedorLocationNotFoundError: Error cuando no se encuentra una ubicaciónUnauthorizedUserError: Error cuando un usuario no está autorizado
Capa de Aplicación
Section titled “Capa de Aplicación”La capa de aplicación orquesta los flujos de trabajo de la aplicación utilizando las entidades y servicios del dominio. Implementa los casos de uso de la aplicación y coordina la interacción entre los diferentes componentes del dominio.
Componentes Principales
Section titled “Componentes Principales”-
Casos de Uso: Implementan las operaciones específicas que puede realizar el sistema
PalletLiftUseCase: Caso de uso para levantar un pallet con un montacargasPalletDropUseCase: Caso de uso para depositar un pallet en una ubicaciónPalletFilterUseCase: Caso de uso para filtrar pallets según criterios
-
DTOs (Data Transfer Objects): Objetos para transferir datos entre capas
- Objetos de entrada y salida para los casos de uso
-
Utilidades de Aplicación: Funciones auxiliares para la capa de aplicación
error-handler.ts: Manejo centralizado de errorescalendar.ts: Utilidades para manejo de fechas y horasutils.ts: Funciones de utilidad general
Capa de Infraestructura
Section titled “Capa de Infraestructura”La capa de infraestructura implementa los adaptadores que conectan la aplicación con el mundo exterior, como bases de datos, servicios web, frameworks, etc. Esta capa traduce las interfaces del dominio a las tecnologías específicas utilizadas.
Componentes Principales
Section titled “Componentes Principales”-
Controladores HTTP: Manejan las peticiones HTTP y las traducen a llamadas a casos de uso
- Controladores para operaciones de pallets
-
Adaptadores de Servicios Externos: Implementan las interfaces del dominio para servicios externos
HttpContainerService: Implementación del servicio de contenedoresHttpLocationService: Implementación del servicio de ubicacionesHttpUserService: Implementación del servicio de usuariosHttpRestockingService: Implementación del servicio de reabastecimiento
-
Repositorios: Implementan el acceso a datos
- Implementaciones de repositorios para MongoDB
-
Middlewares: Componentes para procesar peticiones HTTP
auth-autofill.ts: Middleware para autocompletar información de autenticaciónerror-logging.ts: Middleware para logging de errores
-
Proveedores: Configuración de servicios externos
mongodb.ts: Configuración de conexión a MongoDB
-
Validadores: Validación de datos de entrada
- Implementaciones de validadores usando Zod
-
Servicios de Infraestructura: Servicios específicos de infraestructura
logger: Servicio de loggingmetric: Servicio de métricas