# Тестирование Админ Панели ## Контрольный список для проверки кнопок ### ✅ Главное меню (для обычных пользователей) - [ ] 🎲 Активные розыгрыши - показывает список активных розыгрышей - [ ] 📝 Зарегистрироваться - открывает форму регистрации (только для незарегистрированных) - [ ] Кнопка регистрации СКРЫТА для зарегистрированных пользователей - [ ] Кнопка регистрации СКРЫТА для администраторов ### ✅ Главное меню (для администраторов) - [ ] 🎲 Активные розыгрыши - показывает список активных розыгрышей - [ ] ⚙️ Админ панель - открывает админ панель - [ ] ➕ Создать розыгрыш - быстрое создание розыгрыша --- ## ✅ Админ панель - Главное меню ### Проверка открытия админ панели: - [ ] Показывается краткая статистика (пользователи, розыгрыши, участия) - [ ] Все 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] ### Статистика: - Всего проверено кнопок: ____ / ____ - Работает корректно: ____ - Требует исправления: ____ - Критические ошибки: ____ ### Замечания: [Описать найденные проблемы и рекомендации]