Skip to content

Architecture

Este documento describe la arquitectura implementada en el worker op-restocking-evaluator.

El proyecto sigue una arquitectura hexagonal (también conocida como puertos y adaptadores) con tres capas principales: dominio, aplicación e infraestructura. Esta arquitectura promueve la separación de responsabilidades y hace que el sistema sea más mantenible y testeable.

La capa de dominio 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 representan conceptos de negocio (Restocking, Product, Inventory)
  • ValueObjects: Objetos inmutables que representan conceptos sin identidad
  • Domain Services: Servicios que encapsulan lógica de dominio que no encaja naturalmente en entidades
  • Interfaces: Contratos que definen cómo el dominio interactúa con sistemas externos
  • Errors: Tipos de error específicos del dominio
  • restocking/: Entidades y lógica relacionada con alertas de reabastecimiento
  • inventory/: Interfaces y tipos para gestión de inventario
  • product/: Interfaces y tipos para información de productos
  • demand/: Interfaces y tipos para pronósticos de demanda
  • rules/: Reglas de negocio para evaluar necesidades de reabastecimiento
  • queue/: Interfaces para procesamiento de mensajes de cola
  • utils/: Funciones de utilidad para operaciones de dominio
  • errors.ts: Tipos de error comunes utilizados en todo el dominio

La capa de aplicación 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 entidades de dominio para realizar tareas específicas
  • Implementa los principales procesos de negocio
  • Maneja el flujo de ejecución y la gestión de errores
  • No contiene reglas de negocio, que pertenecen a la capa de dominio
  • processor.ts: Implementa la lógica principal de evaluación de reabastecimiento
  • worker.ts: Implementa el worker que procesa mensajes de cola
  • checkers.ts: Implementa lógica de validación para mensajes entrantes

La capa de infraestructura proporciona implementaciones concretas de las interfaces definidas en la capa de dominio. Esta capa:

  • Implementa adaptadores para servicios externos
  • Proporciona clientes HTTP para comunicación API
  • Implementa manejo de mensajes de cola
  • Configura y prepara la aplicación
  • services/: Implementaciones de interfaces de servicio de dominio
    • restocking/: Cliente HTTP para el servicio de reabastecimiento
    • inventory/: Cliente HTTP para el servicio de inventario
    • product/: Cliente HTTP para el servicio de productos
    • demand/: Cliente HTTP para el servicio de demanda
    • rules/: Cliente HTTP para el servicio de reglas
  • http/: Configuración del servidor Express
  • logger/: Implementación de logging
  • providers/: Proveedores de servicios e inyección de dependencias
  • healthcheck/: Implementación de health check para monitoreo