- Updated `README.md` to include instructions for the new `redeploy-ubuntu.sh` script and added a link to the new `REDEPLOY_GUIDE.md`. - Created `REDEPLOY_GUIDE.md` detailing the redeployment process, including backup creation, code updates, and troubleshooting steps. - Introduced `redeploy-hint.md` for GitHub Actions automation example, outlining setup for automatic redeployment on push events. - Improved documentation structure for better navigation and clarity.
356 lines
9.0 KiB
Markdown
356 lines
9.0 KiB
Markdown
# 🤖 AI Code Review Platform
|
||
|
||
Автоматический ревьювер кода на базе AI для Gitea, GitHub и Bitbucket.
|
||
|
||
---
|
||
|
||
## 🚀 Быстрый старт
|
||
|
||
### Запуск одной командой:
|
||
|
||
**Windows:**
|
||
```bash
|
||
start.bat
|
||
```
|
||
|
||
**Linux/Mac:**
|
||
```bash
|
||
chmod +x start.sh
|
||
./start.sh
|
||
```
|
||
|
||
Это автоматически:
|
||
- ✅ Проверит зависимости
|
||
- ✅ Установит пакеты
|
||
- ✅ Соберет frontend
|
||
- ✅ Запустит сервер
|
||
|
||
**Готово!** Откройте http://localhost:8000
|
||
|
||
---
|
||
|
||
## 📋 Что делает платформа
|
||
|
||
1. **Получает Pull Request** через webhook
|
||
2. **Анализирует код** с помощью AI (Ollama)
|
||
3. **Находит проблемы:**
|
||
- ❌ Критичные ошибки (синтаксис, логика)
|
||
- ⚠️ Важные замечания (code smell, антипаттерны)
|
||
- ℹ️ Рекомендации (стиль, best practices)
|
||
4. **Публикует комментарии** в PR
|
||
|
||
---
|
||
|
||
## 🎯 Особенности
|
||
|
||
- ✅ **3 платформы:** Gitea, GitHub, Bitbucket
|
||
- ✅ **Webhooks:** Автоматический ревью при создании PR
|
||
- ✅ **Ручной запуск:** Кнопка "Проверить сейчас"
|
||
- ✅ **WebSocket:** Обновления в реальном времени
|
||
- ✅ **Детальные комментарии:** Отдельный комментарий на каждую проблему
|
||
- ✅ **Мастер токены:** Один токен для всех репозиториев
|
||
- ✅ **Единый порт:** Frontend и Backend на 8000
|
||
|
||
---
|
||
|
||
## 🛠️ Требования
|
||
|
||
- **Python:** 3.10+
|
||
- **Node.js:** 18+
|
||
- **Ollama:** Для запуска AI моделей
|
||
|
||
### Установка Ollama:
|
||
|
||
**Linux:**
|
||
```bash
|
||
curl -fsSL https://ollama.com/install.sh | sh
|
||
```
|
||
|
||
**Windows/Mac:**
|
||
Скачайте с https://ollama.com/download
|
||
|
||
### Скачайте модель:
|
||
|
||
```bash
|
||
ollama pull mistral:7b
|
||
# или
|
||
ollama pull llama3:8b
|
||
```
|
||
|
||
---
|
||
|
||
## ⚙️ Настройка
|
||
|
||
### 1. Клонируйте репозиторий
|
||
|
||
```bash
|
||
git clone <repository-url>
|
||
cd platform/review
|
||
```
|
||
|
||
### 2. Настройте `.env`
|
||
|
||
Файл `backend/.env` будет создан автоматически из `.env.example`.
|
||
|
||
**Обязательно настройте:**
|
||
|
||
```bash
|
||
# Ollama
|
||
OLLAMA_BASE_URL=http://localhost:11434
|
||
OLLAMA_MODEL=mistral:7b
|
||
|
||
# Мастер токены (опционально)
|
||
MASTER_GITEA_TOKEN=your_token_here
|
||
|
||
# Ключ шифрования (обязательно!)
|
||
ENCRYPTION_KEY=your-32-char-key-here
|
||
```
|
||
|
||
**Генерация ключа:**
|
||
```python
|
||
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
|
||
```
|
||
|
||
### 3. Запустите
|
||
|
||
```bash
|
||
./start.sh # Linux/Mac
|
||
start.bat # Windows
|
||
```
|
||
|
||
---
|
||
|
||
## 📖 Использование
|
||
|
||
### 1. Добавьте репозиторий
|
||
|
||
http://localhost:8000 → **"Добавить репозиторий"**
|
||
|
||
- **Платформа:** Gitea/GitHub/Bitbucket
|
||
- **URL:** https://git.example.com/owner/repo
|
||
- **API Token:** (или оставьте пустым для мастер токена)
|
||
|
||
### 2. Настройте webhook
|
||
|
||
Скопируйте webhook URL из списка репозиториев.
|
||
|
||
**В Gitea:**
|
||
Settings → Webhooks → Add Webhook → Gitea
|
||
- Payload URL: `http://your-server:8000/api/webhooks/gitea/1`
|
||
- Content Type: `application/json`
|
||
- Secret: (из списка репозиториев)
|
||
- Trigger: Pull Request
|
||
|
||
### 3. Готово!
|
||
|
||
Создайте PR и агент автоматически проведет ревью! 🎉
|
||
|
||
Или нажмите **"🔍 Проверить сейчас"** для ручного запуска.
|
||
|
||
---
|
||
|
||
## 📊 Что вы увидите
|
||
|
||
### В интерфейсе:
|
||
|
||
```
|
||
📊 Репозитории: 5
|
||
🔍 Ревью: 23
|
||
✅ Успешных: 20
|
||
❌ Ошибок: 3
|
||
```
|
||
|
||
### В Gitea/GitHub:
|
||
|
||
**Общий комментарий:**
|
||
```
|
||
🤖 AI Code Review
|
||
|
||
📊 Статистика
|
||
- Всего проблем: 4
|
||
- ❌ Критичных: 4
|
||
|
||
💡 Рекомендации
|
||
⚠️ Найдены критичные проблемы!
|
||
Пожалуйста, исправьте их перед мержем.
|
||
|
||
📝 Детальные комментарии для каждой
|
||
проблемы опубликованы ниже.
|
||
```
|
||
|
||
**Отдельные комментарии:**
|
||
```
|
||
❌ src/pages/search-character.tsx:58
|
||
|
||
ERROR: Опечатка в строке:
|
||
'shmapplication/json' должно быть
|
||
'application/json'
|
||
```
|
||
|
||
---
|
||
|
||
## 🐧 Production (Ubuntu/Debian)
|
||
|
||
### Автоматическое развертывание с systemd:
|
||
|
||
```bash
|
||
# Первичная установка
|
||
sudo ./deploy-ubuntu.sh
|
||
|
||
# Обновление после изменений
|
||
sudo ./redeploy-ubuntu.sh
|
||
```
|
||
|
||
Это настроит:
|
||
- ✅ Systemd service (автозапуск)
|
||
- ✅ Логирование в `/var/log/ai-review/`
|
||
- ✅ Nginx reverse proxy (опционально)
|
||
- ✅ SSL с Let's Encrypt (опционально)
|
||
- ✅ Автоматическое обновление с backup
|
||
|
||
**Подробнее:** [UBUNTU_DEPLOYMENT.md](UBUNTU_DEPLOYMENT.md) | [REDEPLOY_GUIDE.md](REDEPLOY_GUIDE.md)
|
||
|
||
---
|
||
|
||
## 🔧 Разработка
|
||
|
||
### Backend:
|
||
```bash
|
||
cd backend
|
||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
uvicorn app.main:app --reload
|
||
```
|
||
|
||
### Frontend:
|
||
```bash
|
||
cd frontend
|
||
npm run dev
|
||
```
|
||
|
||
В режиме разработки:
|
||
- Frontend: http://localhost:5173
|
||
- Backend: http://localhost:8000
|
||
|
||
---
|
||
|
||
## 📁 Структура
|
||
|
||
```
|
||
platform/review/
|
||
├── backend/ # FastAPI + LangGraph
|
||
│ ├── app/
|
||
│ │ ├── agents/ # AI агент
|
||
│ │ ├── api/ # REST endpoints
|
||
│ │ ├── models/ # SQLAlchemy models
|
||
│ │ ├── services/ # Git API clients
|
||
│ │ └── main.py # Entry point
|
||
│ ├── public/ # Frontend build (auto-generated)
|
||
│ └── requirements.txt
|
||
├── frontend/ # React + Vite
|
||
│ ├── src/
|
||
│ └── package.json
|
||
├── start.sh # Единый запуск (Linux/Mac)
|
||
├── start.bat # Единый запуск (Windows)
|
||
└── DEPLOYMENT.md # Подробная документация
|
||
```
|
||
|
||
---
|
||
|
||
## 🌟 Возможности
|
||
|
||
### ✅ Реализовано:
|
||
|
||
- [x] Поддержка Gitea, GitHub, Bitbucket
|
||
- [x] Webhooks для автоматического ревью
|
||
- [x] Ручной запуск ревью
|
||
- [x] Детальные комментарии с ссылками на строки
|
||
- [x] WebSocket для real-time обновлений
|
||
- [x] Мастер токены для упрощения настройки
|
||
- [x] Единый запуск (frontend + backend)
|
||
- [x] Экранирование HTML тегов в комментариях
|
||
- [x] Контекст PR (title + description) в промпте
|
||
- [x] Retry механизм для failed ревью
|
||
- [x] Модальные окна вместо alert/confirm
|
||
|
||
### 🚧 Планируется:
|
||
|
||
- [ ] Docker контейнер
|
||
- [ ] Статусы PR (Approve/Request Changes)
|
||
- [ ] Настраиваемые правила ревью
|
||
- [ ] Кастомные промпты
|
||
- [ ] Множественные AI модели
|
||
- [ ] Метрики и аналитика
|
||
|
||
---
|
||
|
||
## 🤝 Вклад
|
||
|
||
Pull requests приветствуются!
|
||
|
||
Для больших изменений сначала откройте issue для обсуждения.
|
||
|
||
---
|
||
|
||
## 📄 Лицензия
|
||
|
||
MIT
|
||
|
||
---
|
||
|
||
## 📚 Документация
|
||
|
||
- **[ORGANIZATION_QUICKSTART.md](ORGANIZATION_QUICKSTART.md)** - 🚀 Быстрый старт с организациями
|
||
- **[DEPLOYMENT.md](DEPLOYMENT.md)** - Полное руководство по развертыванию
|
||
- **[UBUNTU_DEPLOYMENT.md](UBUNTU_DEPLOYMENT.md)** - Развертывание на Ubuntu/Debian
|
||
- **[REDEPLOY_GUIDE.md](REDEPLOY_GUIDE.md)** - 🔄 Обновление production сервера
|
||
- **[ARCHITECTURE.md](ARCHITECTURE.md)** - Архитектура проекта
|
||
- **[DEBUG_GUIDE.md](DEBUG_GUIDE.md)** - Отладка AI агента
|
||
- **[MODEL_RECOMMENDATION.md](MODEL_RECOMMENDATION.md)** - Рекомендации по моделям
|
||
- **[MASTER_TOKEN_FEATURE.md](MASTER_TOKEN_FEATURE.md)** - Мастер токены
|
||
|
||
---
|
||
|
||
## 🆘 Помощь
|
||
|
||
### Проблемы с Ollama?
|
||
|
||
```bash
|
||
# Проверьте что Ollama запущен
|
||
curl http://localhost:11434/api/version
|
||
|
||
# Скачайте модель
|
||
ollama pull mistral:7b
|
||
```
|
||
|
||
### Frontend не отображается?
|
||
|
||
```bash
|
||
cd frontend
|
||
npm run build
|
||
```
|
||
|
||
### Backend не запускается?
|
||
|
||
Проверьте `.env` файл и установите `ENCRYPTION_KEY`.
|
||
|
||
---
|
||
|
||
## 🎉 Начните использовать!
|
||
|
||
```bash
|
||
# 1. Клонируйте
|
||
git clone <url>
|
||
cd platform/review
|
||
|
||
# 2. Настройте .env
|
||
nano backend/.env
|
||
|
||
# 3. Запустите
|
||
./start.sh # или start.bat
|
||
|
||
# 4. Откройте
|
||
http://localhost:8000
|
||
```
|
||
|
||
**Готово!** 🚀
|