This commit is contained in:
Primakov Alexandr Alexandrovich
2025-10-12 23:15:09 +03:00
commit 09cdd06307
88 changed files with 15007 additions and 0 deletions
+299
View File
@@ -0,0 +1,299 @@
# 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