FLUJOS/INFO/DOCS/CONTEXT/README.md
CAPITANSITO 954f47996f refactor: reorganizar docs y pocs bajo INFO/
- docs/ → INFO/DOCS/CONTEXT/ (documentación técnica en markdown)
- FLUJOS/DOCS/ + FLUJOS_DATOS/DOCS/ → INFO/DOCS/ (txts de arquitectura)
- POCS/ → INFO/POCS/ (pruebas de concepto)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-21 23:49:33 +02:00

98 lines
4.1 KiB
Markdown

# 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.