Actualización: mejoras en ChatInterface, API, backend y nuevos archivos de diagnóstico/testing
This commit is contained in:
138
start.sh
Executable file
138
start.sh
Executable file
@@ -0,0 +1,138 @@
|
||||
#!/usr/bin/env bash
|
||||
# ===========================================
|
||||
# MusiaIA - Full Stack Startup Script
|
||||
# ===========================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# Colors for output
|
||||
GREEN='\033[0;32m'
|
||||
BLUE='\033[0;34m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Get script directory and project root
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
REPO_ROOT="${SCRIPT_DIR}"
|
||||
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo -e "${BLUE} MusiaIA - AI Music Generator${NC}"
|
||||
echo -e "${BLUE}========================================${NC}"
|
||||
echo ""
|
||||
|
||||
# Load environment variables
|
||||
if [[ -f "${REPO_ROOT}/.env" ]]; then
|
||||
echo -e "${YELLOW}Loading environment variables from .env...${NC}"
|
||||
# shellcheck disable=SC1090
|
||||
source "${REPO_ROOT}/.env"
|
||||
echo -e "${GREEN}✓ Environment loaded${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠ .env file not found, using default values${NC}"
|
||||
fi
|
||||
|
||||
# Export required environment variables
|
||||
export ANTHROPIC_BASE_URL="${ANTHROPIC_BASE_URL:-https://api.z.ai/api/anthropic}"
|
||||
export ANTHROPIC_AUTH_TOKEN="${ANTHROPIC_AUTH_TOKEN:-}"
|
||||
export PYTHONPATH="${REPO_ROOT}/src/backend/api:${REPO_ROOT}/src/backend"
|
||||
|
||||
# Verify critical environment variables
|
||||
if [[ -z "${ANTHROPIC_AUTH_TOKEN:-}" ]]; then
|
||||
echo -e "${YELLOW}⚠ Warning: ANTHROPIC_AUTH_TOKEN not set${NC}"
|
||||
else
|
||||
echo -e "${GREEN}✓ ANTHROPIC_AUTH_TOKEN configured${NC}"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -e "${YELLOW}Configuration:${NC}"
|
||||
echo -e " ANTHROPIC_BASE_URL: ${ANTHROPIC_BASE_URL}"
|
||||
echo -e " ANTHROPIC_AUTH_TOKEN: ${ANTHROPIC_AUTH_TOKEN:0:20}..."
|
||||
echo -e " API_HOST: ${API_HOST:-0.0.0.0}"
|
||||
echo -e " API_PORT: ${API_PORT:-8000}"
|
||||
echo -e " FRONTEND_PORT: 5173"
|
||||
echo ""
|
||||
|
||||
# Kill existing servers if running
|
||||
echo -e "${YELLOW}Checking for existing processes...${NC}"
|
||||
pkill -f "uvicorn.*main:app" 2>/dev/null || true
|
||||
pkill -f "vite.*5173" 2>/dev/null || true
|
||||
sleep 2
|
||||
echo -e "${GREEN}✓ Cleaned up old processes${NC}"
|
||||
|
||||
# Start backend server in background
|
||||
echo ""
|
||||
echo -e "${BLUE}Starting Backend Server (FastAPI)...${NC}"
|
||||
cd "${REPO_ROOT}/src/backend/api"
|
||||
|
||||
# Start uvicorn with environment
|
||||
PYTHONPATH="${REPO_ROOT}/src/backend/api:${REPO_ROOT}/src/backend" \
|
||||
uvicorn main:app \
|
||||
--host "${API_HOST:-0.0.0.0}" \
|
||||
--port "${API_PORT:-8000}" \
|
||||
--reload \
|
||||
> "${REPO_ROOT}/backend.log" 2>&1 &
|
||||
|
||||
BACKEND_PID=$!
|
||||
echo -e "${GREEN}✓ Backend started (PID: ${BACKEND_PID})${NC}"
|
||||
|
||||
# Wait for backend to be ready
|
||||
echo -e "${YELLOW}Waiting for backend to be ready...${NC}"
|
||||
for i in {1..30}; do
|
||||
if curl -s http://localhost:8000/health > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ Backend is ready!${NC}"
|
||||
break
|
||||
fi
|
||||
if [[ $i -eq 30 ]]; then
|
||||
echo -e "${RED}✗ Backend failed to start${NC}"
|
||||
kill $BACKEND_PID 2>/dev/null || true
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Start frontend server in background
|
||||
echo ""
|
||||
echo -e "${BLUE}Starting Frontend Server (Vite + React)...${NC}"
|
||||
cd "${REPO_ROOT}/frontend"
|
||||
|
||||
npm run dev -- --host 0.0.0.0 --port 5173 \
|
||||
> "${REPO_ROOT}/frontend.log" 2>&1 &
|
||||
|
||||
FRONTEND_PID=$!
|
||||
echo -e "${GREEN}✓ Frontend started (PID: ${FRONTEND_PID})${NC}"
|
||||
|
||||
# Wait for frontend to be ready
|
||||
echo -e "${YELLOW}Waiting for frontend to be ready...${NC}"
|
||||
for i in {1..30}; do
|
||||
if curl -s http://localhost:5173 > /dev/null 2>&1; then
|
||||
echo -e "${GREEN}✓ Frontend is ready!${NC}"
|
||||
break
|
||||
fi
|
||||
if [[ $i -eq 30 ]]; then
|
||||
echo -e "${RED}✗ Frontend failed to start${NC}"
|
||||
kill $BACKEND_PID $FRONTEND_PID 2>/dev/null || true
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Save PIDs to file for later cleanup
|
||||
echo $BACKEND_PID > "${REPO_ROOT}/.backend.pid"
|
||||
echo $FRONTEND_PID > "${REPO_ROOT}/.frontend.pid"
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo -e "${GREEN} 🎉 All systems running!${NC}"
|
||||
echo -e "${GREEN}========================================${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}Frontend Dashboard:${NC} http://localhost:5173"
|
||||
echo -e "${BLUE}Backend API:${NC} http://localhost:8000"
|
||||
echo -e "${BLUE}API Documentation:${NC} http://localhost:8000/docs"
|
||||
echo ""
|
||||
echo -e "${YELLOW}Press Ctrl+C to stop all servers${NC}"
|
||||
echo ""
|
||||
|
||||
# Wait for interrupt
|
||||
trap 'echo ""; echo -e "${YELLOW}Shutting down servers...${NC}"; kill $BACKEND_PID $FRONTEND_PID 2>/dev/null || true; rm -f "${REPO_ROOT}/.backend.pid" "${REPO_ROOT}/.frontend.pid"; echo -e "${GREEN}✓ All servers stopped${NC}"; exit 0' INT
|
||||
|
||||
# Keep script running
|
||||
wait
|
||||
Reference in New Issue
Block a user