No description
| src | ||
| .env | ||
| .gitignore | ||
| CS-params.json | ||
| process_proposals.py | ||
| README.md | ||
| requirements.txt | ||
| run.py | ||
GIT_EUROPE_ETL
Descripción
Este proyecto es un sistema ETL (Extract, Transform, Load) diseñado para extraer información sobre propuestas de financiación de la Unión Europea, procesarlas y almacenarlas en una base de datos PostgreSQL. Además, incluye un sistema de puntuación (scoring) que evalúa la relevancia de cada propuesta para diferentes perfiles de empresa.
Características principales
- Extracción de propuestas de financiación desde la API de la UE
- Descarga y procesamiento de documentos asociados a cada propuesta
- Análisis de contenido mediante IA (OpenAI) para extraer información clave
- Sistema de puntuación para evaluar la relevancia de propuestas para perfiles de empresa
- Almacenamiento estructurado en base de datos PostgreSQL
Estructura del proyecto
GIT_EUROPE_ETL/
├── run.py # Script principal para ejecutar el ETL
├── process_proposals.py # Procesamiento de propuestas
├── src/ # Módulos del sistema
│ ├── api.py # Interacción con la API de la UE
│ ├── database.py # Definición del esquema de la base de datos
│ ├── doc_manager.py # Gestión de documentos
│ ├── repository.py # Operaciones de almacenamiento en BD
│ └── scoring.py # Sistema de puntuación de propuestas
├── .env # Variables de entorno
├── CS-params.json # Parámetros de búsqueda para la API
└── requirements.txt # Dependencias del proyecto
Requisitos previos
- Python 3.8+
- PostgreSQL
- Acceso a la API de la UE
- Clave de API de OpenAI
Instalación
- Clonar el repositorio:
git clone https://github.com/tu-usuario/GIT_EUROPE_ETL.git
cd GIT_EUROPE_ETL
- Instalar dependencias:
pip install -r requirements.txt
- Configurar variables de entorno:
- Copia el archivo
.env.examplea.env(si existe) - Edita el archivo
.envcon tus credenciales:DB_HOST=tu_host_db DB_PORT=5432 DB_USER=tu_usuario DB_PASSWORD=tu_contraseña DB_NAME=nombre_db OPENAI_API_KEY=tu_clave_openai API_URL=https://api.tech.ec.europa.eu/search-api/prod/rest/search EU_TOPIC_URL=https://ec.europa.eu/info/funding-tenders/opportunities/portal/screen/opportunities/topic-details/
- Copia el archivo
Uso
Ejecutar el proceso ETL completo
python run.py
Procesar solo propuestas específicas
python process_proposals.py --page 1 --size 5
Flujo de trabajo
- Extracción: Se obtienen propuestas de financiación desde la API de la UE
- Transformación:
- Se descargan y procesan documentos asociados
- Se extraen campos clave mediante IA (ayuda máxima, presupuesto mínimo, etc.)
- Carga: Se almacenan los datos procesados en la base de datos
- Scoring: Se evalúa la relevancia de cada propuesta para diferentes perfiles de empresa
Modelo de datos
El sistema utiliza las siguientes tablas principales:
proposals: Almacena información de las propuestasproposal_documents: Documentos asociados a cada propuestausers: Usuarios del sistemacompany_profiles: Perfiles de empresaproposal_scores: Puntuaciones de relevancia para cada propuesta y perfil