1 of 13

Техническое задание

2 of 13

3 of 13

Требования по структуре проекта

  • Сборка проекта должна осуществляться средствами Apache Maven (Gradle optional)
  • Проект должен иметь два модуля (common, service) и собираться в executable jar
  • Необходимо использовать Spring Boot с Embedded Tomcat

4 of 13

Требования к слою Repository/DAO

  • В качестве СУБД использовать PostgreSQL
  • Использование Hibernate для маппинга сущностей
  • Не менее 5 значимых сущностей @Entity
  • Наличие связей: 1-1, 1-n (n-n optional)
  • Наличие Embedded-сущностей (optional)
  • Наличие оптимистической/пессимистической блокировки сущности
  • Наличие запросов-фильтров с пагинацией �(HQL, Criteria API, Querydsl)
  • Использование кэша второго уровня Hibernate (Optional)
  • Пароль должен храниться в зашифрованном виде

5 of 13

Требования к слою Service

  • Транзакционность приложения должна осуществляться на слое сервисов (@Transactional)
  • Наличие логирования в консоль и файл (log4j, logback)
  • Логирование вызванного метода сервиса со всеми параметрами и возвращаемого значения реализовать через Spring AOP

6 of 13

Требования к слою web

  • Для именования endpoints path учитывать API Design Best Practices
  • В качестве слоя представления использовать Thymeleaf
  • Использовать @ControllerAdvice для обработки всех ошибок приложения
  • Использовать @RestController при работе со статикой (файлы, картинки, аудио, видео)
  • Реализовать страницы для авторизации и регистрации пользователей
  • Реализовать страницу с пагинацией
  • Реализовать интернационализацию
  • Использовать Spring JSR-303 для валидации

7 of 13

Общие требования

  • Использовать Spring Security для аутентификации и авторизации пользователей в системе
  • Наличие как минимум двух ролей у пользователя (например, USER и ADMIN)
  • Наличие функционала, который доступен только администратору (ADMIN)
  • Не менее 60% кода должно быть покрыто unit и integration тестами (jacoco plugin)

8 of 13

Примеры приложений

9 of 13

Видеотека. Сущности системы.

1. Фильм

- Название

- Актёры

- Режиссёр

- Дата выхода

- Страна

- Жанр�

2. Актёр/режиссёр

- ФИО

- Дата рождения

​

​

3. Пользователь

- ФИО

- Пароль

- Адрес почтового ящика

​

4. Отзывы

- Фильм

- Пользователь

- Текст

- Оценка

​

10 of 13

Видеотека. Действия в системе

Действия по добавлению:

1. Зарегистрировать пользователя в системе

2. Добавить актёра/режиссёра

3. Добавить фильм, выбрав съёмочную группу

4. Добавить отзыв пользователя о фильме

​

Действия по просмотру:

1. Просмотреть список всех фильмов, вышедших на экраны в выбранном/введённом году.

2. Просмотреть информацию об актёрах, снимавшихся в выбранном фильме

3. Просмотреть все отзывы о выбранном фильме

4. Просмотреть все фильмы, в которых снимался выбранный актёр.

5. Просмотреть все отзывы выбранного пользователя.

​

11 of 13

Интернет-магазин. Сущности системы.

1. Покупатель

- Имя

- Фамилия

- Почтовый ящик

- Пароль

- Телефон

- Адрес

​

2. Заказ

- Номер

- Товары в заказе

- Дата оформления заказа

- Дата закрытия заказа

- Статус заказа

​

3. Товар

- Название

- Описание

- Цена

- Оставшееся количество���Для товаров в заказе хранить: название и количество.

12 of 13

Интернет-магазин. Действия в системе.

Ограничения:

1. Пользователь не сможет оформить заказ, если на складе недостаточно товаров выбранного типа

​

Действия по добавлению:

1. Добавить в систему нового пользователя

2. Добавить в систему новый товар

3. Оформить заказ для выбранного пользователя: с добавлением товаров/выбором их количества.�

Действия по просмотру:

1. Просмотреть список всех пользователей системы.

2. Просмотреть список всех заказов выбранного пользователя.

3. Просмотреть список всех товаров в системе.

4. Просмотреть список всех заказов, в которые включен выбранный товар

5. Удалить заказы, сделанные раньше введённой даты.

​

13 of 13

Темы проектов