Добавил архитектуру админки Pulse
Этот коммит содержится в:
@@ -0,0 +1,163 @@
|
|||||||
|
# Pulse Admin Panel
|
||||||
|
|
||||||
|
Дата: 2026-05-09
|
||||||
|
Репозиторий: viktor138irk/SWChat
|
||||||
|
Связанный клиент: viktor138irk/SWChat-App
|
||||||
|
|
||||||
|
## Цель
|
||||||
|
|
||||||
|
Pulse Admin Panel — собственная серверная админка StackWorks поверх Matrix/Synapse.
|
||||||
|
|
||||||
|
Задача:
|
||||||
|
- не зависеть полностью от стандартной Synapse Admin UI;
|
||||||
|
- скрыть Matrix-сложность;
|
||||||
|
- получить нормальную Telegram-like админку для Pulse.
|
||||||
|
|
||||||
|
## Архитектура
|
||||||
|
|
||||||
|
```text
|
||||||
|
Pulse Admin Panel
|
||||||
|
↓
|
||||||
|
Pulse Backend API
|
||||||
|
↓
|
||||||
|
Synapse Admin API
|
||||||
|
↓
|
||||||
|
PostgreSQL / Matrix
|
||||||
|
```
|
||||||
|
|
||||||
|
## Рекомендуемый стек
|
||||||
|
|
||||||
|
### Backend
|
||||||
|
|
||||||
|
- PHP 8.3
|
||||||
|
- Laravel или собственный lightweight backend
|
||||||
|
- Redis позже
|
||||||
|
- PostgreSQL/MySQL для служебных данных Pulse
|
||||||
|
|
||||||
|
### Frontend
|
||||||
|
|
||||||
|
- Blade + Alpine.js
|
||||||
|
или
|
||||||
|
- Vue/Nuxt позже
|
||||||
|
|
||||||
|
На MVP лучше:
|
||||||
|
|
||||||
|
```text
|
||||||
|
PHP + Blade + Alpine.js
|
||||||
|
```
|
||||||
|
|
||||||
|
Потому что:
|
||||||
|
- быстрее;
|
||||||
|
- проще деплой;
|
||||||
|
- проще поддержка;
|
||||||
|
- меньше зависимостей.
|
||||||
|
|
||||||
|
## Домен
|
||||||
|
|
||||||
|
```text
|
||||||
|
admin-chat.stackworks.ru
|
||||||
|
```
|
||||||
|
|
||||||
|
## Авторизация
|
||||||
|
|
||||||
|
Только через отдельный Pulse Admin login.
|
||||||
|
|
||||||
|
Не использовать Matrix user login напрямую как web-session.
|
||||||
|
|
||||||
|
Нужно:
|
||||||
|
- отдельная таблица admin users;
|
||||||
|
- роли;
|
||||||
|
- audit log;
|
||||||
|
- IP logging;
|
||||||
|
- rate limits.
|
||||||
|
|
||||||
|
## Роли
|
||||||
|
|
||||||
|
### Super Admin
|
||||||
|
|
||||||
|
Полный доступ.
|
||||||
|
|
||||||
|
### Moderator
|
||||||
|
|
||||||
|
Может:
|
||||||
|
- блокировать пользователей;
|
||||||
|
- смотреть жалобы;
|
||||||
|
- модерировать комнаты.
|
||||||
|
|
||||||
|
Не может:
|
||||||
|
- менять серверные настройки;
|
||||||
|
- удалять админов.
|
||||||
|
|
||||||
|
### Support
|
||||||
|
|
||||||
|
Может:
|
||||||
|
- смотреть профили;
|
||||||
|
- помогать с аккаунтами;
|
||||||
|
- сбрасывать пароли.
|
||||||
|
|
||||||
|
## MVP функции
|
||||||
|
|
||||||
|
### Пользователи
|
||||||
|
|
||||||
|
- список пользователей;
|
||||||
|
- поиск по username/display name;
|
||||||
|
- просмотр профиля;
|
||||||
|
- блокировка;
|
||||||
|
- разблокировка;
|
||||||
|
- reset password;
|
||||||
|
- forced logout;
|
||||||
|
- просмотр устройств.
|
||||||
|
|
||||||
|
### Чаты
|
||||||
|
|
||||||
|
- список комнат;
|
||||||
|
- просмотр участников;
|
||||||
|
- просмотр статистики;
|
||||||
|
- room moderation;
|
||||||
|
- room lock.
|
||||||
|
|
||||||
|
### Жалобы
|
||||||
|
|
||||||
|
- user reports;
|
||||||
|
- media reports;
|
||||||
|
- spam detection позже.
|
||||||
|
|
||||||
|
### Система
|
||||||
|
|
||||||
|
- состояние Synapse;
|
||||||
|
- PostgreSQL status;
|
||||||
|
- Docker status;
|
||||||
|
- диск;
|
||||||
|
- RAM;
|
||||||
|
- push gateway status.
|
||||||
|
|
||||||
|
## Будущие функции
|
||||||
|
|
||||||
|
- телефонная регистрация;
|
||||||
|
- server-side key backup;
|
||||||
|
- media moderation AI;
|
||||||
|
- антиспам;
|
||||||
|
- analytics;
|
||||||
|
- графики активности;
|
||||||
|
- invite system;
|
||||||
|
- платные функции;
|
||||||
|
- verified accounts.
|
||||||
|
|
||||||
|
## Важное правило
|
||||||
|
|
||||||
|
Админка должна быть отдельным модулем.
|
||||||
|
|
||||||
|
Нельзя:
|
||||||
|
- править production Synapse руками;
|
||||||
|
- использовать raw admin endpoints без backend validation;
|
||||||
|
- хранить admin secrets в клиенте.
|
||||||
|
|
||||||
|
## Следующий шаг
|
||||||
|
|
||||||
|
1. Создать backend skeleton.
|
||||||
|
2. Добавить `/api/admin/*`.
|
||||||
|
3. Подключить Synapse Admin API.
|
||||||
|
4. Сделать login screen.
|
||||||
|
5. Сделать dashboard.
|
||||||
|
6. Сделать users table.
|
||||||
|
7. Сделать roles.
|
||||||
Ссылка в новой задаче
Block a user