#!/bin/bash # ================================================================ # Script de Prueba y Reconstrucción para TubeScript API # ================================================================ set -e echo "🔧 TubeScript API - Prueba y Reconstrucción" echo "==============================================" echo "" # Colores RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 1. Detener todo echo "🛑 Paso 1: Deteniendo servicios actuales..." docker-compose down 2>/dev/null || docker stop $(docker ps -aq) 2>/dev/null || true docker rm $(docker ps -aq) 2>/dev/null || true echo -e "${GREEN}✅ Servicios detenidos${NC}" echo "" # 2. Limpiar imágenes viejas echo "🧹 Paso 2: Limpiando imágenes antiguas..." docker rmi tubescript-api 2>/dev/null || true echo -e "${GREEN}✅ Limpieza completada${NC}" echo "" # 3. Reconstruir echo "🏗️ Paso 3: Reconstruyendo imagen..." echo " (Esto puede tomar 3-5 minutos)" docker-compose build --no-cache tubescript-api if [ $? -eq 0 ]; then echo -e "${GREEN}✅ Build completado exitosamente${NC}" else echo -e "${RED}❌ Error en el build${NC}" exit 1 fi echo "" # 4. Iniciar servicio echo "🚀 Paso 4: Iniciando servicio..." docker-compose up -d tubescript-api if [ $? -eq 0 ]; then echo -e "${GREEN}✅ Servicio iniciado${NC}" else echo -e "${RED}❌ Error al iniciar${NC}" exit 1 fi echo "" # 5. Esperar inicialización echo "⏳ Paso 5: Esperando inicialización (15 segundos)..." for i in {15..1}; do echo -n "$i... " sleep 1 done echo "" echo "" # 6. Verificar que está corriendo echo "🔍 Paso 6: Verificando estado..." docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep tubescript_api if [ $? -eq 0 ]; then echo -e "${GREEN}✅ Contenedor corriendo${NC}" else echo -e "${RED}❌ Contenedor NO está corriendo${NC}" echo "Ver logs:" docker logs tubescript_api 2>&1 | tail -50 exit 1 fi echo "" # 7. Probar endpoint de health echo "🏥 Paso 7: Probando endpoint de health..." curl -s http://localhost:8080/docs > /dev/null 2>&1 if [ $? -eq 0 ]; then echo -e "${GREEN}✅ API respondiendo${NC}" else echo -e "${YELLOW}⚠️ API aún no responde (puede necesitar más tiempo)${NC}" fi echo "" # 8. Probar el endpoint problemático echo "🧪 Paso 8: Probando endpoint de transcripción..." echo " Video ID: 6hini9Xz_fc" echo "" RESPONSE=$(curl -s -w "\n%{http_code}" "http://localhost:8080/transcript/6hini9Xz_fc?lang=es" 2>&1) HTTP_CODE=$(echo "$RESPONSE" | tail -n1) BODY=$(echo "$RESPONSE" | head -n-1) if [ "$HTTP_CODE" = "200" ]; then echo -e "${GREEN}✅ ¡ÉXITO! El endpoint funciona correctamente${NC}" echo "" echo "Respuesta:" echo "$BODY" | python3 -m json.tool 2>/dev/null || echo "$BODY" elif [ "$HTTP_CODE" = "400" ]; then echo -e "${RED}❌ Error 400 - El problema persiste${NC}" echo "" echo "Respuesta de error:" echo "$BODY" | python3 -m json.tool 2>/dev/null || echo "$BODY" echo "" echo "📋 Ver logs del contenedor:" echo " docker logs tubescript_api" else echo -e "${YELLOW}⚠️ HTTP $HTTP_CODE - Respuesta inesperada${NC}" echo "" echo "$BODY" fi echo "" echo "==============================================" echo "🔍 Comandos útiles:" echo " Ver logs: docker logs -f tubescript_api" echo " Entrar: docker exec -it tubescript_api bash" echo " Detener: docker-compose down" echo " Reiniciar: docker-compose restart tubescript-api" echo "=============================================="