- 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!** 🚀
 | ||
| 
 |