Skip to content

shuuuurik/Web-Applicaion_Experts

Repository files navigation

Веб-приложение "Experts"

Предментая область: Поиск специалиста

Этап 1

Требования

  • Приложение должно быть разработано с использованием языка программирования Kotlin.
  • Приложение должно использовать актуальную версию библиотеки http4k.
  • Просмотр документов должен осуществляться через обработку и отправку GET-запросов.
  • Операции по редактированию данных, в том числе по добавлению, должны осуществляться с помощью POST-запросов.
  • Для стилизации элементов на странице необходимо использовать классы CSS-фреймворков, следует избегать ручного указания CSS-свойств.
  • Для формирования динамических HTML-документов необходимо использовать шаблонизатор Pebble.

Задача

Разработать веб-приложение, решающее задачу по управлению данными в указанной тематике. Приложение должно:

  • Отображать стартовую страницу с описанием предметной области.
  • Отображать список данных на отдельной странице.
  • Отображать детальную информацию об элементе на отдельной странице.
  • Позволять добавлять новый элемент в список данных. На настоящий момент без валидации переданных от пользователя данных.
  • На всех страницах должен присутствовать блок навигации, позволяющий переходить между стартовой страницей и страницами списков.

Сущности

Объявление
  • Дата и время добавления, формируется приложением автоматически.
  • Категория услуги, строка.
  • Название, строка.
  • Описание, многострочный текст.
  • ФИО специалиста, строка.
  • Образование, сертификация, многострочный текст.
  • Номер телефона, строка.

Этап 2

Требования

  • Приложение должно корректно обрабатывать неправильные данные от пользователя:
  • Всегда должны формироваться HTML-документы с корректным содержимым. Приложение не должно показывать исключительные ситуации, стеки вызова и прочее пользователю.
  • В случае отсутствия искомого документа должна отображаться соответствующая страница.
  • Для проверки параметров от пользователя рекомендуется использовать механизм линз библиотеки http4k. Также допускается ручная проверка параметров или привлечение других библиотек.
  • Страницы со списками данных должны корректно обрабатывать ситуацию отсутствия данных. Вместо пустой страницы должно присутствовать информационное сообщение о том, что соответствующих данных нет.
  • Приложение должно соответствовать требованиям к исходному коду, предоставляемыми актуальной версией инструмента ktlint.
  • Рекомендуется исправить все недостатки, на которые указывает инструмент detekt.
  • Для уникальной идентификации элементов в таблицах рекомендуется использовать автоматически увеличивающиеся поля.

Задача

Разработать веб-приложение, решающее задачу по управлению данными в указанной тематике. Приложение должно:

  1. Отображать стартовую страницу с описанием предметной области.
    1. Отобразить ER-диаграмму сущностей, которые используются в базе данных.
  2. Обеспечить управление несколькими (2 и более) связными списками данных. Для каждого отдельного списка необходимо:
    1. Отображать список на отдельной странице.
      • Список должен быть отсортирован по дате добавления элемента, если не указано иначе.
      • Элементы списка на данной странице должны показывать минимальный объём информации.
    2. На странице со списком реализовать постраничный вывод информации.
    3. На странице со списком обеспечить фильтрацию данных минимум по двум параметрам.
    4. Реализовать переход к странице с детальной информацией об элементе.
  3. На странице с детальной информацией об элементе необходимо.
    1. Отображать все поля элемента в удобном для восприятия виде.
    2. Реализовать переход к странице информации о связном элементе или списке элементов.
  4. Приложение должно позволять добавлять новые элементы в каждый отображаемый список. Необходимо обеспечить:
    1. Проверку данных во всех полях ввода.
    2. Указание связных объектов необходимо обеспечить с помощью выбора из выпадающего списка.
  5. Приложение должно предоставлять страницу со статистической информацией, подсчитанной относительно двух списков.
  6. На всех страницах должен присутствовать блок навигации, позволяющий переходить между стартовой страницей и страницами списков.

Сущности

Специалист
  • Дата и время добавления, формируется приложением автоматически.
  • ФИО специалиста, строка.
  • Образование, сертификация, многострочный текст.
  • Номер телефона, строка.
Категория услуги
  • Дата и время добавления, формируется приложением автоматически.
  • Название, строка.
Город
  • Название, строка.
Объявление
  • Дата и время добавления, формируется приложением автоматически.
  • Категория.
  • Название, строка.
  • Город.
  • Описание, многострочный текст.
  • Специалист.

Детали реализации

  • На страницах конкретных сущностей обеспечить переход на страницы всех связных сущностей.
  • На странице списка категорий показывать количество объявлений для данной категории.
  • На странице специалиста отображать все его объявления с постраничным выводом.
  • На странице специалиста обеспечить простое добавление нового объявления для данного специалиста.
  • На странице со списком объявлений обеспечить переход на страницу конкретного специалиста.
  • На стартовой странице отображать следующую информацию:
    • Количество специалистов.
    • Среднее количество объявлений на одного специалиста.
  • На странице города отображать список категорий в данном городе с указанием количества объявлений по каждой категории в этом городе. При выборе категории открывать список объявлений, отфильтрованный по выбранной категории и данному городу.

Этап 3

Требования

  • Запрещено использовать аттрибут required для полей ввода HTML-форм.
  • Для аутентификации пользователей необходимо использовать JWT-токены, которые необходимо сохранять в куках.
  • В рамках JWT-токена разрешено сохранять только идентификаторы пользователя, запрещено размещать информацию по ролям в сессионных токенах.
  • Запрещено использовать сессионные токены для решения любых задач кроме хранения аутентификационного токена.

Задача

Обеспечить различное поведение приложения в зависимости от указанной роли пользователя.

Роли

Гость
  • Просматривать стартовую страницу.
  • Просматривать список городов.
  • Просматривать список категорий.
  • Просматривать список объявлений без просмотра контактной информации специалиста.
  • Может зарегистрироваться в системе.
    • При регистрации пользователь указывает свой город.
  • Может авторизоваться в системе.
Зарегистрированный пользователь

Доступны все возможности роли «Гость».

  • Может на странице объявления просмотреть контактную информацию специалиста после выполнения специального действия (например, нажатия на кнопку).
  • По умолчанию информация по объявлениям должна отображаться для города, указанного пользователем при регистрации.
  • Может изменить город пребывания в своём профиле.
  • Может подать заявку на получение доступа на статус «Специалиста» по конкретной категории. Заявка должна включать:
    • Детальную контактную информацию.
    • Информацию об образовании.
    • Информацию о полученных удостоверениях.
    • Опыт работы в данной категории.
  • Может просматривать список своих заявок с указанием статуса: Новая, Подтверждена, Отклонена.
  • Может просматривать страницу конкретной заявки.
Администратор

Доступны все возможности роли «Гость».

  • Просматривать список заявок и страницу конкретной заявки.
  • Может подтверждать заявку.
  • Может отклонять заявку. При отклонении заявки необходимо указать причину отклонения в виде многострочного текстового комментария.
Специалист

Доступны все возможности роли «Зарегистрированный пользователь».

  • Может добавить новое объявление в категорию, для которой есть подтверждённая заявка.
    • При открытии формы добавления объявления поле для указания города должно быть заполнено данными из профиля.
    • Контактная информация, информация об образовании, удостоверения и опыт должны быть заполнены из соответствующей заявки.
  • Может редактировать своё объявление.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages