Use Cases
Este documento detalla los principales casos de uso implementados en el worker de demanda de productos, organizados por categorías funcionales.
Casos de Uso
Section titled “Casos de Uso”Procesar Evento de Cambio de Pedido
Section titled “Procesar Evento de Cambio de Pedido”-
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: stringreason: stringorderId: stringwarehouse: stringcountry: stringean: stringtimestamp: stringpickStartDate: stringisFromOldLayout?: booleanfulfilledQuantity: numberrequestedQuantity: numberquantity: number} -
Interfaz de salida:
interface ProductDemand {id: stringean: stringwarehouse: stringcountry: stringquantity: numberorderId: stringtype: stringtimestamp: string} -
Flujo principal:
- Validar que el evento es de tipo “ORDER_CHANGE” y tiene una razón válida
- Validar la estructura de datos del evento usando el esquema Zod
- Verificar si el almacén existe usando la biblioteca warehouse-commons
- Transformar la razón del evento a un tipo de demanda (Pick o Missing)
- Crear un registro de demanda de producto a través del servicio de demanda
- 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álidosInvalidEventFormatError: Cuando los datos del evento no conforman al esquema de validaciónWarehouseNotFoundError: Cuando el almacén no existeInternalDemandServiceError: Cuando hay un error al crear el registro de demanda de producto
Consultar Cola para Eventos
Section titled “Consultar Cola para Eventos”-
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:
- Recibir hasta 10 mensajes de la cola SQS
- Para cada mensaje, invocar al procesador para procesar el evento
- Si el procesamiento es exitoso, eliminar el mensaje de la cola
- Si el procesamiento falla con ciertos errores de negocio, registrar una advertencia y eliminar el mensaje
- Si el procesamiento falla con otros errores, registrar un error y dejar el mensaje en la cola
- 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 colaDeleteQueueMessageError: Cuando hay un error al eliminar un mensaje de la cola