# 🌐 Веб-интерфейс админа — 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 Пароль: ``` - [ ] Форма авторизации появляется - [ ] Верные данные пускают - [ ] Неверные данные блокируют #### 3. Дашборд - [ ] Статистика отображается - [ ] Карточки красивые - [ ] Кнопки работают #### 4. Пользователи - [ ] Таблица загружается - [ ] Поиск работает - [ ] Верификация показывается #### 5. Экспорт - [ ] Кнопка работает - [ ] Файл создаётся - [ ] Путь показывается --- ## 🔧 Отладка ### Логи веб-сервера: ```bash tail -f logs/bot.log | grep -i "web\|uvicorn" ``` ### Проверка порта: ```bash ss -tlnp | grep 8000 ``` ### Тест API: ```bash curl -u admin: 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*