|
|
|
@startuml
|
|
|
|
title "exam.main : диаграмма состояний (state)\n {структура графического интерфейса платформы}"
|
|
|
|
left to right direction
|
|
|
|
|
|
|
|
[*] --> mainframe : exam-main (localhost:100)
|
|
|
|
|
|
|
|
' mainframe
|
|
|
|
state "Страница входа (mainframe)" as mainframe {
|
|
|
|
state "fragment: login" as login{
|
|
|
|
login: - поле для внесения кода попытки
|
|
|
|
login: - кнопка перехода к продолжению существующей попытки (курсу)
|
|
|
|
login: фрагмент может быть скрыт от пользователя, если хотим исключить \nвозможность входа по коду попытки
|
|
|
|
state "hidden: Аутентификация" as authentification
|
|
|
|
state "hidden: Авторизация" as authorization
|
|
|
|
state "hidden: session active" as active
|
|
|
|
}
|
|
|
|
state "fragment: registration" as registration {
|
|
|
|
registration: - селект наименования организации
|
|
|
|
registration: - селект наименования должности
|
|
|
|
registration: - кнопка перехода к новой попытке (курсу)
|
|
|
|
}
|
|
|
|
state "static: hello" as hello {
|
|
|
|
hello : - Приветствие (*.md статический контент)
|
|
|
|
hello : - Коментарии для новых пользователей (*.md статический контент)
|
|
|
|
hello : - Пояснения по обработке персональных данных (*.md статический контент)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
authorization --> access : id аккаунта
|
|
|
|
registration --> access : наименование организации и должность
|
|
|
|
|
|
|
|
active --> access : id текущей сессии
|
|
|
|
|
|
|
|
state "Проверка доступа (access)" as access {
|
|
|
|
access: проверка наличия кода попытки в базе
|
|
|
|
access: проверка наличия текущей сессии в базе
|
|
|
|
access: создание нового аккаунта
|
|
|
|
access: переход к аккаунту
|
|
|
|
access: переход к mainframe
|
|
|
|
}
|
|
|
|
access --> mainframe : запрошенный аккаунт отсутствует
|
|
|
|
access --> account : направление пользователя к запрошенному аккаунту
|
|
|
|
|
|
|
|
state "Аккаунт (account)" as account {
|
|
|
|
account: - ID попытки
|
|
|
|
account: - перечень доступных курсов
|
|
|
|
account: - выход из id (сброс сессии)
|
|
|
|
state "fragment: courses" as courses {
|
|
|
|
courses: - перечень назначенных курсов
|
|
|
|
courses: - статус о завершении курса
|
|
|
|
courses: - переход к выбранному курсу
|
|
|
|
}
|
|
|
|
state "fragment: info" as info {
|
|
|
|
info: - Код попытки / пользователя
|
|
|
|
info: - Наименование организации
|
|
|
|
info: - Наименование должности
|
|
|
|
}
|
|
|
|
state "fragment: exit" as exit{
|
|
|
|
exit: - выйти из аккаунта (сбросить сессию)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
exit --> mainframe : сброс сессии и возврат на главную страницу
|
|
|
|
|
|
|
|
state "Курс (course)" as course {
|
|
|
|
|
|
|
|
state "static: content" as courseContent {
|
|
|
|
courseContent: статический контент *.md
|
|
|
|
courseContent: - img
|
|
|
|
courseContent: - video
|
|
|
|
courseContent: - links
|
|
|
|
courseContent: - text
|
|
|
|
courseContent: - docs
|
|
|
|
}
|
|
|
|
|
|
|
|
state "fragment: controls" as courseControls {
|
|
|
|
courseControls: переход к первому вопросу
|
|
|
|
courseControls: переход к аккаунту
|
|
|
|
}
|
|
|
|
|
|
|
|
state "hidden: Опрос" as quiz {
|
|
|
|
quiz: скрытая форма:
|
|
|
|
quiz: - скрытый список назначенных вопросов
|
|
|
|
quiz: - редирект на следующий вопрос
|
|
|
|
quiz: - если вопросы закончились, редирект на аккаунт
|
|
|
|
}
|
|
|
|
}
|
|
|
|
courses --> course : переход к изучению материалов
|
|
|
|
courseControls --> account : переход к списку доступных курсов (аккаунту)
|
|
|
|
|
|
|
|
courseControls --> question : запрос первого вопроса
|
|
|
|
quiz --> question : следющий вопрос
|
|
|
|
|
|
|
|
state "Вопос (question)" as question {
|
|
|
|
question: тело вопроса
|
|
|
|
question: варианты ответа
|
|
|
|
question: переход к следующему вопросу
|
|
|
|
question: переход к главной странице опроса
|
|
|
|
question: переход к курсам
|
|
|
|
}
|
|
|
|
|
|
|
|
question --> quiz : запросить следующий вопрос, если есть
|
|
|
|
question --> course : продолжить изучение
|
|
|
|
' question --> account : выбрать другой курс
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@enduml
|