Role Model¶
Ролевая модель платформы AqStream.
Обзор¶
flowchart TB
subgraph Platform["Уровень платформы"]
Guest["👤 Гость"]
User["👤 Пользователь"]
PlatformAdmin["👑 Админ платформы"]
end
subgraph Organization["Уровень организации"]
Owner["🏢 Владелец"]
Moderator["🛡️ Модератор"]
end
subgraph Group["Уровень группы"]
GroupMember["👥 Участник группы"]
end
subgraph Event["Уровень события"]
PublicEvent["🎫 Публичное событие"]
PrivateEvent["🔒 Приватное событие"]
end
Guest -->|"Регистрация"| User
User -->|"Запрос + одобрение + создание"| Owner
Owner -->|"Приглашение"| Moderator
Owner & Moderator -->|"Создание группы + инвайт"| GroupMember
User -->|"Инвайт в группу"| GroupMember
Owner & Moderator -->|"Создание"| PublicEvent & PrivateEvent
User -->|"Регистрация"| PublicEvent
GroupMember -->|"Регистрация"| PrivateEvent
Уровень платформы¶
Роли, определяющие базовый доступ к платформе.
flowchart LR
Guest["Гость"] -->|"Регистрация"| User["Пользователь"]
User -->|"Запрос одобрен + создание организации"| Owner["Владелец"]
Матрица прав¶
| Возможность | Гость | Пользователь | Админ |
|---|---|---|---|
| Просмотр публичных событий | ✓ | ✓ | ✓ |
| Создание аккаунта | ✓ | — | — |
| Регистрация на события | — | ✓ | ✓ |
| Личный кабинет | — | ✓ | ✓ |
| История событий | — | ✓ | ✓ |
| Управление билетами | — | ✓ | ✓ |
| Запрос на создание организации | — | ✓ | ✓ |
| Настройки профиля | — | ✓ | ✓ |
| Настройки уведомлений | — | ✓ | ✓ |
| Одобрение запросов на организации | — | — | ✓ |
| Управление пользователями | — | — | ✓ |
| Управление организациями | — | — | ✓ |
| Модерация событий | — | — | ✓ |
| Системные настройки | — | — | ✓ |
| Просмотр логов | — | — | ✓ |
| Метрики платформы | — | — | ✓ |
Как создать организацию: 1. Пользователь отправляет запрос на создание организации 2. Админ платформы рассматривает запрос 3. При одобрении — пользователь создаёт организацию и становится её Владельцем
Уровень организации¶
Роли внутри организации. Пользователь может иметь разные роли в разных организациях.
flowchart LR
Owner["Владелец"] -->|"Назначает"| Moderator["Модератор"]
Владелец (Owner)¶
Создатель организации с полным контролем.
- Один владелец на организацию
- Может передать владение другому пользователю
- Единственный, кто может удалить организацию
Модератор¶
Управляет организацией и событиями.
- Приглашает и удаляет членов (кроме владельца)
- Создаёт и редактирует события
- Проводит check-in
- Доступ к аналитике
Матрица прав¶
| Право | Владелец | Модератор |
|---|---|---|
| Удаление организации | ✓ | — |
| Передача владения | ✓ | — |
| Редактирование организации | ✓ | ✓ |
| Приглашение членов | ✓ | ✓ |
| Удаление членов | ✓ | ✓* |
| Назначение ролей | ✓ | — |
| Создание групп | ✓ | ✓ |
| Удаление групп | ✓ | — |
| Приглашение в группы | ✓ | ✓ |
| Создание событий | ✓ | ✓ |
| Редактирование событий | ✓ | ✓ |
| Отмена событий | ✓ | ✓ |
| Check-in | ✓ | ✓ |
| Просмотр регистраций | ✓ | ✓ |
| Просмотр аналитики | ✓ | ✓ |
| Экспорт данных | ✓ | ✓ |
*Модератор не может удалить владельца
Группы¶
Группы позволяют ограничивать видимость событий внутри организации.
flowchart TB
subgraph Org["Организация"]
Owner["Владелец"]
Mod["Модератор"]
subgraph Groups["Группы"]
G1["Saratov Team"]
G2["Moscow Team"]
end
subgraph Events["События"]
E1["Публичное событие"]
E2["Событие для Saratov"]
E3["Событие для Moscow"]
end
end
Owner & Mod -->|"Создают"| G1 & G2
Owner & Mod -->|"Создают"| E1 & E2 & E3
G1 -.->|"Видит"| E2
G2 -.->|"Видит"| E3
Зачем нужны группы¶
- Приватные события для определённой аудитории
- Региональные команды внутри организации
- VIP-доступ к событиям
- Корпоративные мероприятия для сотрудников
Участник группы¶
Пользователь, добавленный в группу по инвайту.
| Возможность | Доступ |
|---|---|
| Просмотр событий группы | ✓ |
| Регистрация на события группы | ✓ |
| Выход из группы | ✓ |
Особенности: - Один пользователь может состоять в нескольких группах - Группы принадлежат организации - Владелец и модераторы видят все события (включая групповые)
Приглашение в группу¶
- Владелец/модератор создаёт группу
- Генерируется уникальный инвайт-код
- Пользователь переходит по ссылке
- Становится участником группы
Видимость событий¶
| Тип события | Кто видит |
|---|---|
| Публичное | Все пользователи |
| Групповое | Участники группы + Владелец/Модератор |
Уровень события¶
Контекстные роли в рамках конкретного события.
Участник события¶
Пользователь, зарегистрированный на событие.
| Возможность | Доступ |
|---|---|
| Просмотр своего билета | ✓ |
| Отмена регистрации | ✓ |
| Просмотр информации о событии | ✓ |
| Список участников* | По настройке события |
*Видимость списка участников настраивается организатором (открытая/закрытая)
Жизненный цикл пользователя¶
stateDiagram-v2
[*] --> Гость
Гость --> Пользователь: Регистрация на платформе
Пользователь --> Владелец: Запрос одобрен + создание организации
Пользователь --> Участник: Регистрация на событие
Пользователь --> УчастникГруппы: Инвайт в группу
Владелец --> Пользователь: Удаление/выход из организации
state "В организации" as InOrg {
Владелец --> Модератор: Передача владения
}
Назначение ролей¶
Приглашение в организацию¶
- Владелец или модератор отправляет приглашение через Telegram
- Приглашённый получает уведомление с ссылкой
- При принятии — становится модератором
Изменение роли¶
- Только владелец может назначать/снимать роли
- При передаче владения — старый владелец становится модератором
Изоляция данных¶
flowchart TB
subgraph Tenant1["Организация A"]
O1["Владелец A"]
E1["События A"]
R1["Регистрации A"]
end
subgraph Tenant2["Организация B"]
O2["Владелец B"]
E2["События B"]
R2["Регистрации B"]
end
O1 --> E1 --> R1
O2 --> E2 --> R2
O1 -.->|"Нет доступа"| E2
O2 -.->|"Нет доступа"| E1
Каждая организация — отдельный tenant: - Данные изолированы через Row Level Security - Пользователь видит только данные своих организаций - Админ платформы видит всё
Дальнейшее чтение¶
- User Journeys — сценарии использования
- Functional Requirements — функциональные требования