Для запуска проекта необходимо:
- Открыть папку проекта в терминале
- Открыть Docker
- Ввести в терминал команду для старта контейнера с приложением:
docker-compose up --build
Чтобы сохранить доступ к текущему терминалу, запустить команду:
docker-compose up --build -d
Может потребоваться запустить контейнер app отдельно (docker-compose up app
)
- Открыть адрес localhost:8080 в браузере
При запуске приложения открывается стартовая страница с выбором входа или регистрации. Если пользователь уже авторизован, выполняется переадресация на домашнюю страницу.
При нажатии на кнопку "РЕГИСТРАЦИЯ" выполняется переадресация на страницу регистрации. Необходимо ввести имя пользователя и дважды ввести пароль. Если имя пользователя не занято, и пароли совпадают, выполняется автоматический вход в аккаунт и переадресация на домашнюю страницу. Имя пользователя и его id в базе данных записываются в JWT токен, который сохраняется в cookie файл. Если пароли не совпадают, выводится сообщение "Пароли не совпадают!". В случае возникновения другой ошибки выводится сообщение "Ошибка регистрации!".
При нажатии на кнопку "ВХОД" выполняется переадресация на страницу входа. Необходимо ввести имя пользователя и пароль. Если пользватель найден и введенный пароль совпадает с паролемв базе данных, выполняется вход в аккаунт и переадресация на домашнюю страницу. Имя пользователя и его id в базе данных записываются в JWT токен, который сохраняется в cookie файл. В случае ошибки выводится сообщение "Ошибка входа!".
Все пароли хранятся в базе данных только в зашифрованном виде.
Токен действует на протяжении 12 часов после входа в аккаунт. После ичтечения срока действия токена необходимо снова войти в аккайнт.
Id пользователя передается в cookie файле с каждым запросом на сервер.
На верхней панели приложения находится кнопка "ВЫХОД". При нажатии на кнопку файл куки с токеном пользователя удаляется, выполняется переадресация на стартовую страницу.
Без входа в аккаунт недоступен просмотр вычисляемых выражений и добавление нового выражения для вычисления.
Для вычислений подходят только целые числа => операция деления - целочисленная
Для взаимодействия с сервером используется графический интерфей, представленный 4 страницами: "глвная страница", "установить время выполнения операций", "список выражений", "состояние серверов".
После нажатия на кнопку "отправить" на главной странице выражение и id пользователя POST запросом отправляется на оркестратор, где записывается в базу данных. Выражение разбивается на мелкие подвыражения, которые при получении GET запроса отправляются на агента, который отправляет полученное выражение вычислителям и записывает ответ в базу данных.
На странице "установить время выполнения операций" можно установить время выполнения разрешенных операций, а так же время жизни сервера (по умолчанию установлено 60 секунд). Ограничения записываются в базу данных, из которой их получает агент.
На странице "список выражений" находится список недавних выражений, их статус и ответ (при наличии). В случае, если выражение сожержит символы кроме разрешенных, выражение не обрабатывается, и вместо выражния выводится "Выражение невалидно"
На странице "состояние серверов" находится список серверов и их состояние.
Развернуть для просмотра:
Страницы
2+2
Ответ: 4
2+2*2
Ответ: 6
20-10/5
Ответ: 18
Если возникнут вопросы, Telegram: @I_ivab