4.2 KiB
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. |