Use Cases
Este documento detalla los principales casos de uso implementados en el worker de asignación de ubicaciones, organizados por categorías funcionales.
Casos de Uso
Section titled “Casos de Uso”Procesar Evento de Nuevo Producto
Section titled “Procesar Evento de Nuevo Producto”- Descripción: Crea asignaciones de ubicación para un nuevo producto en todos los warehouses de un país específico.
- Interfaz de entrada:
interface EventProductChange {type: string // "PRODUCT_NEW"data: {sku: stringcountry: stringbarcode: stringstatusInfo: {published: booleanactive: booleanactiveWarehouses: string[]}}}
- Interfaz de salida:
// Retorna los datos de entrada en caso de éxito
- Flujo principal:
- Validar los datos del evento
- Recuperar todos los warehouses para el país especificado
- Para cada warehouse, crear una asignación de ubicación para el producto
- Actualizar el estado (habilitado/deshabilitado) de cada asignación de ubicación basado en el estado activo del producto y la lista de warehouses activos
- Retornar los datos del evento procesado
- Reglas de negocio:
- El tipo de evento debe ser “PRODUCT_NEW”
- El producto debe tener un barcode válido
- El país debe ser válido
- Adaptadores implicados:
- WarehouseService: Para recuperar información de warehouses
- LocationAssignmentService: Para crear asignaciones de ubicación
- Excepciones:
UnprocessableEventTypeError: Si el tipo de evento no es válidoWarehouseServiceError: Si hay un error al recuperar información de warehousesAlreadyExistsAssignmentError: Si la asignación de ubicación ya existeAssignmentServiceError: Si hay un error al crear la asignación de ubicación
Procesar Evento de Cambio de Estado de Producto
Section titled “Procesar Evento de Cambio de Estado de Producto”- Descripción: Actualiza el estado (habilitado/deshabilitado) de las asignaciones de ubicación existentes para un producto basado en su estado activo y la lista de warehouses activos.
- Interfaz de entrada:
interface EventProductChange {type: string // "PRODUCT_CHANGED"data: {sku: stringcountry: stringbarcode: stringstatusInfo: {published: booleanactive: booleanactiveWarehouses: string[]}}}
- Interfaz de salida:
// Retorna los datos de entrada en caso de éxito
- Flujo principal:
- Validar los datos del evento
- Recuperar todos los warehouses para el país especificado
- Para cada warehouse, actualizar el estado de la asignación de ubicación basado en:
- El estado activo del producto
- Si el warehouse está en la lista de warehouses activos
- Retornar los datos del evento procesado
- Reglas de negocio:
- El tipo de evento debe ser “PRODUCT_CHANGED”
- El producto debe tener un barcode válido
- El país debe ser válido
- Adaptadores implicados:
- WarehouseService: Para recuperar información de warehouses
- LocationAssignmentService: Para actualizar el estado de la asignación de ubicación
- Excepciones:
UnprocessableEventTypeError: Si el tipo de evento no es válidoWarehouseServiceError: Si hay un error al recuperar información de warehousesAssignmentNotFoundError: Si la asignación de ubicación no existeAssignmentServiceError: Si hay un error al actualizar la asignación de ubicación
Recibir y Procesar Mensajes de Cola
Section titled “Recibir y Procesar Mensajes de Cola”- Descripción: Recupera mensajes de la cola SQS y los procesa utilizando el procesador apropiado según el tipo de evento.
- Interfaz de entrada:
// Número de mensajes a recibirmaxNumberOfMessages: number
- Interfaz de salida:
// Estadísticas de procesamiento{totalEvents: numbersuccess: numberfailed: numberprocessingTime: number}
- Flujo principal:
- Recibir hasta el número especificado de mensajes de la cola SQS
- Para cada mensaje:
- Analizar el cuerpo del mensaje como un EventProductChange
- Procesar el evento utilizando el procesador apropiado según el tipo de evento
- Eliminar el mensaje de la cola si el procesamiento es exitoso
- Registrar estadísticas de procesamiento
- Reglas de negocio:
- Los mensajes se procesan en lotes para mayor eficiencia
- Los mensajes que causan errores de negocio se eliminan de la cola
- Los mensajes que causan errores técnicos permanecen en la cola para reintento
- Adaptadores implicados:
- QueueService: Para recibir y eliminar mensajes
- EventProcessor: Para procesar eventos
- Excepciones:
GettingQueueMessageError: Si hay un error al recibir mensajes de la colaDeleteQueueMessageError: Si hay un error al eliminar un mensaje de la cola