rss2/README.md
2026-01-13 13:55:44 +01:00

125 lines
5.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# RSS2 - Plataforma de Inteligencia de Noticias con IA
RSS2 es una plataforma avanzada de agregación, traducción, análisis y vectorización de noticias diseñada para procesar grandes volúmenes de información en tiempo real. Combina una arquitectura de **microservicios híbrida (Go + Python)** con modelos de **Inteligencia Artificial** locales para transformar flujos RSS crudos en inteligencia accionable, permitiendo búsqueda semántica y análisis de tendencias.
---
## 🏗️ Arquitectura de Servicios (Docker)
El sistema está orquestado mediante Docker Compose y se divide en 3 redes aisladas (`frontend`, `backend`, `monitoring`) para garantizar la seguridad y el rendimiento.
### 🌐 Core & Acceso (Red Frontend)
| Servicio | Tecnología | Puerto Ext. | Descripción |
|----------|------------|-------------|-------------|
| **`nginx`** | Nginx Alpine | **8001** | **Gateway Público**. Proxy inverso que sirve la aplicación y archivos estáticos. |
| **`rss2_web`** | Python (Flask+Gunicorn) | - | Servidor de aplicación principal. Gestiona la API, interfaz web y lógica de negocio. |
### 📥 Ingesta y Descubrimiento (Red Backend)
| Servicio | Tecnología | Descripción |
|----------|------------|-------------|
| **`rss-ingestor-go`** | **Go** | Crawler de ultra-alto rendimiento. Monitoriza y descarga cientos de feeds RSS por minuto. |
| **`url-worker`** | Python | Scraper profundo. Descarga el contenido completo (HTML limpio via `newspaper3k`) de cada noticia. |
| **`url-discovery-worker`**| Python | Agente autónomo que descubre y sugiere nuevos feeds RSS basándose en el tráfico actual. |
### <20> Procesamiento de IA (Red Backend)
Estos workers procesan asíncronamente la información utilizando modelos locales (GPU/CPU).
| Servicio | Función | Modelo / Tecnología |
|----------|---------|---------------------|
| **`translator`** (x3) | **Traducción Neural** | `NLLB-200`. Traduce noticias de cualquier idioma al Español. Escalado horizontalmente (3 réplicas). |
| **`embeddings`** | **Vectorización** | `Sentence-Transformers`. Convierte texto en vectores matemáticos para búsqueda semántica. |
| **`ner`** | **Entidades** | Modelos SpaCy/Bert. Extrae Personas, Organizaciones y Lugares. |
| **`topics`** | **Clasificación** | Clasifica noticias en temas (Política, Economía, Tecnología, etc.). |
| **`cluster`** | **Agrupación** | Agrupa noticias sobre el mismo evento de diferentes fuentes. |
| **`related`** | **Relaciones** | Calcula y enlaza noticias relacionadas temporal y contextualmente. |
### 💾 Almacenamiento y Búsqueda (Red Backend)
| Servicio | Rol | Descripción |
|----------|-----|-------------|
| **`db`** | Base de Datos Relacional | **PostgreSQL 18**. Almacenamiento principal de noticias, usuarios y configuración. |
| **`qdrant`** | Base de Datos Vectorial | **Qdrant**. Motor de búsqueda semántica de alta velocidad. |
| **`qdrant-worker`**| Sincronización | Worker dedicado a mantener sincronizados PostgreSQL y Qdrant. |
| **`redis`** | Caché y Colas | **Redis 7**. Gestiona las colas de tareas para los workers y caché de sesión. |
### ⚙️ Orquestación y Mantenimiento
| Servicio | Descripción |
|----------|-------------|
| **`rss-tasks`** | Scheduler (Cron) que ejecuta tareas periódicas de limpieza, mantenimiento y optimización de índices. |
### 📊 Observabilidad (Red Monitoring)
Acceso exclusivo vía localhost o túnel SSH.
| Servicio | Puerto Local | Descripción |
|----------|--------------|-------------|
| **`grafana`** | **3001** | Dashboard visual para monitorizar CPU/RAM, colas de Redis y estado de ingesta. |
| **`prometheus`**| - | Recolección de métricas de todos los contenedores. |
| **`cadvisor`** | - | Monitor de recursos del kernel de Linux para Docker. |
---
## 🚀 Guía de Inicio Rápido
### Requisitos Previos
* Docker y Docker Compose V2.
* Drivers de NVIDIA (Opcional, pero recomendado para inferencia rápida de IA).
### 1. Instalación
```bash
git clone <repo>
cd rss2
```
### 2. Configuración de Seguridad
Genera contraseñas robustas automáticamente para todos los servicios:
```bash
./generate_secure_credentials.sh
```
*Esto creará un archivo `.env` configurado y seguro.*
### 3. Iniciar la Plataforma
Utiliza el script de arranque que verifica dependencias y levanta el stack:
```bash
./start_docker.sh
```
*Alternativamente: `docker compose up -d`*
### 4. Acceder a la Aplicación
* **Web Principal**: [http://localhost:8001](http://localhost:8001)
* **Monitorización**: [http://localhost:3001](http://localhost:3001) (Usuario: `admin`, Password: ver archivo `.env`)
---
## <20> Operaciones Comunes
### Ver logs en tiempo real
```bash
# Ver todo el sistema
docker compose logs -f
# Ver un servicio específico (ej. traductor o web)
docker compose logs -f translator
docker compose logs -f rss2_web
```
### Generación de Videos (Nuevo)
El sistema incluye un script para convertir noticias en videos narrados automáticamente:
```bash
# Ejecutar generador manual
python3 scripts/generar_videos_noticias.py
```
### Copias de Seguridad (Backup)
```bash
# Backup de PostgreSQL
docker exec rss2_db pg_dump -U rss rss > backup_full_$(date +%Y%m%d).sql
# Backup de Qdrant (Vectores)
tar -czf vector_backup.tar.gz qdrant_storage/
```
### Reinicio Completo (con reconstrucción)
Si modificas código o configuración:
```bash
docker compose down
docker compose up -d --build
```