Files
auto-stock/start-all.sh
2025-11-14 11:05:31 +09:00

146 lines
4.1 KiB
Bash
Executable File

#!/bin/bash
# Auto Stock Trading System - 전체 시작 스크립트
echo "================================================"
echo " Auto Stock Trading System Starting..."
echo "================================================"
# 색상 정의
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 프로젝트 루트 디렉토리
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$PROJECT_ROOT"
# 로그 디렉토리 생성
mkdir -p logs
echo ""
echo "📍 Project Root: $PROJECT_ROOT"
echo ""
# 1. Python 가상환경 확인 및 생성
echo "🐍 [1/5] Checking Python Virtual Environment..."
# Python 3.12 사용 (3.13은 SQLAlchemy와 호환성 문제)
SYSTEM_PYTHON="/opt/homebrew/bin/python3.12"
if [ ! -d ".venv" ]; then
echo "${YELLOW}Creating Python virtual environment...${NC}"
$SYSTEM_PYTHON -m venv .venv
echo "${GREEN}✓ Virtual environment created${NC}"
else
echo "${GREEN}✓ Virtual environment found${NC}"
fi
PYTHON_CMD="$PROJECT_ROOT/.venv/bin/python"
PIP_CMD="$PROJECT_ROOT/.venv/bin/pip"
# 2. Backend 의존성 확인
echo ""
echo "📦 [2/5] Checking Backend Dependencies..."
cd "$PROJECT_ROOT/backend"
if [ -f "requirements.txt" ]; then
$PIP_CMD install -q -r requirements.txt
echo "${GREEN}✓ Backend dependencies installed${NC}"
fi
# 3. MCP Server 의존성 확인
echo ""
echo "📦 [3/5] Checking MCP Server Dependencies..."
cd "$PROJECT_ROOT/mcp-server"
if [ -f "requirements.txt" ]; then
$PIP_CMD install -q -r requirements.txt
echo "${GREEN}✓ MCP Server dependencies installed${NC}"
fi
# 4. Frontend 의존성 확인
echo ""
echo "📦 [4/5] Checking Frontend Dependencies..."
cd "$PROJECT_ROOT/frontend"
if [ ! -d "node_modules" ]; then
echo "${YELLOW}Installing frontend dependencies...${NC}"
npm install
echo "${GREEN}✓ Frontend dependencies installed${NC}"
else
echo "${GREEN}✓ Frontend dependencies already installed${NC}"
fi
# 5. 서비스 시작
echo ""
echo "🚀 [5/5] Starting Services..."
echo ""
# Backend 시작
echo " └─ Starting Backend Server (Port 8000)..."
cd "$PROJECT_ROOT/backend"
nohup $PYTHON_CMD -m uvicorn app.main:app --host 0.0.0.0 --port 8000 > "$PROJECT_ROOT/logs/backend.log" 2>&1 &
BACKEND_PID=$!
echo " PID: $BACKEND_PID"
sleep 2
# Backend 상태 확인
if curl -s http://localhost:8000/health > /dev/null 2>&1; then
echo " ${GREEN}✓ Backend Server is running${NC}"
else
echo " ${RED}✗ Backend Server failed to start${NC}"
fi
# MCP Server 시작
echo ""
echo " └─ Starting MCP Server (Port 8001)..."
cd "$PROJECT_ROOT/mcp-server"
nohup $PYTHON_CMD main.py > "$PROJECT_ROOT/logs/mcp-server.log" 2>&1 &
MCP_PID=$!
echo " PID: $MCP_PID"
sleep 2
# MCP Server 상태 확인
if curl -s http://localhost:8001/ > /dev/null 2>&1; then
echo " ${GREEN}✓ MCP Server is running${NC}"
else
echo " ${RED}✗ MCP Server failed to start${NC}"
fi
# Frontend 시작
echo ""
echo " └─ Starting Frontend Dev Server (Port 3000)..."
cd "$PROJECT_ROOT/frontend"
nohup npm run dev > "$PROJECT_ROOT/logs/frontend.log" 2>&1 &
FRONTEND_PID=$!
echo " PID: $FRONTEND_PID"
sleep 3
# Frontend 상태 확인
if curl -s http://localhost:3000 > /dev/null 2>&1; then
echo " ${GREEN}✓ Frontend Dev Server is running${NC}"
else
echo " ${YELLOW}⚠ Frontend Dev Server may take a moment to start${NC}"
fi
# PID 파일 저장
echo "$BACKEND_PID" > "$PROJECT_ROOT/logs/backend.pid"
echo "$MCP_PID" > "$PROJECT_ROOT/logs/mcp-server.pid"
echo "$FRONTEND_PID" > "$PROJECT_ROOT/logs/frontend.pid"
echo ""
echo "================================================"
echo " ${GREEN}All Services Started Successfully!${NC}"
echo "================================================"
echo ""
echo "📋 Service Status:"
echo " • Backend API: http://localhost:8000"
echo " • MCP Server: http://localhost:8001"
echo " • Frontend UI: http://localhost:3000"
echo ""
echo "📝 Log Files:"
echo " • Backend: logs/backend.log"
echo " • MCP Server: logs/mcp-server.log"
echo " • Frontend: logs/frontend.log"
echo ""
echo "🛑 To stop all services, run: ./stop-all.sh"
echo ""