domovoy_bot/ВЕБ_ИНТЕРФЕЙС.md
Admin ba4676b0af v1.0 MVP - Инициализация проекта 🏠
 Регистрация и верификация жильцов
 Рейтинг активности (уровни)
 Детект шпионов (Score 0-100)
 Анти-мат система (3 предупреждения → бан)
 Админ-панель с рассылкой
 Учёт квартир (несколько жильцов)
 Телефоны экстренных служб и мастеров
 Еженедельный экспорт JSON
 Прокси (socks5) для обхода РКН

Бекап: backups/versions/v1.0_mvp_2026-02-26/

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 10:54:16 +00:00

333 lines
7.1 KiB
Markdown
Raw Permalink 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.

# 🌐 Веб-интерфейс админа — v1.11
**Версия:** v1.11
**Дата:** 27 февраля 2026 г.
**Статус:** ✅ Реализовано
---
## 📋 Описание
Веб-интерфейс для администратора домового бота на базе FastAPI. Позволяет просматривать статистику, управлять пользователями, экспортировать данные через браузер.
---
## 🎯 Возможности
- ✅ Дашборд с основной статистикой
- ✅ Просмотр пользователей с поиском
- ✅ Экспорт данных в JSON
- ✅ Страница настроек
- ✅ API для интеграции
- ✅ Авторизация (HTTP Basic Auth)
- ✅ Адаптивный дизайн (Bootstrap 5)
---
## 🚀 Быстрый старт
### 1. Запуск с ботом
Веб-сервер запускается автоматически при старте бота:
```bash
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`
**Описание:** Получить статистику для дашборда
**Ответ:**
```json
{
"top_users": [
{"id": 123456789, "name": "Иван", "apartment": "45", "rating": 500}
],
"active_polls": [
{"id": 1, "question": "За какой цвет?", "votes": 25}
],
"recent_messages": [...]
}
```
---
### GET `/api/users?search=...`
**Описание:** Список пользователей с поиском
**Параметры:**
- `search` (опционально) — строка поиска
**Ответ:**
```json
{
"users": [
{
"id": 123456789,
"name": "Иван Иванов",
"username": "ivanov",
"apartment": "45",
"verified": true,
"rating": 500,
"messages": 150
}
]
}
```
---
### GET `/api/export/json`
**Описание:** Экспорт данных в JSON
**Ответ:**
```json
{
"success": true,
"filepath": "exports/export_2026-02-27.json"
}
```
---
## 🔐 Безопасность
### Авторизация
**Тип:** HTTP Basic Auth
**Логин:** `admin`
**Пароль:** Значение `ADMIN_USER_ID` из `.env`
**Пример curl:**
```bash
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
```
### Установка:
```bash
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. Запуск
```bash
./run.sh
```
- [ ] Бот запускается
- [ ] Веб-сервер запускается
- [ ] В логах видно URL
#### 2. Авторизация
```
http://localhost:8000
Логин: admin
Пароль: <ADMIN_USER_ID>
```
- [ ] Форма авторизации появляется
- [ ] Верные данные пускают
- [ ] Неверные данные блокируют
#### 3. Дашборд
- [ ] Статистика отображается
- [ ] Карточки красивые
- [ ] Кнопки работают
#### 4. Пользователи
- [ ] Таблица загружается
- [ ] Поиск работает
- [ ] Верификация показывается
#### 5. Экспорт
- [ ] Кнопка работает
- [ ] Файл создаётся
- [ ] Путь показывается
---
## 🔧 Отладка
### Логи веб-сервера:
```bash
tail -f logs/bot.log | grep -i "web\|uvicorn"
```
### Проверка порта:
```bash
ss -tlnp | grep 8000
```
### Тест API:
```bash
curl -u admin:<PASSWORD> http://localhost:8000/api/stats
```
---
## 🚀 Запуск в production
### 1. Изменить порт (если нужно):
В `services/web_server.py`:
```python
def __init__(self, host: str = "0.0.0.0", port: int = 8000):
```
### 2. Настроить nginx (опционально):
```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:
```bash
sudo certbot --nginx -d bot.yourdomain.com
```
---
## ✅ Преимущества
| Было | Стало |
|------|-------|
| Только Telegram | **Веб-интерфейс** |
| Нет визуализации | **Дашборд с графиками** |
| Ручной экспорт | **Кнопка в браузере** |
| Нет поиска | **Поиск пользователей** |
---
**Веб-интерфейс готов! 🌐**
*Следующий шаг: тестирование и фиксация версии v1.11*