code-review-agent/CHANGELOG_ORGANIZATIONS.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

8.4 KiB
Raw Permalink Blame History

📝 Changelog: Организации и Очередь задач

🎉 Добавлено

Backend

Новые модели:

  • Organization - модель для организаций (Gitea/GitHub/Bitbucket)
  • ReviewTask - модель для очереди задач review

Новые API endpoints:

  • GET /api/organizations - список организаций

  • POST /api/organizations - создать организацию

  • GET /api/organizations/{id} - получить организацию

  • PUT /api/organizations/{id} - обновить организацию

  • DELETE /api/organizations/{id} - удалить организацию

  • POST /api/organizations/{id}/scan - сканировать организацию

  • GET /api/tasks - список задач в очереди

  • GET /api/tasks?status=pending - фильтр по статусу

  • GET /api/tasks/worker/status - статус worker'а

  • POST /api/tasks/{id}/retry - повторить задачу

  • DELETE /api/tasks/{id} - удалить задачу

Task Worker:

  • Фоновый worker для последовательной обработки задач
  • Гарантия: только 1 review одновременно
  • Поддержка приоритетов (HIGH > NORMAL > LOW)
  • Автоматический retry при ошибках (до 3 попыток)
  • FIFO при равном приоритете
  • Автозапуск при старте приложения

Сканирование организаций:

  • Автоматический поиск всех репозиториев в организации
  • Автоматический поиск всех открытых PR
  • Автоматическое создание задач на review
  • Поддержка Gitea (GitHub и Bitbucket - заглушки)

Frontend

Новые страницы:

  • /organizations - управление организациями
  • /tasks - мониторинг очереди задач

Новые компоненты:

  • Organizations.tsx - страница организаций с CRUD
  • Tasks.tsx - страница очереди задач с мониторингом
  • OrganizationForm - форма создания/редактирования организации

Новые типы:

  • Organization - тип организации
  • OrganizationCreate / OrganizationUpdate - типы для CRUD
  • ReviewTask - тип задачи review
  • TaskStatus / TaskPriority - типы статусов и приоритетов
  • WorkerStatus - тип статуса worker'а

API клиент:

  • getOrganizations() - получить список
  • createOrganization() - создать
  • updateOrganization() - обновить
  • deleteOrganization() - удалить
  • scanOrganization() - сканировать
  • getTasks() - получить задачи
  • getWorkerStatus() - статус worker'а
  • retryTask() - повторить
  • deleteTask() - удалить

UI улучшения:

  • Навигация обновлена: добавлены пункты "Организации" и "Очередь"
  • Модальные окна исправлены (был баг с onCancel)
  • Real-time обновление статистики задач (каждые 5 секунд)
  • Фильтрация задач по статусу
  • Визуализация статуса worker'а

Документация

  • ORGANIZATION_FEATURE.md - подробная документация
  • ORGANIZATION_QUICKSTART.md - быстрый старт
  • backend/migrate.py - скрипт миграции БД

🔧 Исправления

Frontend

  • 🐛 Исправлены ошибки в компонентах Modal и ConfirmModal
    • onCancelonClose
    • message prop → title + children
  • 🐛 Удален неиспользуемый импорт ReviewTask из organizations.ts

🎯 Ключевые фичи

1. Организации

Добавление целой организации → Автосканирование всех репозиториев 
→ Поиск всех PR → Создание задач на review

2. Очередь задач

Задачи в очереди → Worker берет по одной → Выполняет review 
→ Публикует комментарии → Переходит к следующей

3. Гарантии

  • Один review одновременно - не перегружаем Ollama
  • Приоритеты - важные PR обрабатываются быстрее
  • Retry - автоматические повторы при ошибках
  • Мониторинг - видно состояние очереди и worker'а

📊 Статистика изменений

Backend:

  • Новых файлов: 5
    • models/organization.py
    • models/review_task.py
    • api/organizations.py
    • api/tasks.py
    • workers/task_worker.py
  • Изменено файлов: 3
    • models/__init__.py
    • api/__init__.py
    • main.py

Frontend:

  • Новых файлов: 3
    • pages/Organizations.tsx
    • pages/Tasks.tsx
    • types/organization.ts
  • Изменено файлов: 3
    • App.tsx
    • api/organizations.ts
    • pages/Tasks.tsx (исправления)

Документация:

  • Новых файлов: 3
    • ORGANIZATION_FEATURE.md
    • ORGANIZATION_QUICKSTART.md
    • CHANGELOG_ORGANIZATIONS.md

🚀 Как использовать

1. Миграция БД

cd backend
./venv/Scripts/python.exe migrate.py

2. Запуск проекта

# Windows
start.bat

# Linux/Mac
./start.sh

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

  1. Открыть http://localhost:8000
  2. Перейти в 🏢 Организации
  3. Нажать Добавить организацию
  4. Заполнить форму
  5. Нажать 🔍 Сканировать

4. Мониторинг

  1. Перейти в 📝 Очередь задач
  2. Следить за прогрессом
  3. Видеть статус worker'а
  4. Фильтровать по статусу

Тестирование

Проверено:

  • Создание организации
  • Сканирование организации (Gitea)
  • Создание задач на review
  • Последовательная обработка задач
  • Worker запускается и останавливается
  • Retry при ошибках
  • Frontend собирается без ошибок
  • Модальные окна работают корректно

Требует тестирования:

  • Полный цикл review через очередь
  • Приоритеты задач
  • Масштабирование (много задач)
  • GitHub и Bitbucket организации

📝 TODO для будущих улучшений

  • Реализовать сканирование GitHub организаций
  • Реализовать сканирование Bitbucket организаций
  • Добавить настройку приоритетов вручную
  • Добавить паузу/возобновление worker'а
  • Добавить планирование сканирований (cron)
  • Добавить webhook для организаций
  • Добавить статистику по организациям
  • Добавить логи worker'а в UI

🎉 Результат

Теперь можно:

  1. Добавлять организации целиком
  2. Сканировать все репозитории одной кнопкой
  3. Автоматически ставить все PR в очередь
  4. Обрабатывать review последовательно
  5. Мониторить прогресс в реальном времени

Один клик → Вся организация на review! 🚀