Lab Launch Sequence
%%{init: {"theme": "neutral", "themeVariables": {"fontFamily": "Times New Roman, serif"}, "sequence": {"mirrorActors": false, "wrap": true, "width": 160}}}%% sequenceDiagram participant Student as Студент participant BP as Прикладной сервис participant MQ as RabbitMQ participant WK as Обработчики (Celery) participant K8s as Kubernetes
Student->>BP: запрос на запуск среды
BP->>BP: проверка доступа (ABAC)
BP->>MQ: публикация задачи
BP-->>Student: принято (task_id, «ожидание»)
MQ->>WK: выдача задачи
WK->>K8s: создание ресурсов
K8s-->>WK: ресурсы готовы
WK->>BP: обновление статуса (запущена, connection_url)
Student->>BP: опрос статуса
BP-->>Student: адрес подключения (connection_url)
Er Learning
%%{init: {"theme": "neutral", "themeVariables": {"fontFamily": "Times New Roman, serif"}}}%% erDiagram organizations ||--o{ users : "" organizations ||--o{ groups : "" users ||--o{ group_students : "" groups ||--o{ group_students : "" users ||--o{ group_teachers : "" groups ||--o{ group_teachers : "" groups ||--o{ group_topics : "" topics ||--o{ group_topics : "" topics ||--o{ sections : "" sections ||--o{ subsections : "" topics ||--o{ tests : "" sections ||--o{ tests : "" topics ||--o{ questions : "" sections ||--o{ questions : "" tests ||--o{ test_questions : "" questions ||--o{ test_questions : "" users ||--o{ test_attempts : "" tests ||--o{ test_attempts : "" organizations { int id PK string name } users { int id PK string role int organization_id FK } groups { int id PK int organization_id FK } group_students { int group_id FK int user_id FK } group_teachers { int group_id FK int user_id FK } group_topics { int group_id FK int topic_id FK } topics { int id PK string title } sections { int id PK int topic_id FK } subsections { int id PK int section_id FK string type } tests { int id PK int topic_id FK int section_id FK string type } questions { int id PK int topic_id FK int section_id FK } test_questions { int test_id FK int question_id FK } test_attempts { int id PK int user_id FK int test_id FK string status }
Onboarding Sequence
%%{init: {"theme": "neutral", "themeVariables": {"fontFamily": "Times New Roman, serif"}, "sequence": {"mirrorActors": false, "wrap": true, "width": 180}}}%% sequenceDiagram participant FE as Клиент participant BE as Серверная часть participant KC as Keycloak participant DB as База данных