- 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.
227 lines
8.4 KiB
Markdown
227 lines
8.4 KiB
Markdown
# 📝 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!** 🚀
|
||
|