Skip to content

Architecture

Este documento describe la arquitectura implementada en el worker para procesar reportes de mermas de inventario y enviarlos a SAP.

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, la testabilidad y la mantenibilidad.

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 representan los conceptos centrales del negocio (WasteReport, StockTransfer)
  • ValueObjects: Objetos inmutables que representan conceptos sin identidad
  • Ports: Interfaces que definen cómo la aplicación interactúa con sistemas externos
  • Business Rules: Lógica de negocio central y reglas de validación
  • waste/: Entities y lógica relacionada con reportes de mermas
  • sap-documents/: Interfaces y tipos para operaciones de documentos SAP
  • queue/: Interfaces y tipos para operaciones de cola
  • errors.ts: Definiciones de errores específicos del 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 las entities del dominio para realizar tareas específicas
  • Implementa reglas de negocio de alto nivel
  • Maneja la transformación de datos entre las capas de dominio e infraestructura
  • worker.ts: Implementación principal del worker que orquesta el proceso
  • processor.ts: Procesa eventos de reportes de mermas
  • transformer.ts: Transforma reportes de mermas en transferencias de stock de SAP
  • checker.ts: Valida eventos y almacenes

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

  • Implementa el acceso a servicios externos (AWS SQS, API de SAP)
  • Proporciona adaptadores para sistemas externos
  • Maneja preocupaciones técnicas como comunicación HTTP, logging y configuración
  • services/: Implementaciones de interfaces de servicio del dominio
    • queue/: Implementación del servicio de cola usando AWS SQS
    • sap-documents/: Implementación del servicio de documentos SAP usando HTTP
  • healthcheck/: Monitoreo de salud para la aplicación
  • logger/: Infraestructura de logging
  • providers/: Proveedores de inyección de dependencias
  • http/: Implementación del servidor HTTP