Use Cases
Use Cases
Section titled “Use Cases”Este documento detalla los principales casos de uso implementados en el microservicio Storage Manager, organizados por categorías funcionales.
Casos de Uso
Section titled “Casos de Uso”Store Container
Section titled “Store Container”-
Descripción: Almacena un contenedor en una ubicación de almacenamiento, moviéndolo desde una ubicación de pre-almacenamiento a una ubicación de almacenamiento permanente.
-
Interfaz de entrada:
interface StoreContainerParams {container: ContainerNametarget: LocationNamecountry: Countrywarehouse: Warehouseusername: Username} -
Interfaz de salida:
type Result = Either<BusinessError, Storage> -
Flujo principal:
- Encontrar el contenedor, la ubicación objetivo y las entradas del contenedor desde sus respectivos servicios
- Validar que el contenedor esté en estado de pre-almacenamiento
- Validar que la ubicación objetivo sea una ubicación de almacenamiento con la zona correcta
- Validar que el contenedor no esté vacío
- Verificar si la ubicación objetivo ya está en uso
- Mover el contenedor a la ubicación objetivo utilizando el servicio WMS utils
- Crear un nuevo registro de Storage
- Guardar el registro de Storage en la base de datos
- Actualizar métricas
- Devolver el registro de Storage
-
Reglas de negocio:
- El contenedor debe estar en estado de pre-almacenamiento
- La ubicación objetivo debe ser una ubicación de almacenamiento
- La ubicación objetivo debe tener la zona correcta para almacenamiento de contenedores
- El contenedor no debe estar vacío
- La ubicación objetivo no debe estar ya en uso
-
Adaptadores implicados:
- Location Service
- Container Service
- Inventory Service
- WMS Utils Service
- Storage Repository
- ID Generator
- Metric Service
- Calendar
-
Excepciones:
ContainerNotPreStorageError: Si el contenedor no está en estado de pre-almacenamientoLocationNotStorageError: Si la ubicación objetivo no es una ubicación de almacenamientoLocationInvalidZoneError: Si la ubicación objetivo no tiene la zona correctaEmptyContainerError: Si el contenedor está vacíoLocationInUseError: Si la ubicación objetivo ya está en usoUnexpectedError: Para errores inesperados durante operaciones de base de datos
Store Partial Container
Section titled “Store Partial Container”-
Descripción: Almacena un subconjunto de productos de un contenedor en una ubicación de almacenamiento, creando un nuevo contenedor para los productos restantes.
-
Interfaz de entrada:
interface StorePartialContainerParams {container: ContainerNametarget: LocationNamecountry: Countrywarehouse: Warehouseusername: Usernameproducts: Array<{ean: stringquantity: number}>} -
Interfaz de salida:
type Result = Either<BusinessError, Storage> -
Flujo principal:
- Encontrar el contenedor, la ubicación objetivo y las entradas del contenedor desde sus respectivos servicios
- Validar que el contenedor esté en estado de pre-almacenamiento
- Validar que la ubicación objetivo sea una ubicación de almacenamiento con la zona correcta
- Validar que los productos especificados existan en el contenedor
- Verificar si la ubicación objetivo ya está en uso
- Mover los productos especificados a la ubicación objetivo utilizando el servicio WMS utils
- Crear un nuevo registro de Storage
- Guardar el registro de Storage en la base de datos
- Actualizar métricas
- Devolver el registro de Storage
-
Reglas de negocio:
- El contenedor debe estar en estado de pre-almacenamiento
- La ubicación objetivo debe ser una ubicación de almacenamiento
- La ubicación objetivo debe tener la zona correcta para almacenamiento de contenedores
- Los productos especificados deben existir en el contenedor
- La ubicación objetivo no debe estar ya en uso
-
Adaptadores implicados:
- Location Service
- Container Service
- Inventory Service
- WMS Utils Service
- Storage Repository
- ID Generator
- Metric Service
- Calendar
-
Excepciones:
ContainerNotPreStorageError: Si el contenedor no está en estado de pre-almacenamientoLocationNotStorageError: Si la ubicación objetivo no es una ubicación de almacenamientoLocationInvalidZoneError: Si la ubicación objetivo no tiene la zona correctaProductNotFoundError: Si un producto especificado no existe en el contenedorLocationInUseError: Si la ubicación objetivo ya está en usoUnexpectedError: Para errores inesperados durante operaciones de base de datos
Container Pre-Storage
Section titled “Container Pre-Storage”-
Descripción: Recupera contenedores en estado de pre-almacenamiento, junto con sus recuentos de alertas.
-
Interfaz de entrada:
interface ContainerPreStorageQuery {warehouse: stringcountry: stringpage?: numberlimit?: numbersearch?: string} -
Interfaz de salida:
type Result = Either<BusinessError, Array<{containerId: stringname: stringlocation: stringcreatedAt: stringalerts: {critical: numberwarning: number}}>> -
Flujo principal:
- Encontrar contenedores en estado de pre-almacenamiento utilizando el servicio de contenedores
- Obtener recuentos de alertas para los contenedores utilizando el servicio de reabastecimiento
- Combinar los datos del contenedor con los datos de alertas
- Devolver los datos combinados
-
Reglas de negocio:
- El warehouse y el country deben ser válidos
- Los parámetros de paginación son opcionales
-
Adaptadores implicados:
- Container Service
- Restocking Service
-
Excepciones:
- Varios errores de negocio de los servicios de contenedores y reabastecimiento
Get Storage Suggestions
Section titled “Get Storage Suggestions”-
Descripción: Proporciona sugerencias para ubicaciones óptimas de almacenamiento para un contenedor.
-
Interfaz de entrada:
interface SuggestStorageParams {container: ContainerNamecountry: Countrywarehouse: Warehouse} -
Interfaz de salida:
type Result = Either<BusinessError, Array<{location: stringzone: stringtype: stringscore: number}>> -
Flujo principal:
- Encontrar el contenedor y sus entradas utilizando los servicios de contenedores e inventario
- Obtener ubicaciones sugeridas del servicio de reabastecimiento
- Devolver las ubicaciones sugeridas con puntuaciones
-
Reglas de negocio:
- El contenedor debe existir
- El contenedor debe tener entradas
-
Adaptadores implicados:
- Container Service
- Inventory Service
- Restocking Service
-
Excepciones:
- Varios errores de negocio de los servicios de contenedores, inventario y reabastecimiento
Filter Containers
Section titled “Filter Containers”-
Descripción: Filtra contenedores basados en varios criterios.
-
Interfaz de entrada:
interface FilterContainersParams {country: Countrywarehouse: Warehousepage?: numberlimit?: numbersearch?: stringlocation?: stringzone?: stringtype?: string} -
Interfaz de salida:
type Result = Either<BusinessError, {data: Array<{containerId: stringname: stringlocation: stringzone: stringtype: stringcreatedAt: string}>pagination: {total: numberpage: numberlimit: number}}> -
Flujo principal:
- Filtrar contenedores utilizando el servicio de contenedores basado en los criterios proporcionados
- Devolver los contenedores filtrados con información de paginación
-
Reglas de negocio:
- El warehouse y el country deben ser válidos
- Los parámetros de paginación son opcionales
- Los criterios de filtro son opcionales
-
Adaptadores implicados:
- Container Service
-
Excepciones:
- Varios errores de negocio del servicio de contenedores