feat: Add review events persistence, version display, and auto-versioning system
This commit is contained in:
@@ -0,0 +1,369 @@
|
||||
# 🚀 Развертывание 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 в разработке
|
||||
- 📚 Документация
|
||||
|
||||
**Запускайте и наслаждайтесь!** 🎉
|
||||
|
||||
Reference in New Issue
Block a user