Skip to content

Use Cases

Este documento detalla los principales casos de uso implementados en el worker de demanda de productos, organizados por categorías funcionales.

  • Descripción: Procesa un evento de cambio de pedido desde la cola y crea un registro de demanda de producto.

  • Interfaz de entrada:

    interface EventOrderChange {
    event: string
    reason: string
    orderId: string
    warehouse: string
    country: string
    ean: string
    timestamp: string
    pickStartDate: string
    isFromOldLayout?: boolean
    fulfilledQuantity: number
    requestedQuantity: number
    quantity: number
    }
  • Interfaz de salida:

    interface ProductDemand {
    id: string
    ean: string
    warehouse: string
    country: string
    quantity: number
    orderId: string
    type: string
    timestamp: string
    }
  • Flujo principal:

    1. Validar que el evento es de tipo “ORDER_CHANGE” y tiene una razón válida
    2. Validar la estructura de datos del evento usando el esquema Zod
    3. Verificar si el almacén existe usando la biblioteca warehouse-commons
    4. Transformar la razón del evento a un tipo de demanda (Pick o Missing)
    5. Crear un registro de demanda de producto a través del servicio de demanda
    6. Retornar el registro de demanda de producto creado
  • Reglas de negocio:

    • Solo se procesan eventos con tipo “ORDER_CHANGE”
    • Solo se procesan eventos con razones “PICKING_REQUIREMENT_FULFILL_SKU”, “PICKING_REQUIREMENT_MISSING_SKU”, o “BIZERBA_FULFILL_WEIGHT”
    • El almacén debe existir en la biblioteca warehouse-commons
    • Los datos del evento deben conformar al esquema de validación
  • Adaptadores implicados:

    • QueueService: Para recibir el evento desde la cola
    • DemandService: Para crear el registro de demanda de producto
    • Validation: Para validar los datos del evento
  • Excepciones:

    • UnprocessableEventTypeError: Cuando el tipo de evento o la razón no son válidos
    • InvalidEventFormatError: Cuando los datos del evento no conforman al esquema de validación
    • WarehouseNotFoundError: Cuando el almacén no existe
    • InternalDemandServiceError: Cuando hay un error al crear el registro de demanda de producto
  • Descripción: Consulta la cola SQS para eventos de cambio de pedidos y los procesa en lote.

  • Interfaz de entrada:

    // Sin entrada explícita, activado por cron
  • Interfaz de salida:

    // Sin salida explícita, los resultados se registran en logs
  • Flujo principal:

    1. Recibir hasta 10 mensajes de la cola SQS
    2. Para cada mensaje, invocar al procesador para procesar el evento
    3. Si el procesamiento es exitoso, eliminar el mensaje de la cola
    4. Si el procesamiento falla con ciertos errores de negocio, registrar una advertencia y eliminar el mensaje
    5. Si el procesamiento falla con otros errores, registrar un error y dejar el mensaje en la cola
    6. Registrar estadísticas resumidas sobre el procesamiento
  • Reglas de negocio:

    • Se procesan hasta 10 mensajes en cada lote
    • Los mensajes con tipos de evento no procesables o formatos inválidos se eliminan de la cola
    • Los mensajes con otros errores se dejan en la cola para reintento
  • Adaptadores implicados:

    • QueueService: Para recibir mensajes de y eliminar mensajes de la cola
    • ProductDemandProcessor: Para procesar los eventos
  • Excepciones:

    • GettingQueueMessageError: Cuando hay un error al recibir mensajes de la cola
    • DeleteQueueMessageError: Cuando hay un error al eliminar un mensaje de la cola