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:
331
ADMIN_PANEL_TESTING.md
Normal file
331
ADMIN_PANEL_TESTING.md
Normal file
@@ -0,0 +1,331 @@
|
||||
# Тестирование Админ Панели
|
||||
|
||||
## Контрольный список для проверки кнопок
|
||||
|
||||
### ✅ Главное меню (для обычных пользователей)
|
||||
- [ ] 🎲 Активные розыгрыши - показывает список активных розыгрышей
|
||||
- [ ] 📝 Зарегистрироваться - открывает форму регистрации (только для незарегистрированных)
|
||||
- [ ] Кнопка регистрации СКРЫТА для зарегистрированных пользователей
|
||||
- [ ] Кнопка регистрации СКРЫТА для администраторов
|
||||
|
||||
### ✅ Главное меню (для администраторов)
|
||||
- [ ] 🎲 Активные розыгрыши - показывает список активных розыгрышей
|
||||
- [ ] ⚙️ Админ панель - открывает админ панель
|
||||
- [ ] ➕ Создать розыгрыш - быстрое создание розыгрыша
|
||||
|
||||
---
|
||||
|
||||
## ✅ Админ панель - Главное меню
|
||||
|
||||
### Проверка открытия админ панели:
|
||||
- [ ] Показывается краткая статистика (пользователи, розыгрыши, участия)
|
||||
- [ ] Все 6 кнопок отображаются корректно
|
||||
|
||||
### Основные кнопки:
|
||||
- [ ] 🎲 Управление розыгрышами (`admin_lotteries`)
|
||||
- [ ] 👥 Управление участниками (`admin_participants`)
|
||||
- [ ] 👑 Управление победителями (`admin_winners`)
|
||||
- [ ] 📊 Статистика (`admin_stats`)
|
||||
- [ ] ⚙️ Настройки (`admin_settings`)
|
||||
- [ ] 🔙 Назад - возврат в главное меню бота
|
||||
|
||||
---
|
||||
|
||||
## ✅ Раздел: Управление розыгрышами
|
||||
|
||||
### Открытие раздела:
|
||||
- [ ] Нажать "🎲 Управление розыгрышами" в админ панели
|
||||
- [ ] Проверить отображение всех 7 кнопок
|
||||
|
||||
### Кнопки раздела:
|
||||
- [ ] ➕ Создать розыгрыш
|
||||
- [ ] Запускается процесс создания (FSM)
|
||||
- [ ] Шаг 1: Ввод названия
|
||||
- [ ] Шаг 2: Ввод описания
|
||||
- [ ] Шаг 3: Ввод призов (через запятую)
|
||||
- [ ] Шаг 4: Подтверждение
|
||||
- [ ] Розыгрыш создается в БД
|
||||
- [ ] Кнопка "❌ Отмена" работает на каждом шаге
|
||||
|
||||
- [ ] 📝 Редактировать розыгрыш
|
||||
- [ ] Показывает список всех розыгрышей
|
||||
- [ ] Выбор розыгрыша открывает меню редактирования
|
||||
- [ ] Можно изменить название, описание, призы
|
||||
- [ ] Изменения сохраняются в БД
|
||||
|
||||
- [ ] 🎭 Настройка отображения победителей
|
||||
- [ ] Показывает список розыгрышей
|
||||
- [ ] Для каждого розыгрыша можно выбрать тип отображения:
|
||||
- [ ] По номеру счета
|
||||
- [ ] По имени пользователя
|
||||
- [ ] Настройка сохраняется
|
||||
|
||||
- [ ] 📋 Список всех розыгрышей
|
||||
- [ ] Показывает все розыгрыши (активные и завершенные)
|
||||
- [ ] Для каждого розыгрыша показывается:
|
||||
- [ ] Название
|
||||
- [ ] Статус (активный/завершенный)
|
||||
- [ ] Количество участников
|
||||
- [ ] Дата создания
|
||||
|
||||
- [ ] 🏁 Завершить розыгрыш
|
||||
- [ ] Показывает список активных розыгрышей
|
||||
- [ ] Выбор розыгрыша завершает его
|
||||
- [ ] Запрос подтверждения
|
||||
- [ ] Статус меняется в БД
|
||||
|
||||
- [ ] 🗑️ Удалить розыгрыш
|
||||
- [ ] Показывает список всех розыгрышей
|
||||
- [ ] Выбор розыгрыша запрашивает подтверждение
|
||||
- [ ] Розыгрыш удаляется из БД
|
||||
|
||||
- [ ] 🔙 Назад - возврат в главное меню админ панели
|
||||
|
||||
---
|
||||
|
||||
## ✅ Раздел: Управление участниками
|
||||
|
||||
### Открытие раздела:
|
||||
- [ ] Нажать "👥 Управление участниками" в админ панели
|
||||
- [ ] Проверить отображение всех 9 кнопок
|
||||
|
||||
### Кнопки раздела:
|
||||
- [ ] ➕ Добавить участника
|
||||
- [ ] Выбор розыгрыша
|
||||
- [ ] Выбор пользователя (по ID или имени)
|
||||
- [ ] Участник добавляется в розыгрыш
|
||||
- [ ] Проверка дубликатов
|
||||
|
||||
- [ ] 📥 Массовое добавление (ID)
|
||||
- [ ] Выбор розыгрыша
|
||||
- [ ] Ввод списка Telegram ID (через запятую или построчно)
|
||||
- [ ] Массовое добавление участников
|
||||
- [ ] Отчет об успешных/неудачных добавлениях
|
||||
|
||||
- [ ] 🏦 Массовое добавление (счета)
|
||||
- [ ] Выбор розыгрыша
|
||||
- [ ] Ввод списка номеров счетов
|
||||
- [ ] Участники добавляются по номерам счетов
|
||||
- [ ] Отчет об операции
|
||||
|
||||
- [ ] ➖ Удалить участника
|
||||
- [ ] Выбор розыгрыша
|
||||
- [ ] Выбор участника
|
||||
- [ ] Участник удаляется
|
||||
- [ ] Подтверждение удаления
|
||||
|
||||
- [ ] 📤 Массовое удаление (ID)
|
||||
- [ ] Выбор розыгрыша
|
||||
- [ ] Ввод списка ID для удаления
|
||||
- [ ] Массовое удаление
|
||||
- [ ] Отчет об операции
|
||||
|
||||
- [ ] 🏦 Массовое удаление (счета)
|
||||
- [ ] Выбор розыгрыша
|
||||
- [ ] Ввод списка номеров счетов
|
||||
- [ ] Удаление по счетам
|
||||
- [ ] Отчет об операции
|
||||
|
||||
- [ ] 👥 Все участники
|
||||
- [ ] Показывает список всех зарегистрированных пользователей
|
||||
- [ ] Пагинация (если много)
|
||||
- [ ] Показывает ID, имя, статус регистрации
|
||||
|
||||
- [ ] 🔍 Поиск участников
|
||||
- [ ] Поиск по имени
|
||||
- [ ] Поиск по Telegram ID
|
||||
- [ ] Поиск по номеру счета
|
||||
- [ ] Показывает результаты поиска
|
||||
|
||||
- [ ] 📊 Участники по розыгрышам
|
||||
- [ ] Выбор розыгрыша
|
||||
- [ ] Показывает всех участников розыгрыша
|
||||
- [ ] Количество участников
|
||||
- [ ] Список с именами/ID/счетами
|
||||
|
||||
- [ ] 📈 Отчет по участникам
|
||||
- [ ] Детальная статистика по участиям
|
||||
- [ ] Топ участников (по количеству участий)
|
||||
- [ ] Распределение по розыгрышам
|
||||
|
||||
- [ ] 🔙 Назад - возврат в главное меню админ панели
|
||||
|
||||
---
|
||||
|
||||
## ✅ Раздел: Управление победителями
|
||||
|
||||
### Открытие раздела:
|
||||
- [ ] Нажать "👑 Управление победителями" в админ панели
|
||||
- [ ] Проверить отображение всех 6 кнопок
|
||||
|
||||
### Кнопки раздела:
|
||||
- [ ] 👑 Установить победителя
|
||||
- [ ] Выбор розыгрыша
|
||||
- [ ] Выбор места (1, 2, 3...)
|
||||
- [ ] Выбор пользователя вручную
|
||||
- [ ] Победитель сохраняется в БД
|
||||
|
||||
- [ ] 📝 Изменить победителя
|
||||
- [ ] Показывает список розыгрышей с победителями
|
||||
- [ ] Выбор победителя для изменения
|
||||
- [ ] Возможность изменить место или пользователя
|
||||
- [ ] Изменения сохраняются
|
||||
|
||||
- [ ] ❌ Удалить победителя
|
||||
- [ ] Показывает список победителей
|
||||
- [ ] Выбор победителя
|
||||
- [ ] Подтверждение удаления
|
||||
- [ ] Победитель удаляется из БД
|
||||
|
||||
- [ ] 📋 Список победителей
|
||||
- [ ] Показывает всех победителей всех розыгрышей
|
||||
- [ ] Группировка по розыгрышам
|
||||
- [ ] Место, имя/счет, приз
|
||||
|
||||
- [ ] 🎲 Провести розыгрыш
|
||||
- [ ] Выбор розыгрыша
|
||||
- [ ] Автоматическое определение победителей
|
||||
- [ ] Случайный выбор из участников
|
||||
- [ ] Сохранение результатов
|
||||
- [ ] Уведомление победителей
|
||||
|
||||
- [ ] 🔙 Назад - возврат в главное меню админ панели
|
||||
|
||||
---
|
||||
|
||||
## ✅ Раздел: Статистика
|
||||
|
||||
### Открытие раздела:
|
||||
- [ ] Нажать "📊 Статистика" в админ панели
|
||||
- [ ] Проверить отображение статистики
|
||||
|
||||
### Показываемые данные:
|
||||
- [ ] 👥 Всего пользователей: [число]
|
||||
- [ ] ✅ Зарегистрированных: [число]
|
||||
- [ ] 🎲 Всего розыгрышей: [число]
|
||||
- [ ] 🟢 Активных: [число]
|
||||
- [ ] ✅ Завершенных: [число]
|
||||
- [ ] 🎫 Участий: [число]
|
||||
|
||||
### Кнопки:
|
||||
- [ ] 🔄 Обновить - обновляет статистику
|
||||
- [ ] 🔙 Назад - возврат в админ панель
|
||||
|
||||
---
|
||||
|
||||
## ✅ Раздел: Настройки
|
||||
|
||||
### Открытие раздела:
|
||||
- [ ] Нажать "⚙️ Настройки" в админ панели
|
||||
- [ ] Проверить доступность настроек
|
||||
|
||||
### Возможности (зависит от реализации):
|
||||
- [ ] Настройки уведомлений
|
||||
- [ ] Экспорт данных
|
||||
- [ ] Очистка старых данных
|
||||
- [ ] Управление администраторами
|
||||
- [ ] Системные настройки
|
||||
|
||||
- [ ] 🔙 Назад - возврат в админ панель
|
||||
|
||||
---
|
||||
|
||||
## ✅ Проверка прав доступа
|
||||
|
||||
### Для обычных пользователей:
|
||||
- [ ] Кнопка "Админ панель" НЕ показывается
|
||||
- [ ] Попытка прямого вызова admin callback'ов возвращает "❌ Недостаточно прав"
|
||||
|
||||
### Для администраторов:
|
||||
- [ ] Все разделы доступны
|
||||
- [ ] Все операции выполняются
|
||||
- [ ] Статистика отображается корректно
|
||||
|
||||
---
|
||||
|
||||
## ✅ Проверка навигации
|
||||
|
||||
### Возврат назад:
|
||||
- [ ] Из каждого подраздела можно вернуться в админ панель
|
||||
- [ ] Из админ панели можно вернуться в главное меню
|
||||
- [ ] Кнопки отмены работают во всех FSM состояниях
|
||||
|
||||
### Breadcrumbs (последовательность):
|
||||
1. Главное меню бота
|
||||
2. → Админ панель
|
||||
3. → → Конкретный раздел (розыгрыши/участники/победители)
|
||||
4. → → → Подменю раздела (если есть)
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Известные проблемы и их решения
|
||||
|
||||
### Проблема: Кнопка не реагирует
|
||||
**Решение:**
|
||||
1. Проверить логи бота: `tail -f /tmp/bot_single.log`
|
||||
2. Убедиться, что callback_data зарегистрирован в роутере
|
||||
3. Проверить порядок подключения роутеров
|
||||
|
||||
### Проблема: FSM не сохраняет состояние
|
||||
**Решение:**
|
||||
1. Убедиться, что storage настроен (MemoryStorage)
|
||||
2. Проверить вызов `state.set_state()`
|
||||
3. Проверить StateFilter в handler'ах
|
||||
|
||||
### Проблема: "Недостаточно прав" для админа
|
||||
**Решение:**
|
||||
1. Проверить, что ID админа в `ADMIN_IDS` (config.py)
|
||||
2. Проверить формат ID (должен быть int)
|
||||
|
||||
---
|
||||
|
||||
## 📝 Инструкция по тестированию
|
||||
|
||||
### Шаг 1: Подготовка
|
||||
1. Запустить бота: `make bot-start`
|
||||
2. Открыть чат с ботом в Telegram
|
||||
3. Убедиться, что у вас админские права
|
||||
|
||||
### Шаг 2: Тестирование главного меню
|
||||
1. Отправить `/start`
|
||||
2. Проверить все кнопки главного меню
|
||||
3. Проверить кнопку "Админ панель"
|
||||
|
||||
### Шаг 3: Тестирование админ панели
|
||||
1. Открыть админ панель
|
||||
2. Последовательно зайти в каждый раздел
|
||||
3. Проверить все кнопки в каждом разделе
|
||||
4. Отметить работающие кнопки в чеклисте
|
||||
|
||||
### Шаг 4: Тестирование FSM процессов
|
||||
1. Создать новый розыгрыш (полный цикл)
|
||||
2. Добавить участников (разными способами)
|
||||
3. Провести розыгрыш
|
||||
4. Проверить результаты
|
||||
|
||||
### Шаг 5: Проверка навигации
|
||||
1. Из каждого меню вернуться назад
|
||||
2. Проверить корректность возврата
|
||||
3. Убедиться, что нет "мертвых" кнопок
|
||||
|
||||
### Шаг 6: Логи
|
||||
1. Во время тестирования следить за логами
|
||||
2. Фиксировать все ошибки
|
||||
3. Проверять успешное выполнение операций
|
||||
|
||||
---
|
||||
|
||||
## ✅ Результат тестирования
|
||||
|
||||
**Дата:** [Указать дату]
|
||||
**Тестировщик:** [Указать имя]
|
||||
**Версия бота:** [Указать commit hash]
|
||||
|
||||
### Статистика:
|
||||
- Всего проверено кнопок: ____ / ____
|
||||
- Работает корректно: ____
|
||||
- Требует исправления: ____
|
||||
- Критические ошибки: ____
|
||||
|
||||
### Замечания:
|
||||
[Описать найденные проблемы и рекомендации]
|
||||
Reference in New Issue
Block a user