# FLUJOS — Documentación técnica **Última actualización:** 2026-04-21 **Proyecto:** Plataforma libre de análisis y visualización de flujos de información **Stack:** Node.js + Express + MongoDB + Python (BERT, Qwen3-VL) + Three.js/3d-force-graph --- ## Índice de documentos | Documento | Contenido | |---|---| | [SEGURIDAD.md](SEGURIDAD.md) | Informe de vulnerabilidades (NoSQL injection, XSS, rate limiting...) + fixes | | [MONGODB.md](MONGODB.md) | Esquema de colecciones, índices, volúmenes, consultas frecuentes | | [VISUALIZACION_JS.md](VISUALIZACION_JS.md) | Frontend Three.js, API endpoint, nodos imagen Sprite, scripts por vista | | [SCRAPER_IMAGENES_QWEN.md](SCRAPER_IMAGENES_QWEN.md) | Scraper Wikipedia imágenes + analizador Qwen3-VL-8B (carga, batch, resume) | | [SCRAPER_WIKIPEDIA.md](SCRAPER_WIKIPEDIA.md) | Scraper artículos Wikipedia, tokenización BERT, temas y keywords | | [SCRAPER_NOTICIAS.md](SCRAPER_NOTICIAS.md) | Scraper de ~90 medios internacionales, traducción, limpieza, ficheros adjuntos | | [PIPELINE_MAESTRO.md](PIPELINE_MAESTRO.md) | Orquestador 3 fases, systemd timer, lockfile, estado MongoDB, cooldowns | --- ## Arquitectura en una página ``` Internet │ ▼ nginx (theflows.net:443, TLS Let's Encrypt) ├── / → FLUJOS/VISUALIZACION/public/ (estáticos) ├── /api/ → proxy → Node.js :3000 └── /wiki-images/ → (Node.js sirve estáticos de IMAGENES/output/wiki_images/) Node.js — FLUJOS/BACK_BACK/FLUJOS_APP.js └── GET /api/data → MongoDB FLUJOS_DATOS MongoDB localhost:27017 — FLUJOS_DATOS ├── wikipedia (~5k docs) ├── noticias (~20k docs) ├── imagenes (~150 docs, analizadas con Qwen) ├── imagenes_wiki (~500 docs, solo metadatos scrapeados) ├── comparaciones (~52M pares de similitud) └── pipeline_log (estado de ejecuciones) Python Pipeline (systemd timer — domingos 3:00 AM) FLUJOS_DATOS/pipeline_maestro.py ├── Fase 1: scraping (Wikipedia + noticias + imágenes) ├── Fase 2: análisis (Qwen3-VL + tokenización BERT) └── Fase 3: comparación (similitud coseno entre documentos) ``` --- ## Variables de entorno (.env en FLUJOS/BACK_BACK/) ``` MONGO_URL=mongodb://localhost:27017 DB_NAME=FLUJOS_DATOS PORT=3000 ``` --- ## Rutas críticas del servidor ``` /var/www/theflows.net/flujos/ ├── docs/ # esta documentación ├── FLUJOS/ │ ├── BACK_BACK/FLUJOS_APP.js # servidor Node.js │ └── VISUALIZACION/public/ # frontend estático ├── FLUJOS_DATOS/ │ ├── pipeline_maestro.py # orquestador │ ├── myenv/ # Python venv (~2 GB, en .gitignore) │ ├── WIKIPEDIA/main.py # scraper Wikipedia │ ├── NOTICIAS/main_noticias.py # scraper noticias │ ├── IMAGENES/ │ │ ├── wikipedia_image_scraper.py # scraper imágenes │ │ ├── image_analyzer.py # Qwen3-VL │ │ ├── pipeline_imagenes.py # orquestador imágenes │ │ ├── model_cache/ # Qwen descargado (~16 GB, .gitignore) │ │ └── output/wiki_images/ # imágenes en disco (.gitignore) │ └── COMPARACIONES/ │ ├── pipeline_completo.py # cálculo de similitud │ └── pipeline_mongolo.py # tokenización + inserción MongoDB └── .gitignore # excluye datos pesados del repo ``` --- ## Seguridad — prioridades pendientes 1. 🔴 **Aplicar `sanitizeParam()`** en FLUJOS_APP.js para prevenir NoSQL injection 2. 🔴 **Cambiar `'0.0.0.0'` por `'127.0.0.1'`** en `app.listen()` para cerrar puerto 3000 3. 🟠 **Reemplazar `innerHTML` por `textContent`** en output_int_sec.js y 3dscript_eco-corp.html 4. 🟠 **Añadir `express-rate-limit`** al endpoint `/api/` 5. 🟡 **Activar `helmet()` completo** (no solo CSP) para quitar `X-Powered-By` Ver [SEGURIDAD.md](SEGURIDAD.md) para código de fix completo.