feat: update admin panel keyboard structure and registration button logic
- Updated admin panel keyboard to match admin_panel.py handlers - Changed registration button logic: show only for unregistered non-admins - Added missing methods to IBotController interface - Updated get_main_keyboard to accept is_registered parameter - Simplified admin panel structure with proper callback routing - Removed test callback button from production UI - Created ADMIN_PANEL_STRUCTURE.md and ADMIN_PANEL_TESTING.md documentation
This commit is contained in:
148
ADMIN_PANEL_STRUCTURE.md
Normal file
148
ADMIN_PANEL_STRUCTURE.md
Normal file
@@ -0,0 +1,148 @@
|
||||
# Структура Админ Панели
|
||||
|
||||
## Главное меню бота
|
||||
|
||||
### Для всех пользователей:
|
||||
- **🎲 Активные розыгрыши** (`active_lotteries`) - Просмотр всех активных розыгрышей
|
||||
- **📝 Зарегистрироваться** (`start_registration`) - Регистрация в системе (скрывается для зарегистрированных и админов)
|
||||
|
||||
### Для администраторов:
|
||||
- **⚙️ Админ панель** (`admin_panel`) - Вход в админ панель
|
||||
- **➕ Создать розыгрыш** (`create_lottery`) - Быстрое создание розыгрыша
|
||||
|
||||
---
|
||||
|
||||
## Админ панель (`admin_panel`)
|
||||
|
||||
### Основные разделы:
|
||||
|
||||
#### 1. 🎲 Управление розыгрышами (`admin_lotteries`)
|
||||
Раздел для полного управления розыгрышами.
|
||||
|
||||
**Доступные действия:**
|
||||
- **➕ Создать розыгрыш** (`admin_create_lottery`) - Создание нового розыгрыша (пошаговый процесс)
|
||||
- **📝 Редактировать розыгрыш** (`admin_edit_lottery`) - Редактирование существующих розыгрышей
|
||||
- **🎭 Настройка отображения победителей** (`admin_winner_display_settings`) - Настройка способа отображения победителей (номер счета/имя)
|
||||
- **📋 Список всех розыгрышей** (`admin_list_all_lotteries`) - Просмотр всех розыгрышей (активные и завершенные)
|
||||
- **🏁 Завершить розыгрыш** (`admin_finish_lottery`) - Принудительное завершение розыгрыша
|
||||
- **🗑️ Удалить розыгрыш** (`admin_delete_lottery`) - Удаление розыгрыша из системы
|
||||
|
||||
**Состояния (FSM):**
|
||||
- `lottery_title` - Ввод названия розыгрыша
|
||||
- `lottery_description` - Ввод описания
|
||||
- `lottery_prizes` - Ввод списка призов
|
||||
- `lottery_confirm` - Подтверждение создания
|
||||
|
||||
---
|
||||
|
||||
#### 2. 👥 Управление участниками (`admin_participants`)
|
||||
Раздел для управления участниками розыгрышей.
|
||||
|
||||
**Доступные действия:**
|
||||
- **➕ Добавить участника** (`admin_add_participant`) - Добавление одного участника вручную
|
||||
- **📥 Массовое добавление (ID)** (`admin_bulk_add_participant`) - Массовое добавление по Telegram ID
|
||||
- **🏦 Массовое добавление (счета)** (`admin_bulk_add_accounts`) - Массовое добавление по номерам счетов
|
||||
- **➖ Удалить участника** (`admin_remove_participant`) - Удаление одного участника
|
||||
- **📤 Массовое удаление (ID)** (`admin_bulk_remove_participant`) - Массовое удаление по Telegram ID
|
||||
- **🏦 Массовое удаление (счета)** (`admin_bulk_remove_accounts`) - Массовое удаление по номерам счетов
|
||||
- **👥 Все участники** (`admin_list_all_participants`) - Список всех зарегистрированных участников
|
||||
- **🔍 Поиск участников** (`admin_search_participants`) - Поиск участников по критериям
|
||||
- **📊 Участники по розыгрышам** (`admin_participants_by_lottery`) - Просмотр участников конкретного розыгрыша
|
||||
- **📈 Отчет по участникам** (`admin_participants_report`) - Детальный отчет об участии
|
||||
|
||||
**Состояния (FSM):**
|
||||
- `add_participant_lottery` - Выбор розыгрыша для добавления
|
||||
- `add_participant_user` - Выбор пользователя
|
||||
- `add_participant_bulk` - Массовый ввод ID
|
||||
- `add_participant_bulk_accounts` - Массовый ввод счетов
|
||||
- `remove_participant_lottery` - Выбор розыгрыша для удаления
|
||||
- `remove_participant_user` - Выбор пользователя для удаления
|
||||
- `participant_search` - Поиск участников
|
||||
|
||||
---
|
||||
|
||||
#### 3. 👑 Управление победителями (`admin_winners`)
|
||||
Раздел для управления победителями розыгрышей.
|
||||
|
||||
**Доступные действия:**
|
||||
- **👑 Установить победителя** (`admin_set_manual_winner`) - Ручная установка победителя (без розыгрыша)
|
||||
- **📝 Изменить победителя** (`admin_edit_winner`) - Изменение данных победителя
|
||||
- **❌ Удалить победителя** (`admin_remove_winner`) - Удаление победителя
|
||||
- **📋 Список победителей** (`admin_list_winners`) - Просмотр всех победителей
|
||||
- **🎲 Провести розыгрыш** (`admin_conduct_draw`) - Автоматическое проведение розыгрыша
|
||||
|
||||
**Состояния (FSM):**
|
||||
- `set_winner_lottery` - Выбор розыгрыша для установки победителя
|
||||
- `set_winner_place` - Выбор места (1, 2, 3...)
|
||||
- `set_winner_user` - Выбор пользователя-победителя
|
||||
|
||||
---
|
||||
|
||||
#### 4. 📊 Статистика (`admin_stats`)
|
||||
Раздел с общей статистикой системы.
|
||||
|
||||
**Показывает:**
|
||||
- Количество пользователей
|
||||
- Количество зарегистрированных пользователей
|
||||
- Общее количество розыгрышей
|
||||
- Количество активных розыгрышей
|
||||
- Количество завершенных розыгрышей
|
||||
- Общее количество участий
|
||||
|
||||
**Кнопки:**
|
||||
- **🔄 Обновить** (`admin_stats`) - Обновление статистики
|
||||
- **🔙 Назад** (`admin_panel`) - Возврат в главное меню админ панели
|
||||
|
||||
---
|
||||
|
||||
#### 5. ⚙️ Настройки (`admin_settings`)
|
||||
Раздел с настройками системы и утилитами.
|
||||
|
||||
**Доступные действия:**
|
||||
- Настройки отображения
|
||||
- Управление базой данных
|
||||
- Экспорт данных
|
||||
- Системные настройки
|
||||
|
||||
---
|
||||
|
||||
## Навигация
|
||||
|
||||
### Кнопки возврата:
|
||||
- **🔙 Назад** (`admin_panel`) - Возврат в главное меню админ панели
|
||||
- **🔙 Назад** (`back_to_main`) - Возврат в главное меню бота
|
||||
|
||||
### Кнопки отмены:
|
||||
- **❌ Отмена** - Отмена текущей операции и возврат в предыдущее меню
|
||||
|
||||
---
|
||||
|
||||
## Обработка callback'ов
|
||||
|
||||
### Главный роутер (`main.py`):
|
||||
- `admin_panel` - Открытие админ панели (через контроллер)
|
||||
- `back_to_main` - Возврат в главное меню
|
||||
|
||||
### Админ роутер (`admin_panel.py`):
|
||||
- Все callback'и начинающиеся с `admin_*`
|
||||
- Вся логика управления розыгрышами, участниками, победителями
|
||||
- FSM состояния для многошаговых операций
|
||||
|
||||
### Порядок подключения роутеров:
|
||||
1. **router** (main) - команды `/start`, `/help`, основные callback'и
|
||||
2. **admin_router** - все админские операции
|
||||
3. **registration_router** - регистрация пользователей
|
||||
4. **chat_router** (ПОСЛЕДНИЙ) - обработка всех необработанных сообщений
|
||||
|
||||
---
|
||||
|
||||
## Проверка прав доступа
|
||||
|
||||
Все админские handler'ы проверяют права доступа:
|
||||
```python
|
||||
if not is_admin(callback.from_user.id):
|
||||
await callback.answer("❌ Недостаточно прав", show_alert=True)
|
||||
return
|
||||
```
|
||||
|
||||
ID администраторов хранятся в `src/core/config.py` в переменной `ADMIN_IDS`.
|
||||
Reference in New Issue
Block a user