code-review-agent/DEPLOYMENT.md
Primakov Alexandr Alexandrovich b297bcbba9 Add deployment documentation and enhance project setup scripts
- Introduced `DEPLOYMENT.md` for comprehensive deployment instructions.
- Added `start.bat` and `start.sh` scripts for unified project startup on Windows and Linux/Mac.
- Updated `.gitignore` to exclude additional files and directories.
- Enhanced `main.py` to serve static frontend files and handle SPA routing.
- Configured Vite to output the frontend build to the backend public directory.
- Minor adjustments in `ReviewDetail.tsx` for improved data handling.
2025-10-12 23:27:41 +03:00

370 lines
9.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🚀 Развертывание 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 <repository-url>
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 в разработке
- 📚 Документация
**Запускайте и наслаждайтесь!** 🎉