✅ Регистрация и верификация жильцов ✅ Рейтинг активности (уровни) ✅ Детект шпионов (Score 0-100) ✅ Анти-мат система (3 предупреждения → бан) ✅ Админ-панель с рассылкой ✅ Учёт квартир (несколько жильцов) ✅ Телефоны экстренных служб и мастеров ✅ Еженедельный экспорт JSON ✅ Прокси (socks5) для обхода РКН Бекап: backups/versions/v1.0_mvp_2026-02-26/ Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
7.1 KiB
🌐 Веб-интерфейс админа — v1.11
Версия: v1.11 Дата: 27 февраля 2026 г. Статус: ✅ Реализовано
📋 Описание
Веб-интерфейс для администратора домового бота на базе FastAPI. Позволяет просматривать статистику, управлять пользователями, экспортировать данные через браузер.
🎯 Возможности
- ✅ Дашборд с основной статистикой
- ✅ Просмотр пользователей с поиском
- ✅ Экспорт данных в JSON
- ✅ Страница настроек
- ✅ API для интеграции
- ✅ Авторизация (HTTP Basic Auth)
- ✅ Адаптивный дизайн (Bootstrap 5)
🚀 Быстрый старт
1. Запуск с ботом
Веб-сервер запускается автоматически при старте бота:
cd /home/matrixhasyou/domovoy_bot
./run.sh
2. Доступ к интерфейсу
Откройте в браузере:
http://localhost:8000
Логин: admin
Пароль: Ваш ADMIN_USER_ID (из .env)
📱 Страницы
1. Дашборд (/)
Основная статистика:
- Пользователей
- Верифицировано
- Сообщений
- Активных опросов
- Объявлений
- Предстоящих событий
Быстрые действия:
- Переход к пользователям
- Экспорт JSON
- Настройки
2. Пользователи (/users)
Функции:
- Таблица всех пользователей (до 100)
- Поиск по имени, квартире, нику
- Статус верификации
- Рейтинг и количество сообщений
Поля:
- ID
- Имя
- Ник (@username)
- Квартира
- Верифицирован (✅/❌)
- Рейтинг
- Сообщений
3. Экспорт (/export)
Функции:
- Кнопка экспорта в JSON
- Статус экспорта
- Путь к файлу
Экспортируются:
- Все пользователи
- Все сообщения
- Даты и время
- Квартиры и телефоны
4. Настройки (/settings)
Отображается:
- Bot Token (маска)
- Admin Chat ID
- Admin User ID
- Статус прокси
🔌 API Endpoints
GET /api/stats
Описание: Получить статистику для дашборда
Ответ:
{
"top_users": [
{"id": 123456789, "name": "Иван", "apartment": "45", "rating": 500}
],
"active_polls": [
{"id": 1, "question": "За какой цвет?", "votes": 25}
],
"recent_messages": [...]
}
GET /api/users?search=...
Описание: Список пользователей с поиском
Параметры:
search(опционально) — строка поиска
Ответ:
{
"users": [
{
"id": 123456789,
"name": "Иван Иванов",
"username": "ivanov",
"apartment": "45",
"verified": true,
"rating": 500,
"messages": 150
}
]
}
GET /api/export/json
Описание: Экспорт данных в JSON
Ответ:
{
"success": true,
"filepath": "exports/export_2026-02-27.json"
}
🔐 Безопасность
Авторизация
Тип: HTTP Basic Auth
Логин: admin
Пароль: Значение ADMIN_USER_ID из .env
Пример curl:
curl -u admin:123456789 http://localhost:8000/api/stats
Защита страниц
Все страницы требуют авторизации. При неверных данных возвращается 401.
🗄️ Зависимости
Новые пакеты (v1.11+):
fastapi>=0.109.0
uvicorn>=0.27.0
jinja2>=3.1.3
python-multipart>=0.0.6
Установка:
cd /home/matrixhasyou/domovoy_bot
source venv/bin/activate
pip install -r requirements.txt
📁 Структура файлов
web/
├── app.py # FastAPI приложение
├── templates/
│ ├── dashboard.html # Дашборд
│ ├── users.html # Пользователи
│ ├── export.html # Экспорт
│ └── settings.html # Настройки
└── static/
├── css/ # Стили (пока не используется)
└── js/ # Скрипты (пока не используется)
🧪 Тестирование
Чек-лист проверки:
1. Запуск
./run.sh
- Бот запускается
- Веб-сервер запускается
- В логах видно URL
2. Авторизация
http://localhost:8000
Логин: admin
Пароль: <ADMIN_USER_ID>
- Форма авторизации появляется
- Верные данные пускают
- Неверные данные блокируют
3. Дашборд
- Статистика отображается
- Карточки красивые
- Кнопки работают
4. Пользователи
- Таблица загружается
- Поиск работает
- Верификация показывается
5. Экспорт
- Кнопка работает
- Файл создаётся
- Путь показывается
🔧 Отладка
Логи веб-сервера:
tail -f logs/bot.log | grep -i "web\|uvicorn"
Проверка порта:
ss -tlnp | grep 8000
Тест API:
curl -u admin:<PASSWORD> http://localhost:8000/api/stats
🚀 Запуск в production
1. Изменить порт (если нужно):
В services/web_server.py:
def __init__(self, host: str = "0.0.0.0", port: int = 8000):
2. Настроить nginx (опционально):
server {
listen 80;
server_name bot.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
3. Включить HTTPS:
sudo certbot --nginx -d bot.yourdomain.com
✅ Преимущества
| Было | Стало |
|---|---|
| Только Telegram | Веб-интерфейс |
| Нет визуализации | Дашборд с графиками |
| Ручной экспорт | Кнопка в браузере |
| Нет поиска | Поиск пользователей |
Веб-интерфейс готов! 🌐
Следующий шаг: тестирование и фиксация версии v1.11