Backend-разработчик на php laravel (junior) Тестовое задание 7

Задачи по программированию  

программирование

Тестовое задание 7

Backend-разработчик на php laravel (junior)

к содержанию задачника

Требуется написать REST FULL API сервис со следующим функционалом:

 

1.1 Публичные маршруты (доступны всем не авторизованным пользователям):

1.2 Регистрация пользователя

1.3 Авторизация пользователя

1.4 Сброс пароля пользователя

 

1.5 Приватные маршруты (доступны только после авторизации пользователя):

1.5.1   Просмотр списка пользователей

1.5.2   Просмотр пользователя

1.5.3   Редактирование пользователя

1.5.4   Удаление пользователя в корзину

1.5.6   Просмотр списка пользователей в корзине (удаленные в корзину)

1.5.7   Восстановление пользователя из корзины

1.5.8   Полное удаление пользователя из БД (база данных)

1.5.9   Групповое удаление пользователей в корзину

1.5.10 Групповое удаление пользователей из БД

1.5.11 Групповое восстановление пользователей из корзины

  1. Вести полное логирование действий с пользователями в БД (таблица histories)

Требования

2.1 Сервис должен быть написан с использованием фреймворка Laravel версии не ниже 10.0

2.2 Использовать php версии не ниже 8.2

2.3 Применить подход тонких контроллеров.

2.4 Максимально декомпозировать код (выделение возможного повторяющегося кода в трейты и абстрактные классы).

2.5 В качестве id (идентификатора записи в БД) использовать строковое представление uuid6

2.6 Использовать Redis для кеширования объектов и снижения нагрузки на БД

2.7 Обеспечить целостность данных БД путем обработки транзакций и внешних ключей (по возможности)

2.8 Написать фабрики для наполнения БД тестовыми (фейковыми) данными

2.9 Вынести бизнес-логику в сервисный слой

2.10 Ответ от сервиса возвращать в формате json либо xml (будет плюсом реализация всех вариантов ответа)

2.11 При просмотре листинга пользователей реализовать возможность фильтров и сортировки по всем полям таблицы

2.12 Допускается использование встроенных библиотек фреймворка

  1. Структура таблиц

Снимок экрана от 2024-12-05 01-22-01

  1. Дополнительное задание (будет плюсом)

 

Реализовать приватные маршруты по аналогии с частью маршрутов из пункта 1.5

 

5.1 Реализовать листинг, просмотр сущности, удаление в корзину, полное удаление записи из БД с сущностями таблицы histories

5.2 Возможность восстановления модели к состоянию из таблицы  histories

5.3 Реализовать консольные команды по пунктам 5.1 и 5.2

 

  1. Рекомендации (будет плюсом)

6.1 Код должен быть само-документируемый с применением тайпхинтов и PSR.

6.2 Уделить большое внимание чистоте и качеству кода

6.3 Контейнеризация проекта (docker), для быстрого развертывания

6.4 К ТЗ применить паттерны DRY, KISS, YANGI

6.5 Ведение документации в Swager

6.6 Применить в проекте возможность версионирования API

6.7 При форматировании кода рекомендуется использование библиотеки laravel/pint