# Guía de Instalación y Uso de CORDIS Intelligence

## Introducción

Este documento proporciona instrucciones detalladas para instalar, configurar y utilizar CORDIS Intelligence. El sistema permite extraer enlaces de documentos PDF de proyectos de investigación europeos, analizar automáticamente su contenido mediante inteligencia artificial con **respuestas ultra-concisas de máximo 10 palabras**, y presentar los resultados de manera estructurada y eficiente.

## Requisitos del Sistema

- **Node.js**: versión 16.0.0 o superior
- **MongoDB**: versión 5.0.0 o superior
- **Chrome/Chromium**: Para navegación web automatizada (Puppeteer)
- **Navegador moderno**: Chrome, Firefox, Safari o Edge
- **Conexión a Internet**: Para acceso a APIs de IA y análisis de enlaces web
- **Espacio en disco**: Mínimo 2GB para PDFs y screenshots

## Instalación

### 1. Clonar o Descomprimir el Proyecto

Si recibió el proyecto como un archivo comprimido:
```bash
unzip cordis-intelligence.zip -d /ruta/destino
cd /ruta/destino/cordis-intelligence
```

### 2. Configurar el Backend

1. Navegar al directorio del backend:
   ```bash
   cd backend
   ```

2. Instalar dependencias:
   ```bash
   npm install
   ```

3. Crear archivo de configuración:
   ```bash
   cp .env.example .env
   ```

4. Editar el archivo `.env` con su editor preferido:
   ```bash
   nano .env
   ```
   
   Configurar los siguientes parámetros:
   ```env
   PORT=5000
   MONGODB_URI=mongodb://localhost:27017/cordis-intelligence
   OPENAI_API_KEY=tu_clave_openai_aqui
   GEMINI_API_KEY=tu_clave_gemini_aqui
   
   # Configuración opcional
   MAX_FILE_SIZE=52428800  # 50MB
   UPLOAD_DIR=uploads
   ```

### 3. Configurar el Frontend

1. Navegar al directorio del frontend:
   ```bash
   cd ../frontend
   ```

2. Instalar dependencias:
   ```bash
   npm install
   ```

3. Verificar la configuración de la API:
   - Abrir el archivo `src/lib/api.ts`
   - Asegurarse de que la variable `API_URL` apunta a la URL correcta del backend

## Ejecución del Sistema

### Iniciar MongoDB

Asegúrese de que MongoDB esté ejecutándose:
```bash
# En sistemas con systemd (Linux)
sudo systemctl start mongod

# En macOS con Homebrew
brew services start mongodb-community

# En Windows
net start MongoDB
```

### Iniciar el Backend

1. Desde el directorio del backend:
   ```bash
   npm start
   ```
   
   El servidor se iniciará en el puerto configurado (por defecto: 5000)
   Verá el mensaje: "Servidor ejecutándose en puerto 5000"

### Iniciar el Frontend

1. Desde el directorio del frontend:
   ```bash
   npm run dev
   ```
   
   La aplicación estará disponible en: http://localhost:5173

## Uso del Sistema

### 1. Carga de Documentos PDF Individuales

1. Acceder a la aplicación web desde el navegador
2. Seleccionar "Nuevo Proyecto de Investigación UE"
3. Cargar un archivo PDF de proyecto (máximo 50MB)
4. Asignar un nombre al proyecto
5. Hacer clic en "Subir y Analizar Proyecto"
6. Esperar a que se complete la extracción de enlaces

### 2. Procesamiento Masivo CORDIS

1. Ir a la sección "Procesamiento Masivo"
2. En la pestaña "Subir JSON":
   - Seleccionar archivo JSON con proyectos CORDIS
   - **NUEVO**: Aplicar filtros por palabras clave
   - Elegir modo AND/OR para el filtrado
   - Ver preview de proyectos filtrados
   - Subir solo los proyectos relevantes
3. En el Dashboard:
   - Monitorear estadísticas en tiempo real
   - Usar "Iniciar Descarga Masiva" para PDFs
   - Usar "Iniciar Análisis Inteligente" para procesamiento con IA

### 3. Configuración de Análisis con IA

1. Seleccionar el proveedor de IA:
   - **OpenAI GPT-4o** (recomendado)
   - **Google Gemini 1.5** (alternativa)
2. Elegir idioma de análisis (ES, EN, IT, RO)
3. **IMPORTANTE**: El sistema está optimizado para generar **respuestas de máximo 10 palabras**
4. Personalizar preguntas si es necesario
5. Iniciar análisis individual o masivo

### 4. Visualización de Resultados

1. Seleccionar un enlace analizado
2. Revisar el **resumen ejecutivo ultra-conciso**
3. Examinar las **respuestas de máximo 10 palabras** a cada pregunta
4. Ver screenshots para contexto visual
5. Consultar tooltips para información detallada

### 5. Exportación de Datos

1. Utilizar los botones de exportación para obtener resultados en formato:
   - **JSON**: Para integración con otros sistemas
   - **CSV**: Para análisis en hojas de cálculo  
   - **Excel**: Para reportes formateados
2. Los archivos incluyen todas las respuestas concisas y metadatos

## Características del Sistema de IA Optimizado

### Respuestas Ultra-Concisas
- **Límite estricto**: Máximo 10 palabras por respuesta
- **Validación automática**: Rechaza respuestas largas
- **Prompts optimizados**: Instrucciones específicas para concisión
- **Uso de números**: Preferencia por datos numéricos cuando es posible

### Ejemplos de Respuestas
```
❌ Antes: "El proyecto desarrolla una tecnología innovadora basada en inteligencia artificial para el análisis de grandes volúmenes de datos médicos..."
✅ Ahora: "IA para análisis datos médicos"

❌ Antes: "El presupuesto total del proyecto asciende a 2.5 millones de euros distribuidos en diferentes paquetes..."
✅ Ahora: "2.5 millones euros"
```

## Solución de Problemas Comunes

### El servidor backend no se inicia

- Verificar que MongoDB esté ejecutándose: `sudo systemctl status mongod`
- Comprobar la configuración en el archivo `.env`
- Verificar los permisos de escritura en el directorio de uploads
- Revisar logs en la consola del servidor

### Error en el análisis de enlaces

- Verificar que las claves de API de IA sean válidas y tengan crédito disponible
- Comprobar la conexión a internet
- Revisar si la URL es accesible manualmente
- Verificar configuración de Puppeteer/Chrome

### Respuestas demasiado largas

- **El sistema automáticamente limita las respuestas a 10 palabras**
- Si ve "Respuesta demasiado larga", verificar configuración del proveedor de IA
- Revisar que los prompts estén correctamente configurados

### La extracción de enlaces del PDF falla

- Asegurarse de que el PDF tenga un formato estándar
- Verificar que el PDF no esté protegido o dañado
- Comprobar que el tamaño del archivo no exceda 50MB
- Revisar que el PDF contenga enlaces válidos

### Problemas con procesamiento masivo

- Verificar formato del archivo JSON CORDIS
- Comprobar espacio disponible en disco
- Revisar conexión a internet para descargas
- Monitorear logs del servidor para errores específicos

## Personalización Avanzada

### Modificación de Límite de Palabras

Para cambiar el límite de 10 palabras (no recomendado):
1. Editar `backend/src/routes/analysis.js`
2. Modificar la función `truncateResponse()`
3. Reiniciar el servidor backend

### Modificación de Prompts de IA

Para personalizar cómo la IA analiza el contenido:
1. Editar las funciones `analyzeWithOpenAI` y `analyzeWithGemini` en `backend/src/routes/analysis.js`
2. Modificar las instrucciones del sistema
3. Reiniciar el servidor backend

### Adición de Nuevos Idiomas

Para añadir soporte para nuevos idiomas:
1. Crear archivo de traducción en `frontend/src/locales/[codigo]/translation.json`
2. Añadir el idioma al mapeo en `analyzeContentWithAI`
3. Reconstruir el frontend

### Cambio de Estilos

Para modificar la apariencia de la aplicación:
1. Editar los componentes en `frontend/src/components/`
2. Utilizar clases de Tailwind CSS
3. Reconstruir con `npm run build`

## Arquitectura del Sistema

### Backend (`backend/src/routes/analysis.js`)
- `analyzeContentWithAI()`: Función principal de análisis
- `analyzeWithOpenAI()`: Implementación para OpenAI GPT-4o
- `analyzeWithGemini()`: Implementación para Google Gemini 1.5
- `truncateResponse()`: Validación de límite de 10 palabras

### Frontend
- Componentes React con TypeScript
- Interfaz multiidioma (i18next)
- Estilos con Tailwind CSS
- Comunicación con API mediante Axios

## Monitoreo y Logs

### Logs del Sistema
- **Backend**: Logs detallados en consola del servidor
- **Análisis**: Cada operación de IA se registra
- **Descargas**: Progreso y errores de PDFs
- **Validación**: Control de respuestas de 10 palabras

### Dashboard en Tiempo Real
- Actualización automática cada 30 segundos
- Métricas de descarga y procesamiento
- Estados granulares de cada operación

## Consideraciones de Seguridad

- **Claves de API**: Mantener seguras en archivo `.env`
- **Límites de archivo**: 50MB por PDF configurado
- **Validación de entrada**: Sanitización automática
- **HTTPS**: Implementar en producción
- **Firewall**: Configurar puertos apropiados

## Soporte y Mantenimiento

### Backup de Datos
```bash
# Backup de MongoDB
mongodump --db cordis-intelligence --out backup/

# Backup de archivos subidos
tar -czf uploads_backup.tar.gz uploads/
```

### Actualizaciones
1. Hacer backup de datos
2. Actualizar dependencias: `npm update`
3. Reiniciar servicios
4. Verificar funcionamiento

