Volver al inicio

Empaquetado de carga 3D: API, Telegram bot, arquitectura, Docker

Revisión en profundidad de la arquitectura e implementación de la API Skewer-v4 de alto rendimiento para empaquetado de carga 3D, integración en Telegram bot y aspectos técnicos del despliegue usando FastAPI, Redis, PostgreSQL y Docker.

Empaquetado 3D de alto rendimiento: arquitectura de API y Telegram bot para logística
Advertisement 728x90

Empaquetado 3D de Alto Rendimiento: Arquitectura de API e Implementación de Bot de Telegram para Logística

La logística moderna se enfrenta a desafíos significativos en la optimización del transporte de mercancías, donde cada punto porcentual de eficiencia impacta directamente en la rentabilidad económica. Resolver el problema del empaquetado 3D óptimo para cargas de diversos tamaños dentro de espacios de contenedores confinados es un reto crucial. Este artículo profundiza en la arquitectura y la implementación práctica de la API de alto rendimiento Skewer-v4, capaz de procesar hasta 500.000 artículos por segundo, y su integración en una interfaz de usuario a través del bot de Telegram Route Load Bot. Exploraremos los aspectos técnicos, las tecnologías utilizadas, la evolución del proyecto y las etapas clave de despliegue y retroalimentación.

De la Lógica Vectorial al Empaquetado 3D: La Evolución de Skewer-v4

El proyecto Skewer-v4 representa la culminación de varias iteraciones de desarrollo destinadas a crear una solución eficiente para desafíos logísticos complejos. Inicialmente, el enfoque estuvo en la optimización de rutas, lo que llevó al desarrollo de lógica vectorial para resolver el Problema del Vendedor Viajero (TSP), capaz de procesar 10.000 puntos en 0,4 segundos. Esta base permitió una transición a tareas más complejas.

El siguiente paso implicó la escalabilidad a nivel de flota, donde se simuló con éxito la carga de 100.000 contenedores en 12 buques. Utilizando workers de Celery y FastAPI, el sistema distribuyó 42.000 contenedores en solo 2 minutos, teniendo en cuenta restricciones cruciales como los límites de apilamiento y el orden de descarga LIFO (Last In, First Out). Esto demostró el potencial de la computación distribuida para operaciones logísticas a gran escala.

Google AdInline article slot

La culminación fue adentrarse en el llamado 'desafío definitivo': el empaquetado de carga de tamaño irregular. Aquí, el algoritmo se perfeccionó para considerar el peso de cada artículo, calcular el Centro de Gravedad (CdG) y mantener el orden de descarga LIFO. El resultado fue un rendimiento sin precedentes de 500.000 artículos por segundo, posicionando a Skewer-v4 como líder en el empaquetado 3D de alta velocidad.

Arquitectura de Route Load Bot: Uniendo el Algoritmo y el Usuario

Para hacer que el potente algoritmo Skewer-v4 sea accesible a una amplia audiencia, se desarrolló el bot de Telegram Route Load Bot. Este sirve como una interfaz conveniente para una lógica compleja, permitiendo a los usuarios interactuar con el sistema a través de archivos JSON y recibir visualizaciones 3D instantáneas de los resultados. Todo el recorrido de la solicitud, desde la entrada del usuario hasta la entrega del resultado, se desglosa en varias etapas clave:

  • Inicialización e Interfaz API: Los usuarios comienzan a interactuar con el bot utilizando el comando /start, recibiendo instrucciones y un enlace a la documentación de Swagger. Esto destaca la apertura de la API para desarrolladores y su integración con sistemas logísticos de terceros.
  • Recepción y Validación de Datos: Los datos de entrada para el empaquetado se proporcionan en formato JSON (por ejemplo, order.json). En esta etapa, los esquemas de Pydantic juegan un papel crítico, asegurando una estricta validación de datos. Cualquier parámetro incorrecto, como una cantidad cero o dimensiones negativas, es rechazado inmediatamente, evitando una carga innecesaria en el motor de cálculo principal.
  • Núcleo Computacional: Después de la validación de datos, se lanza el motor principal de Skewer-v4, realizando cálculos de empaquetado 3D y balanceo del Centro de Gravedad (CdG). La determinación precisa del CdG es de importancia crítica para la seguridad del transporte, ya que una distribución de peso incorrecta puede provocar accidentes. Los resultados del cálculo se almacenan temporalmente en caché en Redis con un TTL de 30 minutos, asegurando un acceso rápido para visualizaciones posteriores.
  • Retroalimentación y Métricas: El usuario recibe métricas clave de empaquetado: eficiencia de utilización del contenedor y desviación del CdG. Además, se proporciona un enlace interactivo a la visualización 3D, junto con la opción de calificar la calidad del empaquetado en una escala de 1 a 5 estrellas. Este sistema de retroalimentación es un elemento crucial para el entrenamiento y la mejora continua del algoritmo, ya que las valoraciones de los usuarios ayudan a identificar escenarios donde el algoritmo podría producir resultados subóptimos en condiciones del mundo real.
  • Visualización 3D: La parte más intuitiva del proceso. Al seguir el enlace, se activa una ruta de FastAPI (@app.get("/visualize/{task_id}")), que recupera el cálculo guardado de Redis y renderiza la plantilla HTML visualize.html utilizando Jinja2. Como resultado, el usuario recibe un modelo 3D interactivo completo del contenedor cargado, que puede rotarse y escalarse para un análisis detallado.

Aspectos Técnicos y Herramientas de Desarrollo

El desarrollo y despliegue de Route Load Bot se basan en una pila tecnológica moderna, garantizando alto rendimiento, fiabilidad y escalabilidad:

Google AdInline article slot
  • Python: El lenguaje de desarrollo principal.
  • FastAPI: Un framework web asíncrono de alto rendimiento para construir APIs.
  • Pydantic: Una librería para la validación de datos y la gestión de configuraciones utilizando anotaciones de tipo de Python.
  • Celery: Un sistema de cola de tareas distribuida utilizado para operaciones asíncronas, como la escalabilidad a nivel de flota.
  • Redis: Un almacén de datos en memoria de alto rendimiento utilizado para el almacenamiento en caché de resultados intermedios y sesiones.
  • PostgreSQL: Una base de datos relacional para el almacenamiento persistente de datos de usuario, historial de solicitudes y retroalimentación.
  • Alembic: Una herramienta de migración de bases de datos para gestionar cambios de esquema de PostgreSQL.
  • Jinja2: Un motor de plantillas para renderizar páginas HTML para la visualización 3D.
  • Docker y Docker Compose: Herramientas para la contenerización y orquestación de aplicaciones, asegurando portabilidad y un despliegue simplificado.
  • Nginx: Un servidor web utilizado para proxy de solicitudes y servir archivos estáticos.

Desafíos e Iteraciones en el Proceso de Desarrollo

El proyecto no estuvo exento de las complejidades típicas del desarrollo y requirió iteraciones continuas. Los desarrolladores encontraron varios problemas que se resolvieron con éxito:

  • Optimización del Algoritmo de Empaquetado: Inicialmente, el algoritmo ponía más énfasis en el peso, pero como resultado de la retroalimentación, las prioridades se cambiaron: LIFO -> Ancho Máximo -> Largo Máximo -> Peso. La rigurosidad de los requisitos de soporte de carga también se relajó.
  • Problemas de Visualización y CdG: Se identificaron y corrigieron errores en la visualización de la carga y el cálculo del Centro de Gravedad, lo que requirió una intervención y pruebas rápidas.
  • Interacción del Usuario: La baja actividad de los usuarios al inicio del proyecto (a pesar de un alto número de visitas) impulsó la creación de un modo DEMO. Este modo permite generar vehículos y carga aleatorios, empaquetarlos instantáneamente y proporcionar enlaces a la visualización 3D y al JSON de entrada. Esto redujo significativamente la barrera de entrada para pruebas y retroalimentación.
  • Problemas de Copia de JSON: Se observaron dificultades en Telegram al copiar estructuras JSON debido al reemplazo automático de comillas estándar por comillas "inteligentes", lo que provocaba errores. La solución implicó recomendar hacer clic para copiar en lugar de la selección manual.
  • Monitorización y Análisis: Para comprender mejor el comportamiento del usuario, se añadieron los campos total_requests y last_action al modelo de usuario, lo que permite rastrear la actividad del bot y la efectividad de su uso.
  • Desafíos de Despliegue: Durante el despliegue de Docker en un servidor de producción, surgieron "trampas" comunes, como los límites de Docker Hub para descargas anónimas de imágenes.

Ejemplo de ejecución de migración y despliegue:

rsync -avz --delete --exclude '.venv' --exclude 'venv' --exclude '**pycache**' --exclude '.git' --exclude '.env' --exclude '.pytest_cache' --exclude '.vscode' --exclude 'backup' --exclude '*.json' --exclude 'pytest.ini' --exclude 'instruction.md' /home/andreymazo/Projects/skewer_api/ root@your_server_ip:/root/your_root_directory/
docker exec -it skewer_engine_v4 alembic upgrade head
docker compose up -d --build nombre_del_contenedor_de_la_aplicacion
docker logs -f skewer_engine_v4

Conclusiones Clave

  • Algoritmo de Alto Rendimiento: Skewer-v4 ofrece empaquetado 3D de hasta 500.000 artículos/seg, considerando peso, CdG y LIFO.
  • Arquitectura Integral: El proyecto presenta una API FastAPI, caché de Redis, almacenamiento de datos PostgreSQL, validación Pydantic y visualización 3D con Jinja2.
  • Accesibilidad por Telegram: Route Load Bot ofrece una interfaz fácil de usar para interactuar con el algoritmo, incluyendo un modo DEMO y visualización 3D.
  • Desarrollo Iterativo: Refinamiento continuo basado en la retroalimentación del usuario y la resolución de desafíos técnicos de despliegue.
  • Potencial Económico: La optimización del transporte de mercancías utilizando estos sistemas puede generar ahorros significativos para grandes empresas de logística.

— Editorial Team

Google AdInline article slot
Advertisement 728x90

Leer después