# Архитектура AI Code Review Agent ## Общая схема ``` ┌─────────────────────────────────────────────────────────────┐ │ User │ └───────────────────────────┬─────────────────────────────────┘ │ ▼ ┌────────────────┐ │ Frontend │ │ React + WS │ └────────┬───────┘ │ ▼ ┌────────────────┐ │ FastAPI │ │ Backend │ └────┬───┬───┬───┘ │ │ │ ┌───────────────┘ │ └───────────────┐ ▼ ▼ ▼ ┌───────────────┐ ┌────────────────┐ ┌───────────────┐ │ Git Platform │ │ LangGraph │ │ Database │ │ (Webhook) │ │ Agent │ │ SQLite │ └───────────────┘ └────────┬───────┘ └───────────────┘ │ ▼ ┌────────────────┐ │ Ollama │ │ (codellama) │ └────────────────┘ ``` ## Backend архитектура ### 1. FastAPI Layer **Отвечает за:** - HTTP endpoints - WebSocket connections - CORS и middleware - Request validation **Компоненты:** - `app/main.py` - главное приложение - `app/api/` - REST endpoints - `app/database.py` - DB session management ### 2. Agent Layer (LangGraph) **Отвечает за:** - Workflow управление - Анализ кода через LLM - Генерация комментариев **Компоненты:** - `app/agents/reviewer.py` - главный агент - `app/agents/tools.py` - инструменты (анализ кода) - `app/agents/prompts.py` - промпты для LLM **Граф агента:** ``` START │ ├─► fetch_pr_info (получение PR) │ ├─► fetch_files (список файлов) │ ├─► analyze_files (анализ через Ollama) │ ├─► post_comments (отправка комментариев) │ └─► complete_review (завершение) │ END ``` ### 3. Service Layer **Отвечает за:** - Интеграция с Git платформами - API запросы к Gitea/GitHub/Bitbucket **Компоненты:** - `app/services/base.py` - базовый класс - `app/services/gitea.py` - Gitea API - `app/services/github.py` - GitHub API - `app/services/bitbucket.py` - Bitbucket API ### 4. Data Layer **Отвечает за:** - Хранение данных - ORM операции **Модели:** - `Repository` - репозитории - `PullRequest` - PR - `Review` - ревью - `Comment` - комментарии ## Frontend архитектура ### 1. Router Layer **React Router для навигации:** - `/` - Dashboard - `/repositories` - управление репозиториями - `/reviews` - список ревью - `/reviews/:id` - детали ревью ### 2. State Management **TanStack Query для сервер-стейта:** - Кеширование данных - Auto-refetch - Optimistic updates ### 3. WebSocket Layer **Real-time обновления:** - Singleton WebSocket клиент - Event-based подписки - Auto-reconnect ### 4. UI Components **Переиспользуемые компоненты:** - `RepositoryForm` - форма добавления - `ReviewProgress` - прогресс бар - `CommentsList` - список комментариев - `WebSocketStatus` - статус подключения ## Поток данных ### Webhook → Review flow ``` 1. Git Platform отправляет webhook POST /api/webhooks/{platform}/{repo_id} 2. Webhook handler создает Review - Сохраняет PR в DB - Создает Review запись - Запускает background task 3. Background task запускает LangGraph агент - Получает информацию о PR - Скачивает измененные файлы - Анализирует через Ollama - Генерирует комментарии 4. Agent сохраняет комментарии в DB 5. Agent отправляет комментарии в PR 6. WebSocket broadcast обновлений 7. Frontend обновляет UI ``` ## Безопасность ### 1. Encryption API токены шифруются перед сохранением (Fernet): ```python cipher = Fernet(key) encrypted = cipher.encrypt(token.encode()) ``` ### 2. Webhook Validation Каждый webhook проверяется по signature: ```python signature = hmac.new(secret, payload, hashlib.sha256) ``` ### 3. CORS Только разрешенные origins в `settings.cors_origins` ## Масштабирование ### Horizontal scaling 1. **Multiple workers** ```bash uvicorn app.main:app --workers 4 ``` 2. **Queue system** - Celery для background tasks - Redis для очередей 3. **Database** - Миграция на PostgreSQL - Connection pooling ### Vertical scaling - Увеличение ресурсов Ollama - Использование более мощных GPU - Оптимизация промптов ## Мониторинг ### Метрики - Количество ревью - Среднее время ревью - Количество комментариев - Ошибки ### Логи ```python import logging logger = logging.getLogger(__name__) logger.info("Review started", extra={"review_id": id}) ``` ## Deployment ### Development - SQLite - Local Ollama - Dev сервер ### Production - PostgreSQL - Redis - Nginx reverse proxy - Systemd services - HTTPS - Rate limiting ## Будущие улучшения 1. **Множественные LLM** - Поддержка OpenAI, Anthropic - Выбор модели на уровне репозитория 2. **Настраиваемые правила** - YAML конфиг с правилами - Custom промпты 3. **Кеширование** - Redis для результатов анализа - Избежание повторного анализа 4. **Metrics & Analytics** - Prometheus metrics - Grafana dashboards 5. **Notifications** - Email уведомления - Slack/Discord интеграция