Предментая область: Поиск специалиста
- Приложение должно быть разработано с использованием языка программирования Kotlin.
- Приложение должно использовать актуальную версию библиотеки http4k.
- Просмотр документов должен осуществляться через обработку и отправку GET-запросов.
- Операции по редактированию данных, в том числе по добавлению, должны осуществляться с помощью POST-запросов.
- Для стилизации элементов на странице необходимо использовать классы CSS-фреймворков, следует избегать ручного указания CSS-свойств.
- Для формирования динамических HTML-документов необходимо использовать шаблонизатор Pebble.
Разработать веб-приложение, решающее задачу по управлению данными в указанной тематике. Приложение должно:
- Отображать стартовую страницу с описанием предметной области.
- Отображать список данных на отдельной странице.
- Отображать детальную информацию об элементе на отдельной странице.
- Позволять добавлять новый элемент в список данных. На настоящий момент без валидации переданных от пользователя данных.
- На всех страницах должен присутствовать блок навигации, позволяющий переходить между стартовой страницей и страницами списков.
- Дата и время добавления, формируется приложением автоматически.
- Категория услуги, строка.
- Название, строка.
- Описание, многострочный текст.
- ФИО специалиста, строка.
- Образование, сертификация, многострочный текст.
- Номер телефона, строка.
- Приложение должно корректно обрабатывать неправильные данные от пользователя:
- Всегда должны формироваться HTML-документы с корректным содержимым. Приложение не должно показывать исключительные ситуации, стеки вызова и прочее пользователю.
- В случае отсутствия искомого документа должна отображаться соответствующая страница.
- Для проверки параметров от пользователя рекомендуется использовать механизм линз библиотеки http4k. Также допускается ручная проверка параметров или привлечение других библиотек.
- Страницы со списками данных должны корректно обрабатывать ситуацию отсутствия данных. Вместо пустой страницы должно присутствовать информационное сообщение о том, что соответствующих данных нет.
- Приложение должно соответствовать требованиям к исходному коду, предоставляемыми актуальной версией инструмента ktlint.
- Рекомендуется исправить все недостатки, на которые указывает инструмент detekt.
- Для уникальной идентификации элементов в таблицах рекомендуется использовать автоматически увеличивающиеся поля.
Разработать веб-приложение, решающее задачу по управлению данными в указанной тематике. Приложение должно:
- Отображать стартовую страницу с описанием предметной области.
- Отобразить ER-диаграмму сущностей, которые используются в базе данных.
- Обеспечить управление несколькими (2 и более) связными списками данных. Для каждого отдельного списка необходимо:
- Отображать список на отдельной странице.
- Список должен быть отсортирован по дате добавления элемента, если не указано иначе.
- Элементы списка на данной странице должны показывать минимальный объём информации.
- На странице со списком реализовать постраничный вывод информации.
- На странице со списком обеспечить фильтрацию данных минимум по двум параметрам.
- Реализовать переход к странице с детальной информацией об элементе.
- Отображать список на отдельной странице.
- На странице с детальной информацией об элементе необходимо.
- Отображать все поля элемента в удобном для восприятия виде.
- Реализовать переход к странице информации о связном элементе или списке элементов.
- Приложение должно позволять добавлять новые элементы в каждый отображаемый список. Необходимо обеспечить:
- Проверку данных во всех полях ввода.
- Указание связных объектов необходимо обеспечить с помощью выбора из выпадающего списка.
- Приложение должно предоставлять страницу со статистической информацией, подсчитанной относительно двух списков.
- На всех страницах должен присутствовать блок навигации, позволяющий переходить между стартовой страницей и страницами списков.
- Дата и время добавления, формируется приложением автоматически.
- ФИО специалиста, строка.
- Образование, сертификация, многострочный текст.
- Номер телефона, строка.
- Дата и время добавления, формируется приложением автоматически.
- Название, строка.
- Название, строка.
- Дата и время добавления, формируется приложением автоматически.
- Категория.
- Название, строка.
- Город.
- Описание, многострочный текст.
- Специалист.
- На страницах конкретных сущностей обеспечить переход на страницы всех связных сущностей.
- На странице списка категорий показывать количество объявлений для данной категории.
- На странице специалиста отображать все его объявления с постраничным выводом.
- На странице специалиста обеспечить простое добавление нового объявления для данного специалиста.
- На странице со списком объявлений обеспечить переход на страницу конкретного специалиста.
- На стартовой странице отображать следующую информацию:
- Количество специалистов.
- Среднее количество объявлений на одного специалиста.
- На странице города отображать список категорий в данном городе с указанием количества объявлений по каждой категории в этом городе. При выборе категории открывать список объявлений, отфильтрованный по выбранной категории и данному городу.
- Запрещено использовать аттрибут required для полей ввода HTML-форм.
- Для аутентификации пользователей необходимо использовать JWT-токены, которые необходимо сохранять в куках.
- В рамках JWT-токена разрешено сохранять только идентификаторы пользователя, запрещено размещать информацию по ролям в сессионных токенах.
- Запрещено использовать сессионные токены для решения любых задач кроме хранения аутентификационного токена.
Обеспечить различное поведение приложения в зависимости от указанной роли пользователя.
- Просматривать стартовую страницу.
- Просматривать список городов.
- Просматривать список категорий.
- Просматривать список объявлений без просмотра контактной информации специалиста.
- Может зарегистрироваться в системе.
- При регистрации пользователь указывает свой город.
- Может авторизоваться в системе.
Доступны все возможности роли «Гость».
- Может на странице объявления просмотреть контактную информацию специалиста после выполнения специального действия (например, нажатия на кнопку).
- По умолчанию информация по объявлениям должна отображаться для города, указанного пользователем при регистрации.
- Может изменить город пребывания в своём профиле.
- Может подать заявку на получение доступа на статус «Специалиста» по конкретной категории. Заявка должна включать:
- Детальную контактную информацию.
- Информацию об образовании.
- Информацию о полученных удостоверениях.
- Опыт работы в данной категории.
- Может просматривать список своих заявок с указанием статуса: Новая, Подтверждена, Отклонена.
- Может просматривать страницу конкретной заявки.
Доступны все возможности роли «Гость».
- Просматривать список заявок и страницу конкретной заявки.
- Может подтверждать заявку.
- Может отклонять заявку. При отклонении заявки необходимо указать причину отклонения в виде многострочного текстового комментария.
Доступны все возможности роли «Зарегистрированный пользователь».
- Может добавить новое объявление в категорию, для которой есть подтверждённая заявка.
- При открытии формы добавления объявления поле для указания города должно быть заполнено данными из профиля.
- Контактная информация, информация об образовании, удостоверения и опыт должны быть заполнены из соответствующей заявки.
- Может редактировать своё объявление.