code-review-agent/ORGANIZATION_QUICKSTART.md
Primakov Alexandr Alexandrovich 6ae2d0d8ec Add organization and task queue features
- 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.
2025-10-13 00:10:04 +03:00

7.0 KiB
Raw Permalink Blame History

🚀 Быстрый старт: Организации и Очередь задач

📝 Что добавлено

  1. Организации - добавление целых организаций (Gitea/GitHub/Bitbucket)
  2. Автосканирование - поиск всех репозиториев и PR в организации
  3. Очередь задач - последовательная обработка review (по одному)
  4. Мониторинг - отслеживание состояния очереди и worker'а

Быстрый старт

1. Запустить проект

# Windows
start.bat

# Linux/Mac
./start.sh

2. Добавить организацию

  1. Открыть http://localhost:8000
  2. Перейти в раздел 🏢 Организации
  3. Нажать Добавить организацию
  4. Заполнить:
    • Название: inno-js
    • Платформа: Gitea
    • Base URL: https://git.bro-js.ru
    • API токен: (опционально, если не указан - используется master токен)
  5. Нажать Создать

3. Сканировать организацию

  1. Найти добавленную организацию
  2. Нажать 🔍 Сканировать
  3. Подтвердить

Результат:

✅ Сканирование завершено!

📦 Репозиториев найдено: 15
 Репозиториев добавлено: 3
🔀 PR найдено: 8
📝 Задач создано: 8

4. Мониторинг очереди

  1. Перейти в раздел 📝 Очередь задач
  2. Увидите:
    • 🚀 Worker активен - статус worker'а
    • Статистика - всего/ожидает/выполняется/завершено/ошибок
    • Список задач - каждая задача с PR и статусом

5. Наблюдать за работой

Worker автоматически:

  1. Берет следующую задачу из очереди
  2. Запускает AI review для PR
  3. Публикует комментарии
  4. Переходит к следующей задаче

Важно: Обрабатывается только 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

Проверить:

  1. Ollama запущена (ollama list)
  2. Модель скачана (ollama pull mistral:7b)
  3. API токены правильные
  4. Репозитории доступны

📈 Мониторинг

Frontend UI

  • 🏢 Организации - управление организациями, сканирование
  • 📝 Очередь задач - мониторинг задач, статус worker'а
  • 🔍 Reviews - результаты review, комментарии

Логи

# Backend логи (Windows)
# Смотреть в консоли где запущен start.bat

# Backend логи (Linux/systemd)
journalctl -u ai-review -f

Готово!

Теперь вы можете:

  1. Добавлять организации
  2. 🔍 Сканировать репозитории и PR
  3. 📝 Следить за очередью задач
  4. 🤖 AI автоматически проводит review
  5. 💬 Комментарии публикуются в PR

Один кликВсе репозитории и PR организации в review! 🚀


📚 Подробная документация