diff --git a/docs/classes.puml b/docs/classes.puml new file mode 100644 index 0000000..ec91a6d --- /dev/null +++ b/docs/classes.puml @@ -0,0 +1,92 @@ +@startuml + +package models { + ' сущность Организация + class Organization { + - id : Long + - name: String + -- + getters + setters + } + + ' сущость Должность + class Position { + - id : Long + - name : String + - organization : Organization + -- + getters + setters + } + + ' сущность Аккаунт + class Account { + - id : Long + - code35 : String + - position : Position + - attampt : List + -- + getters + setters + } + + ' сущность Попытки входа + class Attampt { + - id : Long + - sessionId : String + -- + getters + setters + } +} +package repository { + interface RemoteRepository{ + - client : WebClient + -- + + organizationsPage() Page + + organizationsList() List + + positions() List + + positions(Organization org) Page + } + + class RemoteRepositoryImpl{ + - client : WebClient + -- + + organizationsPage() Page + + organizationsList() List + + positions() List + + positions(Organization org) Page + } + RemoteRepositoryImpl -> RemoteRepository +} + + +package controllers{ + class MainframeController { + {static} log : Logger + - repo : RemoteRepository + -- + + getMainframe() : String + } + + class AuthController { + {static} log : Logger + + } + +} + + +Position o-- Organization +Account o-- Position +Account o-- Attampt +MainframeController o-- RemoteRepository + +AuthController o-- RemoteRepository + + + + + +@enduml \ No newline at end of file diff --git a/docs/states.puml b/docs/states.puml new file mode 100644 index 0000000..15d3ec5 --- /dev/null +++ b/docs/states.puml @@ -0,0 +1,109 @@ +@startuml +title "exam.main : диаграмма состояний (state)\n {структура графического интерфейса платформы}" +left to right direction + +[*] --> mainframe : exam-main (localhost:100) + +' mainframe +state "mainframe" as mainframe { + state "fragment: authorization" as authorization{ + authorization: - поле для внесения кода попытки + authorization: - кнопка перехода к продолжению существующей попытки (курсу) + authorization: фрагмент может быть скрыт от пользователя, если хотим исключить \nвозможность входа по коду попытки + + } + state "fragment: registration" as registration { + registration: - селект наименования организации + registration: - селект наименования должности + registration: - кнопка перехода к новой попытке (курсу) + } + state "fragment: hello" as hello { + hello : - Приветствие (*.md статический контент) + hello : - Коментарии для новых пользователей (*.md статический контент) + hello : - Пояснения по обработке персональных данных (*.md статический контент) + } + state "hidden: session active" as active +} + +registration --> access : наименование организации и должность +authorization --> access : код попытки +active --> access : id текущей сессии + +state "Проверка доступа" as access { + access: проверка наличия кода попытки в базе + access: проверка наличия текущей сессии в базе + access: создание нового аккаунта + access: переход к аккаунту + access: переход к mainframe +} +access --> mainframe : запрошенный аккаунт отсутствует +access --> account : направление пользователя к запрошенному аккаунту + +state "Назначенные курсы" 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 "Курс" as course { + + state "fragment: 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 "Вопос" as question { + question: тело вопроса + question: варианты ответа + question: переход к следующему вопросу + question: переход к главной странице опроса + question: переход к курсам +} + +question --> quiz : запросить следующий вопрос, если есть +question --> course : продолжить изучение +' question --> account : выбрать другой курс + + + + + + +@enduml \ No newline at end of file diff --git a/out/docs/states/states.png b/out/docs/states/states.png new file mode 100644 index 0000000..2eb0f91 Binary files /dev/null and b/out/docs/states/states.png differ