# 📦 Guía de Instalación - Microservicio de Análisis de Sentimientos ## 📋 Prerrequisitos Antes de comenzar, asegúrate de tener instalado: - **Python 3.9 o superior** ([Descargar aquí](https://www.python.org/downloads/)) - **pip** (gestor de paquetes de Python, viene con Python) - **PostgreSQL** (ya instalado para tu backend) - **Node.js y npm** (ya instalado para tu backend) ### Verificar instalaciones ```bash # Verificar Python python --version # O en algunos sistemas: python3 --version # Verificar pip pip --version # O: pip3 --version ``` --- ## 🐍 Instalación del Microservicio Python ### Paso 1: Navegar al directorio ```bash cd D:\Projects\Personal\sentiment-analysis-service ``` ### Paso 2: Crear entorno virtual (RECOMENDADO) Un entorno virtual aísla las dependencias del proyecto del sistema. **En Windows (Git Bash o CMD):** ```bash # Crear entorno virtual python -m venv venv # Activar entorno virtual # En Git Bash: source venv/Scripts/activate # En CMD: venv\Scripts\activate ``` **En Windows (PowerShell):** ```powershell # Crear entorno virtual python -m venv venv # Activar entorno virtual venv\Scripts\Activate.ps1 ``` **En Linux/Mac:** ```bash # Crear entorno virtual python3 -m venv venv # Activar entorno virtual source venv/bin/activate ``` Cuando el entorno esté activado, verás `(venv)` al inicio de tu línea de comando. ### Paso 3: Instalar dependencias ```bash pip install -r requirements.txt ``` **Si requirements.txt no existe o falta algo, instalar manualmente:** ```bash # Dependencias principales pip install fastapi==0.104.1 pip install uvicorn==0.24.0 pip install transformers==4.35.2 pip install torch==2.1.0 pip install python-dotenv==1.0.0 # Nota: torch puede tardar varios minutos en descargar (es un paquete grande) ``` ### Paso 4: Verificar instalación ```bash # Ver paquetes instalados pip list # Deberías ver: fastapi, uvicorn, transformers, torch, python-dotenv ``` ### Paso 5: Configurar variables de entorno Crear archivo `.env` en la raíz del proyecto: ```bash # En la carpeta sentiment-analysis-service, crear .env touch .env ``` **Contenido del archivo `.env`:** ```env # Modelo de análisis de sentimientos MODEL_NAME=pysentimiento/robertuito-sentiment-analysis # Dispositivo (cpu o cuda para GPU) DEVICE=cpu # Configuración del servidor HOST=0.0.0.0 PORT=8000 # CORS - orígenes permitidos (tu frontend) CORS_ORIGINS=http://localhost:5173,http://localhost:3000,http://localhost:5174 ``` ### Paso 6: Primera ejecución (descarga del modelo) La primera vez que ejecutes el servicio, descargará el modelo de ML (~500MB). ```bash # Iniciar el servicio python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` **Salida esperada:** ``` INFO: Will watch for changes in these directories: ['D:\\Projects\\Personal\\sentiment-analysis-service'] INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit) INFO: Started reloader process [XXXX] using WatchFiles INFO: Started server process [XXXX] INFO: Waiting for application startup. INFO: Loading model: pysentimiento/robertuito-sentiment-analysis Downloading model... (esto puede tardar varios minutos) INFO: Model loaded successfully on device: cpu INFO: Service ready! INFO: Application startup complete. ``` ### Paso 7: Verificar que funciona Abre tu navegador en: **http://localhost:8000** Deberías ver: ```json { "service": "Sentiment Analysis API", "version": "0.1.0", "status": "running" } ``` **Probar endpoint de salud:** http://localhost:8000/health ```json { "status": "healthy", "model_loaded": true, "model_name": "pysentimiento/robertuito-sentiment-analysis" } ``` --- ## 🔧 Instalación del Backend (Node.js) ### Paso 1: Navegar al backend ```bash cd D:\Projects\Personal\mdg-backend ``` ### Paso 2: Instalar dependencia de axios ```bash npm install axios ``` ### Paso 3: Ejecutar migraciones ```bash npm run migration:run ``` **Salida esperada:** ``` 📝 Creando tabla analisis_sentimiento... ✅ Tabla analisis_sentimiento creada exitosamente 📝 Agregando campo estado_analisis a diario_emocional... ✅ Campo agregado exitosamente ``` ### Paso 4: Configurar variables de entorno Editar archivo `.env` del backend, agregar: ```env # URL del microservicio de análisis SENTIMENT_SERVICE_URL=http://localhost:8000 ``` ### Paso 5: Reiniciar el backend ```bash npm run dev ``` --- ## 🚀 Iniciar todo el sistema ### Orden recomendado: 1. **Base de datos (PostgreSQL)** - Debe estar corriendo 2. **Microservicio Python** - Terminal 1 3. **Backend Node.js** - Terminal 2 4. **Frontend React** - Terminal 3 ### Terminal 1: Microservicio Python ```bash cd D:\Projects\Personal\sentiment-analysis-service source venv/Scripts/activate # Activar entorno virtual python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 ``` ### Terminal 2: Backend Node.js ```bash cd D:\Projects\Personal\mdg-backend npm run dev ``` ### Terminal 3: Frontend React ```bash cd D:\Projects\Personal\proyecto-de-grado npm run dev ``` --- ## 🧪 Probar el sistema ### 1. Probar microservicio directamente **Usando curl:** ```bash curl -X POST "http://localhost:8000/analyze/enhanced" \ -H "Content-Type: application/json" \ -d '{"text": "Hoy me siento muy feliz porque logré terminar mi proyecto"}' ``` **Usando Postman o similar:** - URL: `POST http://localhost:8000/analyze/enhanced` - Body (JSON): ```json { "text": "Hoy me siento muy feliz porque logré terminar mi proyecto" } ``` **Respuesta esperada:** ```json { "sentimiento_general": "positivo", "score_positivo": 0.85, "score_negativo": 0.10, "score_neutral": 0.05, "confianza": 0.85, "modelo_usado": "pysentimiento/robertuito-sentiment-analysis", "emocion_predominante": "Feliz", "palabras_clave": [ {"word": "proyecto", "frequency": 1}, {"word": "logré", "frequency": 1}, {"word": "terminar", "frequency": 1} ], "alertas": [] } ``` ### 2. Probar desde el frontend 1. Inicia sesión como paciente 2. Ve a "Mis Tareas" → "Diario Emocional" 3. Escribe una entrada 4. Haz clic en "Guardar Entrada" 5. Espera unos segundos 6. Ve al tab de "Análisis de Sentimientos" (como psicólogo viendo al paciente) --- ## ❌ Problemas Comunes ### Error: "python no reconocido" **Solución:** - Instala Python desde python.org - Asegúrate de marcar "Add Python to PATH" durante la instalación - Reinicia tu terminal ### Error: "pip no reconocido" **Solución:** ```bash python -m pip --version # Usar: python -m pip install -r requirements.txt ``` ### Error: "Cannot find module transformers" **Solución:** ```bash # Asegúrate de tener el entorno virtual activado source venv/Scripts/activate pip install transformers torch ``` ### Error: "Address already in use" (puerto 8000 ocupado) **Solución:** ```bash # Cambiar puerto en el comando python -m uvicorn app.main:app --reload --port 8001 # Y actualizar en backend .env: SENTIMENT_SERVICE_URL=http://localhost:8001 ``` ### Error: "Connection refused" desde backend **Solución:** - Verifica que el microservicio Python esté corriendo - Verifica que el puerto sea correcto (8000) - Verifica la variable SENTIMENT_SERVICE_URL en backend ### Modelo tarda mucho en descargar **Solución:** - Es normal, el modelo pesa ~500MB - Se descarga solo la primera vez - Ten paciencia, puede tardar 5-15 minutos dependiendo de tu conexión ### Error: "torch not found" o problemas con torch **Solución (Windows):** ```bash # Instalar versión específica de torch pip install torch==2.1.0 --index-url https://download.pytorch.org/whl/cpu ``` --- ## 🔄 Actualizar el sistema ### Si haces cambios en el código Python: El servidor se reinicia automáticamente (modo `--reload`) ### Si haces cambios en el backend Node.js: El servidor se reinicia automáticamente (modo `dev`) ### Si cambias las migraciones: ```bash cd D:\Projects\Personal\mdg-backend npm run migration:run ``` --- ## 🛑 Detener los servicios Para detener cualquier servicio, presiona: ``` Ctrl + C ``` Para desactivar el entorno virtual de Python: ```bash deactivate ``` --- ## 📚 Próximos pasos Una vez instalado todo, consulta: - `USO.md` - Guía de uso del sistema - `API.md` - Documentación de la API - `ARQUITECTURA_ANALISIS.md` - Arquitectura técnica