@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