#!/bin/bash

echo "============================================"
echo "WACE 솔루션 - 전체 서비스 시작 (분리형) - Linux"
echo "============================================"

echo ""
echo "🔄 최신 코드 가져오기..."
echo ""
git pull origin main || {
    echo "❌ Git pull 실패. 계속 진행합니다..."
}

echo ""
echo "🚀 백엔드와 프론트엔드를 순차적으로 시작합니다..."
echo ""

# 시스템 정보 출력
echo "시스템 정보:"
echo "  OS: $(uname -s)"
echo "  Architecture: $(uname -m)"
echo "  Kernel: $(uname -r)"
echo ""

# Docker 및 Docker Compose 버전 확인
echo "Docker 환경 확인:"
docker --version 2>/dev/null || echo "  ❌ Docker가 설치되지 않았습니다."
docker-compose --version 2>/dev/null || echo "  ❌ Docker Compose가 설치되지 않았습니다."
echo ""

# 기존 컨테이너 정리
echo "============================================"
echo "0. 기존 서비스 정리 중..."
echo "============================================"

# 기존 컨테이너 중지 및 제거 (무시하고 계속)
docker-compose -f docker/prod/docker-compose.backend.prod.yml down -v 2>/dev/null || true
docker-compose -f docker/prod/docker-compose.frontend.prod.yml down -v 2>/dev/null || true

# 사용하지 않는 이미지 정리
echo "사용하지 않는 Docker 이미지 정리 중..."
docker image prune -f 2>/dev/null || true

# 백엔드 먼저 시작
echo ""
echo "============================================"
echo "1. 백엔드 서비스 시작 중..."
echo "============================================"

# 네트워크 생성 (존재하지 않는 경우)
docker network create pms-network 2>/dev/null || echo "네트워크가 이미 존재합니다."

# 백엔드 빌드 및 시작
echo "백엔드 이미지 빌드 중..."
docker-compose -f docker/prod/docker-compose.backend.prod.yml build --no-cache

echo "백엔드 서비스 시작 중..."
docker-compose -f docker/prod/docker-compose.backend.prod.yml up -d

echo ""
echo "⏳ 백엔드 서비스 안정화 대기 중... (30초)"
sleep 30

# 백엔드 상태 확인
echo "백엔드 서비스 상태 확인:"
docker-compose -f docker/prod/docker-compose.backend.prod.yml ps

# 프론트엔드 시작
echo ""
echo "============================================"
echo "2. 프론트엔드 서비스 시작 중..."
echo "============================================"

echo "프론트엔드 이미지 빌드 중..."
docker-compose -f docker/prod/docker-compose.frontend.prod.yml build --no-cache

echo "프론트엔드 서비스 시작 중..."
docker-compose -f docker/prod/docker-compose.frontend.prod.yml up -d

echo ""
echo "⏳ 프론트엔드 서비스 안정화 대기 중... (15초)"
sleep 15

# 프론트엔드 상태 확인
echo "프론트엔드 서비스 상태 확인:"
docker-compose -f docker/prod/docker-compose.frontend.prod.yml ps

echo ""
echo "============================================"
echo "🎉 모든 서비스가 시작되었습니다!"
echo "============================================"
echo ""
echo "📊 서비스 접속 정보:"
echo "  [DATABASE]  PostgreSQL: http://39.117.244.52:11132"
echo "  [BACKEND]   API: https://api.vexplor.com"
echo "  [FRONTEND]  Web: https://v1.vexplor.com"
echo "  [BACKEND LOCAL]   http://localhost:3001/api"
echo "  [FRONTEND LOCAL]  http://localhost:3000"
echo ""
echo "🔧 관리 명령어:"
echo "  서비스 상태 확인:"
echo "    백엔드:     docker-compose -f docker/prod/docker-compose.backend.prod.yml ps"
echo "    프론트엔드:   docker-compose -f docker/prod/docker-compose.frontend.prod.yml ps"
echo "    전체:       docker ps"
echo ""
echo "  로그 확인:"
echo "    백엔드:     docker-compose -f docker/prod/docker-compose.backend.prod.yml logs -f"
echo "    프론트엔드:   docker-compose -f docker/prod/docker-compose.frontend.prod.yml logs -f"
echo "    실시간:     docker-compose -f docker/prod/docker-compose.backend.prod.yml -f docker-compose.frontend.linux.yml logs -f"
echo ""
echo "  서비스 중지:"
echo "    백엔드:     docker-compose -f docker/prod/docker-compose.backend.prod.yml down"
echo "    프론트엔드:   docker-compose -f docker/prod/docker-compose.frontend.prod.yml down"
echo "    전체:       ./stop-all-linux.sh"
echo ""
echo "  시스템 모니터링:"
echo "    Docker 상태: docker system df"
echo "    리소스 사용: docker stats"
echo ""
echo "============================================"

# 서비스 헬스체크
echo ""
echo "🏥 서비스 헬스체크 수행 중..."
echo ""

# 백엔드 헬스체크 (최대 60초 대기)
echo "백엔드 헬스체크..."
backend_healthy=false
for i in {1..12}; do
    if curl -s http://localhost:3001/health >/dev/null 2>&1; then
        echo "  ✅ 백엔드 서비스 정상"
        backend_healthy=true
        break
    else
        echo "  ⏳ 백엔드 응답 대기 중... ($i/12)"
        if [ $i -eq 6 ]; then
            echo "  📋 백엔드 컨테이너 상태 확인:"
            docker-compose -f docker/prod/docker-compose.backend.prod.yml ps
            echo "  📋 백엔드 로그 (최근 10줄):"
            docker-compose -f docker/prod/docker-compose.backend.prod.yml logs --tail=10
        fi
        sleep 5
    fi
done

if [ "$backend_healthy" = false ]; then
    echo "  ❌ 백엔드 헬스체크 실패"
    echo "  📋 상세 진단 정보:"
    echo "    컨테이너 상태:"
    docker-compose -f docker/prod/docker-compose.backend.prod.yml ps
    echo "    최근 로그:"
    docker-compose -f docker/prod/docker-compose.backend.prod.yml logs --tail=20
    echo "    포트 3001 사용 현황:"
    netstat -tln 2>/dev/null | grep ':3001' || echo "    포트 3001이 사용되지 않음"
fi

# 프론트엔드 헬스체크 (최대 30초 대기)
echo "프론트엔드 헬스체크..."
for i in {1..6}; do
    if curl -s http://localhost:3000 >/dev/null 2>&1; then
        echo "  ✅ 프론트엔드 서비스 정상"
        break
    else
        echo "  ⏳ 프론트엔드 응답 대기 중... ($i/6)"
        sleep 5
    fi
done

echo ""
echo "🎯 시작 완료!"
echo "   브라우저에서 https://v1.vexplor.com 을 확인하세요."
echo "   (로컬: http://localhost:3000)"
echo ""

read -p "계속하려면 Enter 키를 누르세요..." 