1 minute read

Esta semana el trabajo se ha centrado en levantar con éxito el entorno local D1 de Unibotics integrando las analíticas de Dash, guiando el proceso mediante comandos directos y resolviendo errores técnicos derivados de dependencias, base de datos y puertos.

Inicialmente, el despliegue se encontraba bloqueado por discrepancias en las esquemas de la base de datos con scripts antiguos y conflictos en la asignación de puertos entre el backend de Django y la aplicación de analíticas.

Archivos involucrados

  • Backend: preprocess.sql, .env.
  • Dash: app.py.

El problema del entorno y la solución arquitectónica

La puesta en marcha se ha llevado a cabo superando una serie de incidencias críticas en la capa de datos y red. Los cambios y correcciones clave se dividen en los siguientes puntos:

  1. Aislamiento y dependencias de Dash: Se configuró un entorno virtual independiente (venv_dash) para aislar la ejecución de las analíticas, instalando las librerías del sistema (libpq-dev, python3-dev, postgresql-client) y las dependencias de Python necesarias (redis), omitiendo paquetes obsoletos como backports.zoneinfo en Python 3.10.
  2. Corrección de restricciones en la base de datos: El script de preprocesamiento (preprocess.sql) fallaba al intentar insertar registros en la tabla common_user debido a restricciones de nulos (NOT NULL) en columnas añadidas con el tiempo (active_exercise, max_projects, max_size, projects, size). Se solventó relajando temporalmente dichas restricciones en local con sentencias ALTER TABLE para permitir la inyección correcta de los datos de prueba (dummy).
  3. Resolución del conflicto de puertos: Se identificó una colisión en el puerto 7000 entre Django y Dash, motivada por la lectura compartida de la variable SERVER_PORT en el archivo .env. Se ajustó la configuración lógica para que Dash respete de forma independiente el puerto estándar 6124 estipulado para el entorno local D1.
  4. Sincronización de secuencias SQL: Se reajustaron los contadores de las secuencias de PostgreSQL (setval) mediante el script para evitar conflictos de claves primarias duplicadas al poblar el entorno de desarrollo.

Adicionalmente, se han validado y sincronizado los servicios de Django y Dash en paralelo, garantizando la correcta visualización de las métricas analíticas en el navegador.