Skip to content

Use Cases

Este documento detalla los principales casos de uso implementados en el worker op-restocking-evaluator.

  • Descripción: Evalúa si un producto necesita reabastecimiento basándose en los niveles actuales de inventario, demanda y reglas de negocio.
  • Interfaz de entrada:
    interface ProcessInput {
    ean: string
    country: string
    warehouse: string
    }
  • Interfaz de salida:
    interface ProcessOutput {
    id: string
    ean: string
    level: RestockingLevel
    type: string
    warehouse: string
    country: string
    createdAt: string
    updatedAt: string
    }
  • Flujo principal:
    1. Obtener categoría de demanda y demanda predeterminada para el producto
    2. Determinar la demanda a utilizar para la evaluación (demanda de categoría o demanda predeterminada)
    3. Obtener la regla de reabastecimiento y el stock actual en picking
    4. Calcular umbrales de advertencia y críticos basados en la demanda y la regla
    5. Evaluar si se necesita reabastecimiento basado en el stock actual y los umbrales
    6. Verificar si ya existe una alerta de reabastecimiento
    7. Crear una nueva alerta de reabastecimiento o actualizar una existente
  • Reglas de negocio:
    • Si tanto la demanda de categoría como la demanda predeterminada son cero, devolver un error
    • Si la demanda de categoría es cero, usar la demanda predeterminada
    • Si el stock en picking está por encima del umbral de advertencia, no se necesita reabastecimiento
    • Si el stock en picking está entre los umbrales de advertencia y crítico, crear una alerta de advertencia
    • Si el stock en picking está por debajo del umbral crítico, crear una alerta crítica
  • Adaptadores implicados:
    • Demand Service
    • Product Service
    • Rule Service
    • Inventory Service
    • Restocking Service
  • Excepciones:
    • ZeroDemandError: Cuando tanto la demanda de categoría como la demanda predeterminada son cero
    • RestockingNoRequiredError: Cuando el stock en picking está por encima del umbral de advertencia
    • BusinessError: Para errores inesperados
  • Descripción: Procesa mensajes de la cola SQS, extrayendo información del producto y desencadenando evaluaciones de reabastecimiento.
  • Interfaz de entrada:
    // Sin interfaz de entrada explícita, desencadenado por la ejecución del worker
  • Interfaz de salida:
    interface WorkerResult {
    events: PairOfReceiptAndMessage[]
    success: string[]
    failed: BusinessError[]
    }
  • Flujo principal:
    1. Recibir hasta 10 mensajes de la cola SQS
    2. Para cada mensaje, validar el tipo de evento
    3. Extraer EAN del producto, almacén y país del mensaje
    4. Procesar la evaluación de reabastecimiento para el producto
    5. Eliminar el mensaje de la cola si el procesamiento tiene éxito
    6. Manejar errores de negocio según su tipo
    7. Registrar resultados de procesamiento
  • Reglas de negocio:
    • Solo procesar mensajes con el tipo de evento correcto
    • Eliminar mensajes de la cola después de un procesamiento exitoso
    • Eliminar mensajes con errores no recuperables (p.ej., demanda cero, no se necesita reabastecimiento)
    • Mantener mensajes con errores recuperables en la cola para reintento
  • Adaptadores implicados:
    • Queue Service
    • Restocking Evaluator Processor
  • Excepciones:
    • EventTypeUnprocessableError: Cuando el tipo de evento no es compatible
    • ZeroDemandError: Cuando tanto la demanda de categoría como la demanda predeterminada son cero
    • RestockingNoRequiredError: Cuando el stock en picking está por encima del umbral de advertencia
    • ProductNotFoundError: Cuando no se encuentra el producto
    • UnexpectedError: Para errores inesperados