- Introduced new models for `Organization` and `ReviewTask` to manage organizations and review tasks. - Implemented API endpoints for CRUD operations on organizations and tasks, including scanning organizations for repositories and PRs. - Developed a background worker for sequential processing of review tasks with priority handling and automatic retries. - Created frontend components for managing organizations and monitoring task queues, including real-time updates and filtering options. - Added comprehensive documentation for organization features and quick start guides. - Fixed UI issues and improved navigation for better user experience.
7.0 KiB
7.0 KiB
🚀 Быстрый старт: Организации и Очередь задач
📝 Что добавлено
- Организации - добавление целых организаций (Gitea/GitHub/Bitbucket)
- Автосканирование - поиск всех репозиториев и PR в организации
- Очередь задач - последовательная обработка review (по одному)
- Мониторинг - отслеживание состояния очереди и worker'а
⚡ Быстрый старт
1. Запустить проект
# Windows
start.bat
# Linux/Mac
./start.sh
2. Добавить организацию
- Открыть http://localhost:8000
- Перейти в раздел 🏢 Организации
- Нажать ➕ Добавить организацию
- Заполнить:
- Название:
inno-js - Платформа:
Gitea - Base URL:
https://git.bro-js.ru - API токен: (опционально, если не указан - используется master токен)
- Название:
- Нажать Создать
3. Сканировать организацию
- Найти добавленную организацию
- Нажать 🔍 Сканировать
- Подтвердить
Результат:
✅ Сканирование завершено!
📦 Репозиториев найдено: 15
➕ Репозиториев добавлено: 3
🔀 PR найдено: 8
📝 Задач создано: 8
4. Мониторинг очереди
- Перейти в раздел 📝 Очередь задач
- Увидите:
- 🚀 Worker активен - статус worker'а
- Статистика - всего/ожидает/выполняется/завершено/ошибок
- Список задач - каждая задача с PR и статусом
5. Наблюдать за работой
Worker автоматически:
- Берет следующую задачу из очереди
- Запускает AI review для PR
- Публикует комментарии
- Переходит к следующей задаче
Важно: Обрабатывается только 1 задача одновременно! ⚡
🔧 Настройка master токенов
Если не хотите указывать токен для каждой организации:
backend/.env
# Master tokens (опциональные)
MASTER_GITEA_TOKEN=your_gitea_token_here
MASTER_GITHUB_TOKEN=your_github_token_here
MASTER_BITBUCKET_TOKEN=your_bitbucket_token_here
При создании организации просто оставьте поле "API токен" пустым.
📊 API Endpoints
Организации
# Получить список
GET /api/organizations
# Создать
POST /api/organizations
{
"name": "inno-js",
"platform": "gitea",
"base_url": "https://git.bro-js.ru",
"api_token": "optional_token"
}
# Сканировать
POST /api/organizations/{id}/scan
Очередь задач
# Получить список задач
GET /api/tasks
GET /api/tasks?status=pending
# Статус worker'а
GET /api/tasks/worker/status
# Повторить задачу
POST /api/tasks/{id}/retry
# Удалить задачу
DELETE /api/tasks/{id}
🎯 Как это работает
1. Сканирование организации
1. Fetch /orgs/{name}/repos → Получить все репозитории
2. For each repo:
- Проверить существует ли в БД
- Если нет → добавить
- Fetch /repos/{owner}/{repo}/pulls?state=open
- For each PR:
- Проверить существует ли в БД
- Если нет → добавить
- Создать ReviewTask(status=pending)
2. Worker обработки
while True:
# Проверить есть ли in_progress задача
if has_in_progress_task():
wait(10 seconds)
continue
# Взять следующую pending задачу (по приоритету)
task = get_next_pending_task()
if not task:
wait(10 seconds)
continue
# Отметить как in_progress
task.status = "in_progress"
# Выполнить review
try:
run_ai_review(task.pull_request)
task.status = "completed"
except Exception as e:
task.retry_count += 1
if task.retry_count >= 3:
task.status = "failed"
else:
task.status = "pending" # retry
# Подождать 10 секунд перед следующей
wait(10 seconds)
3. Гарантии
✅ Только 1 review одновременно
✅ Приоритеты: HIGH → NORMAL → LOW
✅ Автоматический retry (до 3 попыток)
✅ FIFO при равном приоритете
🐛 Troubleshooting
Worker не обрабатывает задачи
# Проверить статус
curl http://localhost:8000/api/tasks/worker/status
# Должно быть:
{"running": true, "current_task_id": null, "poll_interval": 10}
Задача застряла в "in_progress"
# Вручную сбросить через API
POST /api/tasks/{id}/retry
Все задачи failed
Проверить:
- ✅ Ollama запущена (
ollama list) - ✅ Модель скачана (
ollama pull mistral:7b) - ✅ API токены правильные
- ✅ Репозитории доступны
📈 Мониторинг
Frontend UI
- 🏢 Организации - управление организациями, сканирование
- 📝 Очередь задач - мониторинг задач, статус worker'а
- 🔍 Reviews - результаты review, комментарии
Логи
# Backend логи (Windows)
# Смотреть в консоли где запущен start.bat
# Backend логи (Linux/systemd)
journalctl -u ai-review -f
✅ Готово!
Теперь вы можете:
- ➕ Добавлять организации
- 🔍 Сканировать репозитории и PR
- 📝 Следить за очередью задач
- 🤖 AI автоматически проводит review
- 💬 Комментарии публикуются в PR
Один клик → Все репозитории и PR организации в review! 🚀
📚 Подробная документация
- ORGANIZATION_FEATURE.md - Полная документация
- README.md - Общая информация о проекте
- API Docs - Swagger UI