rss2/FUNCIONES_DE_ARCHIVOS.md

4.2 KiB

Descripción de Archivos y Funciones del Proyecto RSS2

Este documento detalla la estructura del proyecto y la función de sus archivos principales.

🐳 Infraestructura y Despliegue

Archivo / Directorio Descripción
docker-compose.yml Orquestador principal. Define todos los servicios (db, web, workers, redis, qdrant, etc.), redes, volúmenes de persistencia y configuración de recursos.
Dockerfile Definición de la imagen base para la aplicación web y la mayoría de los workers en Python.
Dockerfile.llm_worker Imagen específica para el worker de LLM, incluye dependencias de CUDA y PyTorch para ExLlamaV2.
Dockerfile.url_worker Imagen optimizada para el worker de descubrimiento y procesamiento de URLs.
nginx.conf Configuración del servidor web Nginx que actúa como proxy inverso y servidos de archivos estáticos.
.env Variables de entorno con credenciales y configuración sensible (NO compartir).
gunicorn_config.py Configuración del servidor de aplicaciones WSGI Gunicorn para producción.

🧠 Núcleo de la Aplicación (Python)

Archivo Descripción
app.py Punto de entrada. Inicializa la aplicación Flask, registra blueprints (rutas) y configura extensiones.
config.py Carga y valida la configuración desde variables de entorno. Define constantes globales.
db.py Gestión de la conexión a la base de datos PostgreSQL (pool de conexiones).
cache.py Capa de abstracción para Redis. Maneja caché de respuestas y estados transitorios.
scheduler.py Planificador de tareas periódicas (cron jobs internos) para mantenimiento y disparadores.
requirements.txt Lista de dependencias de Python necesarias para el proyecto.

👷 Workers (Procesamiento en Segundo Plano)

Ubicados en workers/:

Archivo Función
llm_categorizer_worker.py Categoriza noticias usando un LLM local (Mistral/ExLlamaV2). Asigna etiquetas temáticas.
url_worker_daemon.py Procesa y valida URLs extraídas, gestionando la cola de descargas.
url_discovery_worker.py Busca nuevos feeds RSS a partir de las URLs base.
translation_worker.py Traduce contenido usando modelos NLLB (No Language Left Behind).
embeddings_worker.py Genera vectores semánticos para búsqueda y clustering.
cluster_worker.py Agrupa noticias similares en "historias" o eventos.
ner_worker.py Extracción de Entidades Nombradas (personas, organizaciones, lugares).
topics_worker.py Identifica y extrae tópicos principales de los textos.
qdrant_worker.py Sincroniza los vectores generados con la base de datos vectorial Qdrant.

🌐 API y Rutas

Ubicados en routers/:

Archivo Descripción
api.py Endpoints generales de la API REST.
feeds.py Gestión de fuentes RSS (CRUD).
news.py Endpoints para listar y filtrar noticias.
dashboard.py Rutas para el panel de administración y estadísticas.
auth.py Manejo de autenticación y autorización.
search.py Endpoints para búsqueda semántica y tradicional.

🛠️ Herramientas y Scripts

Archivo Descripción
scripts/download_llm_model.sh Script para descargar modelos LLM cuantizados desde HuggingFace de forma segura.
verify_security.sh Auditoría de seguridad automatizada (verifica permisos, configuración TLS, etc.).
generate_secure_credentials.sh Genera contraseñas seguras y configura el entorno inicial.
rss-ingestor-go/ Ingestor de RSS de alto rendimiento escrito en Go.

📂 Directorios de Datos

Directorio Contenido
models/ Almacenamiento persistente de modelos de IA (LLMs, Embeddings, Traducción).
pgdata/ Persistencia de la base de datos PostgreSQL.
qdrant_storage/ Persistencia de la base de datos vectorial Qdrant.
hf_cache/ Caché de HuggingFace para modelos y tokenizers.
templates/ Plantillas HTML (Jinja2) para la interfaz web.
static/ Archivos CSS, JS e imágenes públicas.