Arranque del Gemelo Comercial Prodisys ====================================== Ubicación --------- El repositorio operativo del Gemelo se encuentra en:: ~/Documents/Prodisys/prodisys-gemelo La interfaz comercial principal se ejecuta desde:: ui_test.ipynb El repositorio activo utiliza actualmente la rama:: main Entorno Python -------------- La operación validada del Gemelo Comercial utiliza el Python del entorno Anaconda ``base``:: /home/prodisys1/anaconda3/bin/python La versión validada es Python 3.11. Antes de arrancar puede verificarse con:: which python python --version Las dependencias operativas comprobadas incluyen: - pandas - ipywidgets - SQLAlchemy - pyodbc - python-dotenv - requests - BeautifulSoup El entorno Conda ``prodisys`` existe, pero actualmente no contiene todas las dependencias requeridas por la interfaz comercial. Por tanto, no debe considerarse el entorno operativo hasta que sea explícitamente reconstruido y validado. Variables de entorno -------------------- Las conexiones y claves se mantienen en el archivo local:: .env Este archivo contiene, entre otras, variables para: - conexión a ALEPH / SQL Server - driver ODBC - Serper API El archivo ``.env``: - no debe versionarse en Git - debe mantener permisos restrictivos - no debe copiarse a la documentación - no debe publicarse en HTML ALEPH y SQL Server ------------------ ALEPH actúa como fuente de información operativa y CRM. Antes de iniciar la interfaz debe verificarse que la instancia SQL Server utilizada por ALEPH esté disponible. La conexión puede comprobarse desde el Gemelo mediante:: cd ~/Documents/Prodisys/prodisys-gemelo python - <<'PY' from pathlib import Path from dotenv import load_dotenv load_dotenv(Path(".env"), override=True) from prodisys.ingest.aleph_connection import get_aleph_engine engine = get_aleph_engine() with engine.connect() as conn: value = conn.exec_driver_sql("SELECT 1").scalar() print("ALEPH:", "OK" if value == 1 else value) PY La prueba validada debe retornar:: ALEPH: OK Serper ------ Serper se utiliza para discovery externo de empresas y fuentes web. La conectividad puede comprobarse con:: cd ~/Documents/Prodisys/prodisys-gemelo python - <<'PY' from pathlib import Path from dotenv import load_dotenv load_dotenv(Path(".env"), override=True) from prodisys.comercial.source_search import _search_serper results = _search_serper( query="OpenFOAM", max_results=2, timeout=20, ) print("SERPER resultados:", len(results)) for r in results: print("-", r.title, "|", r.url) PY Una respuesta con resultados confirma que la API está operativa. JupyterLab ---------- Desde el servidor:: cd ~/Documents/Prodisys/prodisys-gemelo jupyter lab --no-browser --ip=0.0.0.0 El servidor Prodisys se encuentra actualmente en la LAN:: 192.168.2.19 Si el puerto 8888 está ocupado por otra aplicación, JupyterLab seleccionará automáticamente otro puerto disponible, por ejemplo 8889. Desde un cliente de la misma red se accede con:: http://192.168.2.19:/lab Una vez dentro de JupyterLab se debe abrir:: ui_test.ipynb Arranque de la interfaz comercial --------------------------------- La interfaz se construye mediante:: from prodisys.comercial.ui.app_ui import build_comercial_ui build_comercial_ui() Si después de cambios de código la interfaz no refleja el estado actual:: Kernel -> Restart Kernel Módulos principales ------------------- La interfaz comercial integra actualmente funciones para: - Actividades - Lotes - Empresas - Contactos - Prospectos CRM - scoring y evaluación comercial - discovery web - integración CRM con ALEPH Los datos operativos se encuentran principalmente bajo:: data/commercial/ Discovery comercial -------------------- Desde la interfaz:: Actividades -> Perfil activo -> Ejecutar discovery El perfil controla, entre otros: - países - sectores - palabras clave incluidas - palabras clave excluidas - número máximo de páginas - número máximo de empresas - score mínimo También puede ejecutarse desde terminal:: python -m prodisys.comercial.prospect_discovery Pipeline comercial ------------------ Los comandos principales son:: python -m prodisys.comercial.pipeline_runner --help python -m prodisys.comercial.pipeline_runner discover python -m prodisys.comercial.pipeline_runner continue python -m prodisys.comercial.pipeline_runner integrate python -m prodisys.comercial.pipeline_runner push-crm python -m prodisys.comercial.pipeline_runner crm-dry-run python -m prodisys.comercial.pipeline_runner crm-execute --confirm python -m prodisys.comercial.pipeline_runner summary Precauciones CRM ---------------- Las operaciones de escritura real en ALEPH deben ejecutarse únicamente de forma deliberada. En particular:: crm-execute --confirm realiza operaciones reales y no debe utilizarse como prueba de arranque. Para validación funcional se recomienda utilizar primero: - lectura de datos - preview - dry-run - validación de prospectos Secuencia recomendada de arranque --------------------------------- 1. Entrar a ``~/Documents/Prodisys/prodisys-gemelo``. 2. Verificar que Python sea el entorno ``base`` validado. 3. Confirmar disponibilidad de SQL Server / ALEPH. 4. Ejecutar una prueba ``SELECT 1`` contra ALEPH. 5. Verificar Serper si se utilizará discovery. 6. Iniciar JupyterLab. 7. Acceder desde el cliente al puerto asignado. 8. Abrir ``ui_test.ipynb``. 9. Ejecutar ``build_comercial_ui()``. 10. Validar navegación y lectura de información antes de ejecutar escrituras CRM. Cierre ------ JupyterLab se detiene con ``Ctrl+C`` en la terminal donde fue iniciado. No se recomienda detener servicios SQL compartidos sin verificar previamente si otras aplicaciones dependen de ellos.