# 🚀 Быстрый старт: Организации и Очередь задач ## 📝 Что добавлено 1. **Организации** - добавление целых организаций (Gitea/GitHub/Bitbucket) 2. **Автосканирование** - поиск всех репозиториев и PR в организации 3. **Очередь задач** - последовательная обработка review (по одному) 4. **Мониторинг** - отслеживание состояния очереди и worker'а --- ## ⚡ Быстрый старт ### 1. Запустить проект ```bash # 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 ```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 ### Организации ```bash # Получить список 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 ``` ### Очередь задач ```bash # Получить список задач 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 обработки ```python 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 не обрабатывает задачи ```bash # Проверить статус curl http://localhost:8000/api/tasks/worker/status # Должно быть: {"running": true, "current_task_id": null, "poll_interval": 10} ``` ### Задача застряла в "in_progress" ```bash # Вручную сбросить через API POST /api/tasks/{id}/retry ``` ### Все задачи failed Проверить: 1. ✅ Ollama запущена (`ollama list`) 2. ✅ Модель скачана (`ollama pull mistral:7b`) 3. ✅ API токены правильные 4. ✅ Репозитории доступны --- ## 📈 Мониторинг ### Frontend UI - **🏢 Организации** - управление организациями, сканирование - **📝 Очередь задач** - мониторинг задач, статус worker'а - **🔍 Reviews** - результаты review, комментарии ### Логи ```bash # Backend логи (Windows) # Смотреть в консоли где запущен start.bat # Backend логи (Linux/systemd) journalctl -u ai-review -f ``` --- ## ✅ Готово! Теперь вы можете: 1. ➕ Добавлять организации 2. 🔍 Сканировать репозитории и PR 3. 📝 Следить за очередью задач 4. 🤖 AI автоматически проводит review 5. 💬 Комментарии публикуются в PR **Один клик** → Все репозитории и PR организации в review! 🚀 --- ## 📚 Подробная документация - [ORGANIZATION_FEATURE.md](ORGANIZATION_FEATURE.md) - Полная документация - [README.md](README.md) - Общая информация о проекте - [API Docs](http://localhost:8000/docs) - Swagger UI