Files
new_lottery_bot/ADMIN_PANEL_TESTING.md
Andrew K. Choi 0fdf01d1c7 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
2025-11-17 07:50:08 +09:00

14 KiB
Raw Permalink Blame History

Тестирование Админ Панели

Контрольный список для проверки кнопок

Главное меню (для обычных пользователей)

  • 🎲 Активные розыгрыши - показывает список активных розыгрышей
  • 📝 Зарегистрироваться - открывает форму регистрации (только для незарегистрированных)
  • Кнопка регистрации СКРЫТА для зарегистрированных пользователей
  • Кнопка регистрации СКРЫТА для администраторов

Главное меню (для администраторов)

  • 🎲 Активные розыгрыши - показывает список активных розыгрышей
  • ⚙️ Админ панель - открывает админ панель
  • Создать розыгрыш - быстрое создание розыгрыша

Админ панель - Главное меню

Проверка открытия админ панели:

  • Показывается краткая статистика (пользователи, розыгрыши, участия)
  • Все 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]

Статистика:

  • Всего проверено кнопок: ____ / ____
  • Работает корректно: ____
  • Требует исправления: ____
  • Критические ошибки: ____

Замечания:

[Описать найденные проблемы и рекомендации]