From 0e05143fd90941002c5ad02143c397ceb5a635f3 Mon Sep 17 00:00:00 2001 From: Damir Date: Tue, 7 Apr 2026 21:56:23 +0300 Subject: [PATCH] improve(start.sh): enhance cross-platform compatibility and reliability --- start.sh | 79 +++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 67 insertions(+), 12 deletions(-) diff --git a/start.sh b/start.sh index 76ae8bf..393d158 100644 --- a/start.sh +++ b/start.sh @@ -14,17 +14,25 @@ command_exists() { } # Определение команды Python -PYTHON_CMD="python3" -if ! command_exists python3; then - if command_exists py; then - PYTHON_CMD="py" - else - echo "❌ Python не найден. Установите Python 3.8+" - exit 1 - fi +PYTHON_CMD="" +if command_exists python3; then + PYTHON_CMD="python3" +elif command_exists py; then + PYTHON_CMD="py" +elif command_exists python; then + PYTHON_CMD="python" +else + echo "❌ Python не найден. Установите Python 3.8+" + exit 1 fi echo "✓ Python найден: $($PYTHON_CMD --version)" +# Проверка pip +if ! $PYTHON_CMD -m pip --version >/dev/null 2>&1; then + echo "❌ pip не найден. Установите pip" + exit 1 +fi + # Проверка Node.js if ! command_exists node; then echo "❌ Node.js не найден. Установите Node.js 18+" @@ -32,6 +40,13 @@ if ! command_exists node; then fi echo "✓ Node.js найден: $(node --version)" +# Проверка npm +if ! command_exists npm; then + echo "❌ npm не найден. Установите npm" + exit 1 +fi +echo "✓ npm найден: $(npm --version)" + # Создание и активация venv для бэкенда if [ ! -d "backend/venv" ]; then echo "📦 Создание виртуального окружения Python..." @@ -51,6 +66,7 @@ fi # Установка зависимостей Python echo "📦 Установка Python зависимостей..." +pip install --quiet --upgrade pip pip install --quiet -r backend/requirements.txt echo "✓ Python зависимости установлены" @@ -63,8 +79,38 @@ fi echo "✓ Node.js зависимости установлены" cd .. -# Запуск бэкенда в фоне +# Определение порта для бэкенда +BACKEND_PORT=8000 +FRONTEND_PORT=3000 + +# Проверка и освобождение портов (опционально) +if command_exists lsof; then + if lsof -i :$BACKEND_PORT >/dev/null 2>&1; then + echo "⚠️ Порт $BACKEND_PORT уже занят,Attempting to kill process..." + lsof -ti :$BACKEND_PORT | xargs kill -9 2>/dev/null || true + sleep 1 + fi + if lsof -i :$FRONTEND_PORT >/dev/null 2>&1; then + echo "⚠️ Порт $FRONTEND_PORT уже занят, attempting to kill process..." + lsof -ti :$FRONTEND_PORT | xargs kill -9 2>/dev/null || true + sleep 1 + fi +fi + +# Удаление старой базы данных для чистого запуска (опционально) +if [ -f "backend/team_status.db" ]; then + echo "🗑️ Найдена существующая база данных, будет создана новая..." + rm backend/team_status.db +fi + +echo "" +echo "=========================================" echo "🔙 Запуск бэкенда (FastAPI)..." +echo "🎨 Запуск фронтенда (React + Vite)..." +echo "=========================================" +echo "" + +# Запуск бэкенда в фоне cd backend $PYTHON_CMD main.py & BACKEND_PID=$! @@ -74,8 +120,16 @@ cd .. echo "⏳ Ожидание запуска бэкенда..." sleep 3 +# Проверка работоспособности бэкенда +if command_exists curl; then + if curl -s http://localhost:$BACKEND_PORT/api/employees >/dev/null 2>&1; then + echo "✓ Бэкенд запущен успешно" + else + echo "⚠️ Бэкенд может быть недоступен, проверьте логи" + fi +fi + # Запуск фронтенда -echo "🎨 Запуск фронтенда (React + Vite)..." cd frontend npm run dev & FRONTEND_PID=$! @@ -85,8 +139,9 @@ echo "" echo "=========================================" echo "✅ Приложение запущено!" echo "" -echo "Бэкенд API: http://localhost:8000" -echo "Frontend: http://localhost:3000" +echo "🌐 Фронтенд: http://localhost:$FRONTEND_PORT" +echo "🔌 Бэкенд API: http://localhost:$BACKEND_PORT" +echo "📚 API Docs: http://localhost:$BACKEND_PORT/docs" echo "" echo "PID бэкенда: $BACKEND_PID" echo "PID фронтенда: $FRONTEND_PID"