- 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.
8.4 KiB
8.4 KiB
📝 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иConfirmModalonCancel→onClosemessageprop →title+children
- 🐛 Удален неиспользуемый импорт
ReviewTaskизorganizations.ts
🎯 Ключевые фичи
1. Организации
Добавление целой организации → Автосканирование всех репозиториев
→ Поиск всех PR → Создание задач на review
2. Очередь задач
Задачи в очереди → Worker берет по одной → Выполняет review
→ Публикует комментарии → Переходит к следующей
3. Гарантии
- ✅ Один review одновременно - не перегружаем Ollama
- ✅ Приоритеты - важные PR обрабатываются быстрее
- ✅ Retry - автоматические повторы при ошибках
- ✅ Мониторинг - видно состояние очереди и worker'а
📊 Статистика изменений
Backend:
- Новых файлов: 5
models/organization.pymodels/review_task.pyapi/organizations.pyapi/tasks.pyworkers/task_worker.py
- Изменено файлов: 3
models/__init__.pyapi/__init__.pymain.py
Frontend:
- Новых файлов: 3
pages/Organizations.tsxpages/Tasks.tsxtypes/organization.ts
- Изменено файлов: 3
App.tsxapi/organizations.tspages/Tasks.tsx(исправления)
Документация:
- Новых файлов: 3
ORGANIZATION_FEATURE.mdORGANIZATION_QUICKSTART.mdCHANGELOG_ORGANIZATIONS.md
🚀 Как использовать
1. Миграция БД
cd backend
./venv/Scripts/python.exe migrate.py
2. Запуск проекта
# Windows
start.bat
# Linux/Mac
./start.sh
3. Добавить организацию
- Открыть http://localhost:8000
- Перейти в 🏢 Организации
- Нажать ➕ Добавить организацию
- Заполнить форму
- Нажать 🔍 Сканировать
4. Мониторинг
- Перейти в 📝 Очередь задач
- Следить за прогрессом
- Видеть статус worker'а
- Фильтровать по статусу
✅ Тестирование
Проверено:
- ✅ Создание организации
- ✅ Сканирование организации (Gitea)
- ✅ Создание задач на review
- ✅ Последовательная обработка задач
- ✅ Worker запускается и останавливается
- ✅ Retry при ошибках
- ✅ Frontend собирается без ошибок
- ✅ Модальные окна работают корректно
Требует тестирования:
- ⏳ Полный цикл review через очередь
- ⏳ Приоритеты задач
- ⏳ Масштабирование (много задач)
- ⏳ GitHub и Bitbucket организации
📝 TODO для будущих улучшений
- Реализовать сканирование GitHub организаций
- Реализовать сканирование Bitbucket организаций
- Добавить настройку приоритетов вручную
- Добавить паузу/возобновление worker'а
- Добавить планирование сканирований (cron)
- Добавить webhook для организаций
- Добавить статистику по организациям
- Добавить логи worker'а в UI
🎉 Результат
Теперь можно:
- ✅ Добавлять организации целиком
- ✅ Сканировать все репозитории одной кнопкой
- ✅ Автоматически ставить все PR в очередь
- ✅ Обрабатывать review последовательно
- ✅ Мониторить прогресс в реальном времени
Один клик → Вся организация на review! 🚀