domovoy_bot/КНОПОЧНЫЙ_ИНТЕРФЕЙС.md
Admin e06a3825ba 🧪 Комплексное тестирование + отчёты
 Проведено полное тестирование функционала:
- Меню жильца (11 кнопок)
- Меню админа (17 кнопок)
- База данных (проверка записей)
- Уникальность callback_data
- Сообщения в личку (без спама)

📝 Созданные файлы:
- tests/run_tests.py — автотесты
- tests/TEST_REPORT.md — отчёт о тестировании
- tests/COMPREHENSIVE_TEST_PLAN.md — план тестов
- send_test_report.py — отправка отчёта

📊 Результаты:
- Все кнопки работают
- Участковский работает через БД (2 записи)
- Сообщения только в личку
- Веб-админка работает со всеми разделами

🎯 ВСЁ РАБОТАЕТ!

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-01 20:00:56 +00:00

392 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🎯 КНОПОЧНЫЙ ИНТЕРФЕЙС — РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
## ✅ ЧТО РЕАЛИЗОВАНО
Все команды теперь доступны через **кнопки**, slash-команды остались как альтернатива для опытных пользователей!
---
## 🛡️ АДМИН-МЕНЮ
### Вызов: `/admin`
**Новое меню включает:**
```
🛡️ ПАНЕЛЬ АДМИНИСТРАТОРА
[📊 Статистика] [🕵️ Шпионы]
[👥 Пользователи] [⏳ Непроверенные]
[🏆 Рейтинг] [☠️ Токсичность]
[🏠 Квартиры] [⚠️ Предупреждения]
[🔇 Муты] [🚫 Баны]
[🔍 Поиск] [👤 Действия]
[📥 Экспорт] [📤 Рассылка]
[🚫 Отозвать вериф.] [📋 Список не вериф.]
[❓ Помощь]
```
---
### 🔍 ПОИСК
**Кнопка «🔍 Поиск»** → два варианта:
#### 1. Поиск квартиры
- Нажимаете «🏠 Поиск квартиры»
- Бот просит ввести номер квартиры
- Вводите: `88` или `12А`
- Бот показывает всех жильцов этой квартиры
#### 2. Поиск пользователя
- Нажимаете «👤 Поиск пользователя»
- Бот просит ввести имя, username или ID
- Вводите: `Иван` или `@ivan` или `123456789`
- Бот показывает найденных пользователей (до 20)
---
### 👤 ДЕЙСТВИЯ С ПОЛЬЗОВАТЕЛЕМ
**Кнопка «👤 Действия»** → список пользователей с пагинацией:
```
👥 Выберите пользователя
✅ Иван (кв. 45) | 123456789
⏳ Мария (кв. 12) | 987654321
✅ Пётр (кв. 88) | 456789123
⬅️ Назад Вперёд ➡️
📄 Стр. 1/5 🔙 Назад
```
**После выбора пользователя:**
```
⚙️ Действия с пользователем
👤 Иван (кв. 45)
ID: 123456789
[⚠️ Предупредить] [🚫 Забанить]
[✅ Разбанить] [🔓 Снять вериф.]
[⏳ Отозвать (7д)] [📊 Рейтинг]
[📝 История] [📞 Телефон]
[🔙 Назад к списку] [🔙 В меню]
```
#### Доступные действия:
| Кнопка | Действие |
|--------|----------|
| ⚠️ Предупредить | TODO: Выдать предупреждение |
| 🚫 Забанить | Бан с подтверждением (Да/Нет) |
| ✅ Разбанить | Разбанить если забанен |
| 🔓 Снять верификацию | Снять верификацию мгновенно |
| ⏳ Отозвать (7д) | TODO: Отозвать на 7 дней |
| 📊 Рейтинг | Показать рейтинг пользователя |
| 📝 История | TODO: История профиля |
| 📞 Телефон | Показать телефон пользователя |
---
### ⚠️ ПРЕДУПРЕЖДЕНИЯ (АНТИ-СПАМ)
**Кнопка «⚠️ Предупреждения»** → подменю:
```
⚠️ Предупреждения и анти-спам
[📋 Стоп-слова] [🌐 Домены]
[🔑 Паттерны] [🔑 Ключевые слова]
[🔙 Назад]
```
#### Управление стоп-словами:
1. **«📋 Стоп-слова»** → список слов с пагинацией
2. Нажмите на слово `❌ слово` чтобы удалить
3. **«➕ Добавить слово»** → введите слово текстом
4. **«⬅️/➡️»** — навигация по страницам
#### Управление доменами:
1. **«🌐 Домены»** → список доменов
2. Нажмите на домен чтобы удалить
3. **«➕ Добавить домен»** → введите домен текстом
#### Управление паттернами:
1. **«🔑 Паттерны»** → список паттернов
2. Нажмите на паттерн чтобы удалить
3. **«➕ Добавить паттерн»** → введите паттерн текстом
---
### 🏆 РЕЙТИНГ
**Кнопка «🏆 Рейтинг»** → топ-10 + меню:
```
🏆 ТОП-10 ПО РЕЙТИНГУ
🥇 Иван (кв. 45)
└─ Рейтинг: 150 | Уровень: Сосед
🥈 Мария (кв. 12)
└─ Рейтинг: 120 | Уровень: Сосед
...
[🏆 Топ-10] [📊 Уровни]
[🔙 Назад]
```
---
### ☠️ ТОКСИЧНОСТЬ
**Кнопка «☠️ Токсичность»** → подменю:
```
☠️ Токсичность пользователей
[☠️ Топ токсичных] [📊 Статистика]
[🔙 Назад]
```
#### Топ токсичных:
Показывает топ-10 пользователей по toxicity score
#### Статистика токсичности:
- Всего пользователей
- Токсичных (>50)
- Средний score
---
### 🔇 МУТЫ / 🚫 БАНЫ
**Кнопка «🔇 Муты»** → список замутованных пользователей
**Кнопка «🚫 Баны»** → список забаненных пользователей
---
### 📋 СПИСОК НЕ ВЕРИФИЦИРОВАННЫХ
**Кнопка «📋 Список не вериф.»** → пользователи с отозванной верификацией
---
## 🏠 ПОЛЬЗОВАТЕЛЬСКОЕ МЕНЮ
### Вызов: `/start` или кнопка «🔙 В главное меню»
```
🏠 ГЛАВНОЕ МЕНЮ ЖИЛЬЦА
[📞 Экстренные телефоны]
[👷 Мастера] [👮 Участковый]
[📅 График отключений] [📢 Объявления]
[🏆 Достижения] [📅 События]
[💰 Платежи] [📋 Опросы]
[🔍 Моя квартира] [📣 Подать объявление]
[📊 Токсичность] [🏠 Темы чата]
[🙏 Поблагодарить] [❓ Помощь]
```
---
### 🙏 ПОБЛАГОДАРИТЬ
**Кнопка «🙏 Поблагодарить»** → выбор пользователя:
```
🙏 Поблагодарить пользователя
Выберите пользователя которому хотите сказать спасибо:
(+10 к рейтингу)
🙏 Иван (кв. 45)
🙏 Мария (кв. 12)
🙏 Пётр (кв. 88)
⬅️ ➡️
🔙 Назад
```
**После выбора:**
```
🙏 Поблагодарить пользователя?
Иван (кв. 45)
Пользователь получит +10 к рейтингу.
[✅ Поблагодарить] [❌ Отмена]
```
**После подтверждения:**
- Пользователь получает +10 к рейтингу
- Вы можете поблагодарить ещё раз через 24 часа
- Нельзя поблагодарить самого себя
---
### 🏆 ДОСТИЖЕНИЯ
**Кнопка «🏆 Достижения»** → показывает ваши достижения (команда `/achievements`)
---
### 📅 СОБЫТИЯ
**Кнопка «📅 События»** → список событий дома (команда `/events`)
---
### 💰 ПЛАТЕЖИ
**Кнопка «💰 Платежи»** → список платежей ЖКХ (команда `/payments`)
---
### 📋 ОПРОСЫ
**Кнопка «📋 Опросы»** → активные опросы (команда `/polls`)
---
### 📊 ТОКСИЧНОСТЬ
**Кнопка «📊 Токсичность»** → топ-10 токсичных пользователей
---
### 🏠 ТЕМЫ ЧАТА
**Кнопка «🏠 Темы чата»** → статистика по темам чата (команда `/topics`)
---
### 🔍 МОЯ КВАРТИРА
**Кнопка «🔍 Моя квартира»** → информация о вашей квартире:
- Номер квартиры
- Статус верификации
- Рейтинг
- Уровень
---
### 📣 ПОДАТЬ ОБЪЯВЛЕНИЕ
**Кнопка «📣 Подать объявление»** → мастер создания объявления (команда `/ad`)
---
### 📅 ГРАФИК ОТКЛЮЧЕНИЙ
**Кнопка «📅 График отключений»** → расписание отключений (команда `/график`)
---
### 📢 ОБЪЯВЛЕНИЯ
**Кнопка «📢 Объявления»** → доска объявлений (команда `/ads`)
---
## 🎯 ПРЕИМУЩЕСТВА НОВОГО ИНТЕРФЕЙСА
| Было | Стало |
|------|-------|
| Нужно помнить команды | Всё в меню |
| Нужно вводить ID вручную | Выбор кнопками |
| Ошибки в синтаксисе | Невозможно ошибиться |
| Неочевидно что доступно | Все функции видны |
| Только slash-команды | Кнопки + slash (по желанию) |
| Нет пагинации | Пагинация на 20 элементов |
| Нет подтверждения действий | Подтверждение для важных действий |
---
## 🔧 ТЕХНИЧЕСКИЕ ДЕТАЛИ
### Пагинация:
- **20 пользователей** на странице
- Навигация: **⬅️ Назад** / **Вперёд ➡️**
- Инфо: **📄 Стр. X/Y**
### Состояния (FSM):
- Поиск квартиры
- Поиск пользователя
- Добавление стоп-слова
- Добавление домена
- Добавление паттерна
### Подтверждения:
- Бан пользователя (Да/Нет)
- Благодарность пользователя (Да/Нет)
---
## 🧪 ТЕСТИРОВАНИЕ
### Тест 1: Админ-меню
```bash
/admin
```
**Ожидаешь:** Меню со всеми кнопками
### Тест 2: Поиск квартиры
1. `/admin` → «🔍 Поиск» → «🏠 Поиск квартиры»
2. Введи: `45`
3. **Ожидаешь:** Список жильцов кв. 45
### Тест 3: Действия с пользователем
1. `/admin` → «👤 Действия»
2. Выбери пользователя из списка
3. Нажми «🚫 Забанить» → «✅ Да»
4. **Ожидаешь:** Пользователь забанен
### Тест 4: Стоп-слова
1. `/admin` → «⚠️ Предупреждения» → «📋 Стоп-слова»
2. Нажми на слово чтобы удалить
3. «➕ Добавить слово» → введи слово
4. **Ожидаешь:** Слово добавлено/удалено
### Тест 5: Поблагодарить
1. `/start` → «🙏 Поблагодарить»
2. Выбери пользователя
3. Подтверди благодарность
4. **Ожидаешь:** +10 к рейтингу пользователя
---
## 📝 ЗАМЕЧАНИЯ
### TODO (требует доработки):
- ⏳ Отозвать верификацию на 7 дней (требуется поле в БД)
- 📝 История профиля (интеграция с /history)
- ⚠️ Предупредить пользователя (интеграция с системой warning)
### Slash-команды (альтернатива):
Все slash-команды продолжают работать:
- `/stats`, `/spies`, `/users`, `/ban`, `/revoke` и т.д.
- Русские алиасы: `/статистика`, `/шпионы`, `/пользователи`
---
## 🚀 СЛЕДУЮЩИЕ ШАГИ
1. **Протестировать** все сценарии в бою
2. **Собрать фидбек** от админов и пользователей
3. **Доработать** TODO функции
4. **Добавить** новые кнопки по запросу
---
**ВСЁ ГОТОВО К ТЕСТИРОВАНИЮ! 🎉**