AI Review Backend
FastAPI backend для AI Code Review Agent с поддержкой LangGraph и Ollama.
Установка
# Создайте виртуальное окружение
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Установите зависимости
pip install -r requirements.txt
Настройка
Создайте .env файл из примера:
cp .env.example .env
Отредактируйте .env:
# Ollama - убедитесь что 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
Запуск
# Запуск сервера
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# Или через Python
python -m app.main
API будет доступен на http://localhost:8000
Swagger документация: http://localhost:8000/docs
Структура
app/
├── agents/ # LangGraph агенты
│ ├── reviewer.py # Основной агент
│ ├── prompts.py # Промпты для LLM
│ └── tools.py # Инструменты агента
├── api/ # FastAPI endpoints
│ ├── repositories.py
│ ├── reviews.py
│ └── webhooks.py
├── models/ # SQLAlchemy модели
│ ├── repository.py
│ ├── pull_request.py
│ ├── review.py
│ └── comment.py
├── schemas/ # Pydantic схемы
├── services/ # Git платформы (Gitea, GitHub, Bitbucket)
├── webhooks/ # Webhook обработчики
├── config.py # Конфигурация
├── database.py # Database setup
└── main.py # FastAPI приложение
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/{repo_id}POST /api/webhooks/github/{repo_id}POST /api/webhooks/bitbucket/{repo_id}
WebSocket
ws://localhost:8000/ws/reviews- real-time
Разработка
Тестирование API
# Используйте Swagger UI
open http://localhost:8000/docs
# Или curl
curl http://localhost:8000/health
База данных
База данных создается автоматически при первом запуске (SQLite).
Для production рекомендуется PostgreSQL:
DATABASE_URL=postgresql+asyncpg://user:pass@localhost/dbname
Зависимости
Основные пакеты:
fastapi- веб-фреймворкsqlalchemy- ORMlangchain- LLM фреймворкlanggraph- граф агентовhttpx- HTTP клиентcryptography- шифрование
См. requirements.txt для полного списка.