# 🚀 Развертывание AI Code Review Platform ## 📋 Быстрый старт ### Одна команда для запуска всего: **Linux/Mac:** ```bash ./start.sh ``` **Windows:** ```bash start.bat ``` Это автоматически: 1. ✅ Проверит установку Node.js и Python 2. ✅ Установит зависимости frontend 3. ✅ Соберет frontend в `backend/public` 4. ✅ Установит зависимости backend 5. ✅ Создаст `.env` из примера (если нужно) 6. ✅ Запустит сервер на http://localhost:8000 --- ## 🔧 Требования ### Системные требования: - **Python:** 3.10 или выше - **Node.js:** 18 или выше - **npm:** 9 или выше ### Проверка установленных версий: ```bash python --version # или python3 --version node --version npm --version ``` --- ## ⚙️ Настройка ### 1. Клонирование репозитория ```bash git clone cd platform/review ``` ### 2. Конфигурация Отредактируйте `backend/.env`: ```bash # Ollama Configuration OLLAMA_BASE_URL=http://localhost:11434 OLLAMA_MODEL=mistral:7b # Master Git Tokens (optional) MASTER_GITEA_TOKEN=your_gitea_token_here MASTER_GITHUB_TOKEN=your_github_token_here # Security ENCRYPTION_KEY=your-32-character-encryption-key ``` **Генерация ключа шифрования:** ```python python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" ``` ### 3. Запуск ```bash # Linux/Mac chmod +x start.sh ./start.sh # Windows start.bat ``` --- ## 🏗️ Архитектура развертывания ### Схема работы: ``` ┌─────────────────────────────────────────┐ │ Пользователь │ │ http://localhost:8000 │ └──────────────┬──────────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ FastAPI Backend │ │ │ │ ┌─────────────────────────────────┐ │ │ │ API Endpoints │ │ │ │ /api/repositories │ │ │ │ /api/reviews │ │ │ │ /api/webhooks │ │ │ └─────────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────┐ │ │ │ Static Files │ │ │ │ Serves: backend/public/ │ │ │ │ (React frontend build) │ │ │ └─────────────────────────────────┘ │ └─────────────────────────────────────────┘ │ ├─────────► SQLite DB │ ├─────────► Ollama (AI) │ └─────────► Git APIs (Gitea/GitHub/Bitbucket) ``` ### Как это работает: 1. **Frontend билдится** в `backend/public/` 2. **Backend раздает** статику из `backend/public/` 3. **Один порт** (8000) для всего 4. **API** доступно на `/api/*` 5. **Frontend** на `/` (все остальные роуты) --- ## 📁 Структура после сборки ``` platform/review/ ├── backend/ │ ├── public/ # ← Frontend build (создается автоматически) │ │ ├── index.html │ │ ├── assets/ │ │ │ ├── index-*.js │ │ │ └── index-*.css │ │ └── ... │ ├── app/ │ ├── venv/ │ ├── .env │ └── requirements.txt ├── frontend/ │ ├── src/ │ ├── package.json │ └── vite.config.ts # ← Настроен на build в ../backend/public ├── start.sh # ← Единый скрипт запуска (Linux/Mac) └── start.bat # ← Единый скрипт запуска (Windows) ``` --- ## 🔄 Процесс сборки ### Что происходит при запуске `start.sh` / `start.bat`: ```bash 1. Проверка Node.js ✓ → node --version 2. Проверка Python ✓ → python --version 3. Установка зависимостей frontend ✓ → cd frontend → npm install 4. Сборка frontend ✓ → npm run build → Вывод: backend/public/ 5. Установка зависимостей backend ✓ → cd backend → python -m venv venv → pip install -r requirements.txt 6. Проверка .env ✓ → Создание из .env.example если нужно 7. Запуск сервера ✓ → uvicorn app.main:app --reload ``` --- ## 🌐 Доступ к приложению После запуска доступно: - **Frontend (UI):** http://localhost:8000 - **API:** http://localhost:8000/api - **API Docs (Swagger):** http://localhost:8000/docs - **WebSocket:** ws://localhost:8000/ws --- ## 🛠️ Разработка ### Запуск в режиме разработки (с hot-reload): **Терминал 1 - Backend:** ```bash cd backend source venv/bin/activate # или venv\Scripts\activate на Windows uvicorn app.main:app --reload ``` **Терминал 2 - Frontend:** ```bash cd frontend npm run dev ``` В этом режиме: - Frontend: http://localhost:5173 - Backend: http://localhost:8000 - Frontend проксирует API запросы на backend ### Пересборка frontend: ```bash cd frontend npm run build ``` Frontend автоматически соберется в `backend/public/` --- ## 🐳 Docker (опционально) TODO: Добавить Dockerfile и docker-compose.yml --- ## 📊 Production Deployment ### Для продакшена рекомендуется: 1. **Использовать Gunicorn + Uvicorn:** ```bash cd backend gunicorn app.main:app \ --workers 4 \ --worker-class uvicorn.workers.UvicornWorker \ --bind 0.0.0.0:8000 ``` 2. **Nginx как reverse proxy:** ```nginx server { listen 80; server_name yourdomain.com; location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location /ws { proxy_pass http://localhost:8000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } ``` 3. **Systemd service:** ```ini [Unit] Description=AI Code Review Platform After=network.target [Service] Type=notify User=www-data WorkingDirectory=/path/to/platform/review/backend ExecStart=/path/to/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000 Restart=always [Install] WantedBy=multi-user.target ``` --- ## 🔧 Troubleshooting ### Проблема: Frontend не отображается **Решение:** ```bash cd frontend npm run build ``` ### Проблема: Backend не запускается **Проверьте:** 1. Установлен ли Python 3.10+ 2. Создано ли виртуальное окружение 3. Установлены ли зависимости 4. Корректен ли `.env` файл ### Проблема: Ollama недоступен **Убедитесь что:** ```bash # Ollama запущен ollama serve # Модель скачана ollama pull mistral:7b # Ollama доступен curl http://localhost:11434/api/version ``` ### Проблема: Ошибки шифрования токенов **Удалите БД и пересоздайте:** ```bash rm backend/review.db # Перезапустите сервер ``` --- ## 📝 Полезные команды ```bash # Проверка статуса ps aux | grep uvicorn # Просмотр логов tail -f backend/logs/app.log # если настроено логирование # Остановка сервера # Ctrl+C в терминале где запущен # Очистка rm -rf backend/public/ rm -rf frontend/node_modules/ rm -rf backend/venv/ ``` --- ## ✅ Готово! Теперь у вас есть: - 🚀 Единая команда запуска - 📦 Автоматическая сборка frontend - 🌐 Один порт для всего - 🔄 Hot-reload в разработке - 📚 Документация **Запускайте и наслаждайтесь!** 🎉