# 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