code-review-agent/README.md
Primakov Alexandr Alexandrovich 09cdd06307 init
2025-10-12 23:15:09 +03:00

300 lines
8.9 KiB
Markdown
Raw 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 Agent 🤖
AI агент для автоматического ревью Pull Request с поддержкой **Gitea**, **GitHub** и **Bitbucket**.
Работает на **LangChain/LangGraph** с локальной LLM через **Ollama**.
## 🌟 Особенности
-**Поддержка множества Git платформ**: Gitea (приоритет), GitHub, Bitbucket
- 🤖 **AI-анализ кода**: использует Ollama с моделью codellama
- 🔄 **Real-time обновления**: WebSocket для отслеживания прогресса
- 🎯 **Умный анализ**: находит баги, проблемы безопасности, нарушения best practices
- 🌐 **Современный UI**: React + TypeScript + Tailwind CSS
- 📊 **Дашборд**: статистика и мониторинг ревью
- 🪝 **Webhook интеграция**: автоматический запуск при создании/обновлении PR
## 🏗️ Архитектура
```
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Git Platform│─────▶│ Backend │─────▶│ Ollama │
│ (Webhook) │ │ FastAPI + │ │ (codellama)│
└─────────────┘ │ LangGraph │ └─────────────┘
└──────┬───────┘
┌──────────────┐
│ Frontend │
│ React + WS │
└──────────────┘
```
## 📋 Требования
- **Python 3.11+**
- **Node.js 18+**
- **Ollama** (установлен и запущен)
## 🚀 Быстрый старт
### 1. Установка Ollama и модели
```bash
# Установите Ollama с https://ollama.ai/
# Загрузите модель codellama
ollama pull codellama
# Запустите Ollama
ollama serve
```
### 2. Backend (FastAPI)
```bash
cd backend
# Создайте виртуальное окружение
python -m venv venv
source venv/bin/activate # На Windows: venv\Scripts\activate
# Установите зависимости
pip install -r requirements.txt
# Создайте .env файл
cp .env.example .env
# Отредактируйте .env и установите:
# - SECRET_KEY (генерируйте случайную строку)
# - ENCRYPTION_KEY (генерируйте случайную строку)
# Запустите сервер
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
Backend будет доступен на `http://localhost:8000`
Swagger документация: `http://localhost:8000/docs`
### 3. Frontend (React)
```bash
cd frontend
# Установите зависимости
npm install
# Запустите dev сервер
npm run dev
```
Frontend будет доступен на `http://localhost:5173`
## 🔧 Настройка
### Backend (.env)
```env
# Ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=codellama
# Database
DATABASE_URL=sqlite+aiosqlite:///./review.db
# Security
SECRET_KEY=your-secret-key-here
ENCRYPTION_KEY=your-encryption-key-here
# Server
HOST=0.0.0.0
PORT=8000
DEBUG=True
# CORS
CORS_ORIGINS=http://localhost:5173,http://localhost:3000
```
### Frontend (.env)
```env
VITE_API_URL=http://localhost:8000
VITE_WS_URL=ws://localhost:8000
```
## 📖 Использование
### 1. Добавление репозитория
1. Откройте UI: `http://localhost:5173`
2. Перейдите на страницу **Репозитории**
3. Нажмите **+ Добавить репозиторий**
4. Заполните форму:
- **Название**: имя вашего проекта
- **Платформа**: Gitea / GitHub / Bitbucket
- **URL**: полный URL репозитория
- **API токен**: токен доступа к Git платформе
### 2. Настройка webhook в Gitea
1. Скопируйте **Webhook URL** из карточки репозитория
2. В Gitea: Settings → Webhooks → Add Webhook
3. Вставьте URL
4. Выберите события: **Pull Request**
5. Сохраните
### 3. Создание Pull Request
1. Создайте PR в вашем репозитории
2. Webhook автоматически запустит ревью
3. Следите за прогрессом в UI (страница **Ревью**)
4. Комментарии появятся в PR автоматически
## 🎯 Что анализирует AI
- 🐛 **Потенциальные баги**: логические ошибки, null/undefined
- 🔒 **Безопасность**: SQL injection, XSS, утечки данных
- 📝 **Best practices**: SOLID, чистый код, паттерны
-**Производительность**: неэффективные алгоритмы, утечки памяти
- 📖 **Читаемость**: понятность кода, комментарии
## 📊 API Endpoints
### Repositories
- `GET /api/repositories` - список репозиториев
- `POST /api/repositories` - добавить репозиторий
- `PUT /api/repositories/{id}` - обновить
- `DELETE /api/repositories/{id}` - удалить
### Reviews
- `GET /api/reviews` - список ревью
- `GET /api/reviews/{id}` - детали ревью
- `POST /api/reviews/{id}/retry` - повторить ревью
- `GET /api/reviews/stats/dashboard` - статистика
### Webhooks
- `POST /api/webhooks/gitea/{repository_id}` - Gitea webhook
- `POST /api/webhooks/github/{repository_id}` - GitHub webhook
- `POST /api/webhooks/bitbucket/{repository_id}` - Bitbucket webhook
### WebSocket
- `ws://localhost:8000/ws/reviews` - real-time обновления
## 🛠️ Разработка
### Backend
```bash
cd backend
# Запуск с hot reload
uvicorn app.main:app --reload
# Миграции (если используется Alembic)
alembic upgrade head
```
### Frontend
```bash
cd frontend
# Dev сервер
npm run dev
# Сборка
npm run build
# Предпросмотр сборки
npm run preview
# Линтинг
npm run lint
```
## 🗂️ Структура проекта
```
platform/review/
├── backend/
│ ├── app/
│ │ ├── agents/ # LangGraph агенты
│ │ ├── api/ # API endpoints
│ │ ├── models/ # Database модели
│ │ ├── schemas/ # Pydantic схемы
│ │ ├── services/ # Git платформы
│ │ ├── webhooks/ # Webhook обработчики
│ │ ├── config.py
│ │ ├── database.py
│ │ └── main.py
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── api/ # API клиент
│ │ ├── components/ # React компоненты
│ │ ├── pages/ # Страницы
│ │ ├── types/ # TypeScript типы
│ │ └── App.tsx
│ └── package.json
├── cloud.md # План проекта
└── README.md # Этот файл
```
## 🔐 Безопасность
- API токены шифруются перед сохранением (Fernet)
- Webhook signature validation
- CORS настроен для конкретных доменов
- Rate limiting (рекомендуется для production)
## 🚀 Production развертывание
### Docker (рекомендуется)
```bash
# TODO: Добавить Dockerfile и docker-compose.yml
```
### Manual
1. Используйте PostgreSQL вместо SQLite
2. Настройте reverse proxy (nginx)
3. Используйте HTTPS
4. Настройте environment variables
5. Используйте process manager (systemd/supervisor)
## 🤝 Вклад в разработку
Contributions welcome!
1. Fork проект
2. Создайте feature branch
3. Commit изменения
4. Push в branch
5. Создайте Pull Request
## 📝 Лицензия
MIT License
## 🙏 Благодарности
- [LangChain](https://github.com/langchain-ai/langchain) - фреймворк для LLM
- [Ollama](https://ollama.ai/) - локальный запуск LLM
- [FastAPI](https://fastapi.tiangolo.com/) - веб-фреймворк
- [React](https://react.dev/) - UI библиотека
## 📞 Поддержка
Возникли проблемы? Создайте Issue в репозитории.
---
Made with ❤️ and 🤖 AI