sequenceDiagram
participant U as Пользователь
participant B as Браузер (jsofl2)
participant N as Nginx
participant J as ref-jofl-service
participant DB as PostgreSQL (ref)
U->>B: Открывает приложение
B->>N: GET /
N->>B: index.html (SPA)
B->>N: POST /rest/jofl.doCheckSession.aws
N->>J: proxy
J->>DB: Проверка сессии
DB-->>J: Сессия не найдена
J-->>B: 401 / нет сессии
B->>U: Экран входа
U->>B: Вводит логин и пароль
B->>N: POST /rest/jofl.doHelo.aws
N->>J: proxy
J-->>B: OK (handshake)
B->>N: POST /rest/jofl.doLogin.aws
N->>J: proxy
J->>DB: Проверка учётных данных
DB-->>J: Аккаунт + роли + права
J-->>B: Сессия создана (id, язык)
B->>N: POST /rest/jofl.getMenu.aws
N->>J: proxy
J->>DB: Меню для аккаунта
DB-->>J: Дерево пунктов меню
J-->>B: JSON меню
B->>U: Главный экран с боковым меню
Note over B,J: При истечении сессии (1 час)
B->>N: Любой запрос
J-->>B: 401
B->>U: Оверлей "Сессия истекла"
U->>B: Повторный вход