В данном тестовом задании мы ожидаем, что вы продемонстрируете умение применять принципы DDD (Domain-Driven Design) и следовать принципам Clean Architecture при проектировании кода.
Имейте в виду, что мы не требуем полностью рабочего кода. Однако, ваш код должен быть функциональным на базовом уровне, чтобы мы могли оценить ваше понимание принципов программирования, проектирования и качество вашего кода.
Ожидаем, что выполнение тестового задания займет около 4 часов.
Нужно написать код для выдачи кредита. Реализовать процессы создания нового клиента, проверки возможности выдачи кредита клиенту или отказа в выдаче кредита.
- Кредитный рейтинг клиента должен быть больше 500.
- Доход клиента должен быть не менее 1000$ в месяц.
- Возраст клиента от 18 до 60 лет.
- Кредит выдается только в штатах CA, NY, NV
- Клиентам из NY рандомно отказываем.
- Клиентам из Калифорнии увеличиваем процентную ставку на 11.49%
- Фамилия
- Имя
- Возраст
- Адрес США (Город, Штат, ZIP)
- SSN (социальный страховой номер)
- FICO (кредитный рейтинг - число от 300 до 850)
- Номер телефона
- Название продукта
- Срок кредита
- Процентная ставка
- Сумма
- Создание нового клиента.
- Изменение информации о существующем клиенте.
- Проверка возможности выдачи кредита.
- Выдача кредита:
- Проверка возможности выдачи кредита.
- Уведомление клиента о выдаче кредита (Email, SMS).
- Код должен быть написан с использованием PHP 8+ и соблюдать стандарты PSR.
- Для работы приложения рекомендуется использовать Yii2 фреймворк, но так же допускается использование Symfony или написание простого кода без использования фреймворка.
- Код может работать с любой базой данных, либо вовсе не использовать ее. Допустимо возвращать данные статично, при сохранении не выполнять никаких операций записи, если это существенно сократит время на реализацию.
- Приложение может иметь любой интерфейс взаимодействия: CLI, REST API, HTML (веб-интерфейс).
- Наличие тестов не требуется, но их наличие будет плюсом.
- Применение инструментов статического анализа и Docker тоже будет плюсом.