feat: Add review events persistence, version display, and auto-versioning system

This commit is contained in:
Primakov Alexandr Alexandrovich
2025-10-13 14:18:37 +03:00
parent cfba28f913
commit 2db1225618
56 changed files with 750 additions and 436 deletions
+369
View File
@@ -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 в разработке
- 📚 Документация
**Запускайте и наслаждайтесь!** 🎉