código completo FLUJOS — snapshot limpio sin datos scrapeados
Incluye: backend Node.js/Express, visualización 3D (Three.js/3d-force-graph), scrapers Wikipedia/noticias/imágenes, analizador Qwen3-VL, pipeline maestro con systemd timer, fixes de seguridad (NoSQL injection, XSS, ReDoS, port binding) y documentación técnica completa en docs/. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
013fe673f3
commit
83f67b76b4
190 changed files with 193337 additions and 2 deletions
98
docs/README.md
Normal file
98
docs/README.md
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
# 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue