- 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
14 KiB
Тестирование Админ Панели
Контрольный список для проверки кнопок
✅ Главное меню (для обычных пользователей)
- 🎲 Активные розыгрыши - показывает список активных розыгрышей
- 📝 Зарегистрироваться - открывает форму регистрации (только для незарегистрированных)
- Кнопка регистрации СКРЫТА для зарегистрированных пользователей
- Кнопка регистрации СКРЫТА для администраторов
✅ Главное меню (для администраторов)
- 🎲 Активные розыгрыши - показывает список активных розыгрышей
- ⚙️ Админ панель - открывает админ панель
- ➕ Создать розыгрыш - быстрое создание розыгрыша
✅ Админ панель - Главное меню
Проверка открытия админ панели:
- Показывается краткая статистика (пользователи, розыгрыши, участия)
- Все 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 (последовательность):
- Главное меню бота
- → Админ панель
- → → Конкретный раздел (розыгрыши/участники/победители)
- → → → Подменю раздела (если есть)
🐛 Известные проблемы и их решения
Проблема: Кнопка не реагирует
Решение:
- Проверить логи бота:
tail -f /tmp/bot_single.log - Убедиться, что callback_data зарегистрирован в роутере
- Проверить порядок подключения роутеров
Проблема: FSM не сохраняет состояние
Решение:
- Убедиться, что storage настроен (MemoryStorage)
- Проверить вызов
state.set_state() - Проверить StateFilter в handler'ах
Проблема: "Недостаточно прав" для админа
Решение:
- Проверить, что ID админа в
ADMIN_IDS(config.py) - Проверить формат ID (должен быть int)
📝 Инструкция по тестированию
Шаг 1: Подготовка
- Запустить бота:
make bot-start - Открыть чат с ботом в Telegram
- Убедиться, что у вас админские права
Шаг 2: Тестирование главного меню
- Отправить
/start - Проверить все кнопки главного меню
- Проверить кнопку "Админ панель"
Шаг 3: Тестирование админ панели
- Открыть админ панель
- Последовательно зайти в каждый раздел
- Проверить все кнопки в каждом разделе
- Отметить работающие кнопки в чеклисте
Шаг 4: Тестирование FSM процессов
- Создать новый розыгрыш (полный цикл)
- Добавить участников (разными способами)
- Провести розыгрыш
- Проверить результаты
Шаг 5: Проверка навигации
- Из каждого меню вернуться назад
- Проверить корректность возврата
- Убедиться, что нет "мертвых" кнопок
Шаг 6: Логи
- Во время тестирования следить за логами
- Фиксировать все ошибки
- Проверять успешное выполнение операций
✅ Результат тестирования
Дата: [Указать дату] Тестировщик: [Указать имя] Версия бота: [Указать commit hash]
Статистика:
- Всего проверено кнопок: ____ / ____
- Работает корректно: ____
- Требует исправления: ____
- Критические ошибки: ____
Замечания:
[Описать найденные проблемы и рекомендации]