No description
Find a file
miguelferrer95 fcd470e611 Update README
2025-02-26 10:26:17 +01:00
src feat(api, process_proposals, run): Improve API error handling and resilience 2025-02-26 09:39:57 +01:00
.env feat(process_proposals, scoring): Enhance proposal processing and scoring 2025-02-24 12:16:06 +01:00
.gitignore feat(database): Enhance proposal and user interaction models 2025-02-21 10:07:26 +01:00
CS-params.json Original version by Nimio 2025-02-17 11:26:45 +01:00
process_proposals.py feat(api, process_proposals, run): Improve API error handling and resilience 2025-02-26 09:39:57 +01:00
README.md Update README 2025-02-26 10:26:17 +01:00
requirements.txt feature(proposals): 2025-02-18 14:51:45 +01:00
run.py feat(run): Add timestamp to completion output 2025-02-26 09:41:49 +01:00

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

  1. Clonar el repositorio:
git clone https://github.com/tu-usuario/GIT_EUROPE_ETL.git
cd GIT_EUROPE_ETL
  1. Instalar dependencias:
pip install -r requirements.txt
  1. Configurar variables de entorno:
    • Copia el archivo .env.example a .env (si existe)
    • Edita el archivo .env con 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/
      

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

  1. Extracción: Se obtienen propuestas de financiación desde la API de la UE
  2. Transformación:
    • Se descargan y procesan documentos asociados
    • Se extraen campos clave mediante IA (ayuda máxima, presupuesto mínimo, etc.)
  3. Carga: Se almacenan los datos procesados en la base de datos
  4. 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 propuestas
  • proposal_documents: Documentos asociados a cada propuesta
  • users: Usuarios del sistema
  • company_profiles: Perfiles de empresa
  • proposal_scores: Puntuaciones de relevancia para cada propuesta y perfil