Add Ticket and add Role Support

This commit is contained in:
2026-01-14 21:26:23 +06:00
parent cf131bb04e
commit db2eddca4b
9 changed files with 726 additions and 30 deletions

143
TICKETS_SYSTEM.md Normal file
View File

@@ -0,0 +1,143 @@
# 🎫 Система тикетов
## Что добавлено
### ✅ Новые возможности
1. **Система тикетов** - полноценная система поддержки с чатом
2. **Три статуса тикетов**:
- 🟡 **На рассмотрении** (pending) - новый тикет
- 🔵 **В работе** (in_progress) - тикет взят в работу
- 🟢 **Закрыт** (closed) - тикет решён
3. **Новая роль "Тех. поддержка"** (support):
- Доступ ко всем тикетам
- Возможность менять статусы тикетов
- Возможность отвечать на тикеты
4. **Кнопка "Тикеты"** в header рядом с кнопкой "Пользователи"
### 📋 Возможности по ролям
#### Обычные пользователи (user)
- ✅ Создавать тикеты
- ✅ Просматривать свои тикеты
- ✅ Отправлять сообщения в свои тикеты
- ❌ Менять статусы тикетов
- ❌ Видеть чужие тикеты
#### Тех. поддержка (support)
- ✅ Просматривать все тикеты
- ✅ Отвечать на любые тикеты
- ✅ Менять статусы тикетов
- ✅ Закрывать тикеты
- ❌ Управлять пользователями
- ❌ Управлять серверами
#### Администраторы (admin)
-Все возможности тех. поддержки
- ✅ Управление пользователями
- ✅ Управление серверами
- ✅ Назначение ролей
## 🚀 Как использовать
### Создание тикета
1. Нажмите кнопку "Тикеты" в header
2. Нажмите "Создать тикет"
3. Заполните тему и описание проблемы
4. Нажмите "Создать"
### Работа с тикетом
1. Откройте список тикетов
2. Нажмите на нужный тикет
3. Пишите сообщения в чат
4. Тех. поддержка и админы могут менять статус тикета
### Назначение роли "Тех. поддержка"
1. Войдите как администратор (none / none)
2. Нажмите кнопку "Пользователи"
3. Найдите нужного пользователя
4. В выпадающем списке выберите "Тех. поддержка"
5. Роль изменится автоматически
## 📁 Новые файлы
### Backend
- `backend/tickets.json` - хранилище тикетов (создаётся автоматически)
- Добавлены endpoints в `backend/main.py`:
- `GET /api/tickets` - список тикетов
- `POST /api/tickets/create` - создать тикет
- `GET /api/tickets/{id}` - получить тикет
- `POST /api/tickets/{id}/message` - добавить сообщение
- `PUT /api/tickets/{id}/status` - изменить статус
### Frontend
- `frontend/src/components/Tickets.jsx` - список тикетов
- `frontend/src/components/TicketChat.jsx` - чат тикета
- `frontend/src/components/CreateTicketModal.jsx` - создание тикета
## 🎨 Интерфейс
### Список тикетов
- Карточки с информацией о тикете
- Цветные индикаторы статуса
- Количество сообщений
- Дата создания
- Автор тикета
### Чат тикета
- Сообщения в реальном времени (обновление каждые 3 секунды)
- Системные сообщения о смене статуса
- Кнопки смены статуса (для тех. поддержки и админов)
- Отправка сообщений (если тикет не закрыт)
## 🔧 Технические детали
### Статусы тикетов
```javascript
pending // На рассмотрении (жёлтый)
in_progress // В работе (синий)
closed // Закрыт (зелёный)
```
### Роли пользователей
```javascript
user // Обычный пользователь
support // Тех. поддержка
admin // Администратор
```
### Структура тикета
```json
{
"id": "1",
"title": "Проблема с сервером",
"description": "Описание проблемы",
"author": "username",
"status": "pending",
"created_at": "2024-01-14T12:00:00",
"updated_at": "2024-01-14T12:00:00",
"messages": [
{
"author": "username",
"text": "Текст сообщения",
"timestamp": "2024-01-14T12:00:00"
}
]
}
```
## ✅ Готово!
Система тикетов полностью интегрирована в MC Panel. Пользователи могут создавать тикеты, а тех. поддержка и администраторы могут на них отвечать и управлять статусами.
### Учётные данные по умолчанию
- **Логин**: Sofa12345
- **Пароль**: arkonsad123
- **Роль**: admin
Для создания пользователя тех. поддержки:
1. Зарегистрируйте нового пользователя
2. Войдите как админ
3. Назначьте ему роль "Тех. поддержка"