Skip to content

Пользовательские сценарии (flows)

Последняя сверка с кодом: 2026-06-06
Диаграммы для QA, аналитиков и дизайнеров. Детали прав — 04-roles-and-access.


F1. Гость: QR → альбом → upload

mermaid
sequenceDiagram
  actor Guest
  participant Web as Nuxt /:id
  participant API as Express
  participant TUS as /api/tus

  Guest->>Web: Скан QR / открыть ссылку
  Web->>API: GET /events/:id
  Web->>API: GET /events/:id/media
  Guest->>Web: Имя (опц.) GuestNameModal
  Guest->>Web: Upload фото
  Web->>TUS: Чанки TUS
  TUS->>API: onUploadFinish → Media
  API-->>Web: SSE new media
  Web->>Guest: Фото в сетке

F2. Организатор: регистрация → событие → share

mermaid
flowchart LR
  A[Лендинг /] --> B{Залогинен?}
  B -->|нет| C[AuthModal Register]
  C --> D[POST /api/auth/sign-up]
  B -->|да| E[CreateEventForm]
  D --> E
  E --> F[POST /api/events]
  F --> G["/:id/share"]
  G --> H[QR + ссылки гостям]

F3. Auth: вход и защита аккаунта

mermaid
flowchart TD
  U[User → /account] --> M[middleware auth]
  M -->|нет session| H[handleUnauthenticatedAccess]
  H --> R[redirect /]
  H --> MOD[AuthModal login]
  MOD --> S[POST sign-in/email]
  S --> C[/account OK]
  M -->|session OK| C

F4. MEMBER: join по инвайту

mermaid
sequenceDiagram
  actor User
  participant Join as /:id/join
  participant API as Express

  User->>Join: Ссылка ?token=…
  alt Не залогинен
    Join->>User: AuthModal
    User->>API: sign-in / register
  end
  User->>Join: Подтвердить join
  Join->>API: POST /events/:id/join
  API-->>Join: EventRole MEMBER
  Join->>User: Redirect /:id альбом

F5. Модерация

mermaid
flowchart LR
  U[Guest upload] --> P[PENDING media]
  P --> Q["/:id/moderate"]
  Q --> A{MODERATOR/OWNER}
  A -->|Approve| AP[APPROVED → album]
  A -->|Reject| RJ[REJECTED → скрыто]
  AP --> SSE[SSE → wall/album]

F6. Wall (слайдшоу)

mermaid
sequenceDiagram
  participant TV as Browser /:id/wall
  participant API as Express

  TV->>API: GET /events/:id/media
  TV->>API: EventSource /events/:id/stream
  loop Новое фото
    API-->>TV: SSE media.created
    TV->>TV: SlideshowPlayer next slide
  end

F7. Сброс пароля

mermaid
sequenceDiagram
  actor User
  participant Modal as AuthModal
  participant Auth as Better Auth
  participant Email as Zoho SMTP

  User->>Modal: Forgot password
  Modal->>Auth: request reset
  Auth->>Email: Письмо с link
  User->>User: /reset-password?token=
  User->>Modal: Reset view + новый пароль
  Modal->>Auth: reset password

Redirect stub: 21-auth-frontend.md.


F8. SUPER_ADMIN: платформа

mermaid
flowchart TD
  A[/admin/users] --> B[require-super-admin]
  B --> C[GET /api/admin/users]
  D[/admin/events] --> E[GET /api/admin/events]
  F[/admin/plans] --> G[GET /api/admin/plans]

Sidebar: useAdminNav → блок «Platform» только при isSuperAdmin.


F9. Удаление медиа

КтоЧто может удалить
GUEST
MEMBERТолько свои upload
MODERATOR / OWNERЛюбое в событии
SUPER_ADMINЛюбое (API)

UI: admin grid, album (если canDelete в media item).


F10. Ошибки доступа (без /403 page)

mermaid
flowchart TD
  R[Route middleware] --> E{401/403?}
  E -->|cabinet layout| I[UiPageError inline]
  E -->|album page| P[resolvePageLoadError]
  P --> L[Кнопка login → auth modal]