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.
This commit is contained in:
Primakov Alexandr Alexandrovich
2025-10-13 00:10:04 +03:00
parent 70889421ea
commit 6ae2d0d8ec
18 changed files with 2725 additions and 3 deletions
+226
View File
@@ -0,0 +1,226 @@
# 📝 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`
- `onCancel``onClose`
- `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. Миграция БД
```bash
cd backend
./venv/Scripts/python.exe migrate.py
```
### 2. Запуск проекта
```bash
# 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!** 🚀