142 lines
3.5 KiB
Markdown
142 lines
3.5 KiB
Markdown
# AI Review Backend
|
||
|
||
FastAPI backend для AI Code Review Agent с поддержкой LangGraph и Ollama.
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
# Создайте виртуальное окружение
|
||
python -m venv venv
|
||
source venv/bin/activate # Windows: venv\Scripts\activate
|
||
|
||
# Установите зависимости
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## Настройка
|
||
|
||
Создайте `.env` файл из примера:
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
Отредактируйте `.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
|
||
```
|
||
|
||
## Запуск
|
||
|
||
```bash
|
||
# Запуск сервера
|
||
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
|
||
|
||
```bash
|
||
# Используйте Swagger UI
|
||
open http://localhost:8000/docs
|
||
|
||
# Или curl
|
||
curl http://localhost:8000/health
|
||
```
|
||
|
||
### База данных
|
||
|
||
База данных создается автоматически при первом запуске (SQLite).
|
||
|
||
Для production рекомендуется PostgreSQL:
|
||
|
||
```env
|
||
DATABASE_URL=postgresql+asyncpg://user:pass@localhost/dbname
|
||
```
|
||
|
||
## Зависимости
|
||
|
||
Основные пакеты:
|
||
- `fastapi` - веб-фреймворк
|
||
- `sqlalchemy` - ORM
|
||
- `langchain` - LLM фреймворк
|
||
- `langgraph` - граф агентов
|
||
- `httpx` - HTTP клиент
|
||
- `cryptography` - шифрование
|
||
|
||
См. `requirements.txt` для полного списка.
|
||
|