Skip to content

Latest commit

 

History

History
57 lines (42 loc) · 3.88 KB

INTRODUCTION.md

File metadata and controls

57 lines (42 loc) · 3.88 KB

Тестовое задание Команды кредитования (Loan Team)

В данном тестовом задании мы ожидаем, что вы продемонстрируете умение применять принципы DDD (Domain-Driven Design) и следовать принципам Clean Architecture при проектировании кода.
Имейте в виду, что мы не требуем полностью рабочего кода. Однако, ваш код должен быть функциональным на базовом уровне, чтобы мы могли оценить ваше понимание принципов программирования, проектирования и качество вашего кода.
Ожидаем, что выполнение тестового задания займет около 4 часов.

Детали задачи

Нужно написать код для выдачи кредита. Реализовать процессы создания нового клиента, проверки возможности выдачи кредита клиенту или отказа в выдаче кредита.

Условия выдачи кредита

  • Кредитный рейтинг клиента должен быть больше 500.
  • Доход клиента должен быть не менее 1000$ в месяц.
  • Возраст клиента от 18 до 60 лет.
  • Кредит выдается только в штатах CA, NY, NV
  • Клиентам из NY рандомно отказываем.
  • Клиентам из Калифорнии увеличиваем процентную ставку на 11.49%

Сущности

Клиент

  • Фамилия
  • Имя
  • Возраст
  • Адрес США (Город, Штат, ZIP)
  • SSN (социальный страховой номер)
  • FICO (кредитный рейтинг - число от 300 до 850)
  • Email
  • Номер телефона

Продукт (Кредит)

  • Название продукта
  • Срок кредита
  • Процентная ставка
  • Сумма

Сценарии

  • Создание нового клиента.
  • Изменение информации о существующем клиенте.
  • Проверка возможности выдачи кредита.
  • Выдача кредита:
    • Проверка возможности выдачи кредита.
    • Уведомление клиента о выдаче кредита (Email, SMS).

Требования и ограничения

  • Код должен быть написан с использованием PHP 8+ и соблюдать стандарты PSR.
  • Для работы приложения рекомендуется использовать Yii2 фреймворк, но так же допускается использование Symfony или написание простого кода без использования фреймворка.
  • Код может работать с любой базой данных, либо вовсе не использовать ее. Допустимо возвращать данные статично, при сохранении не выполнять никаких операций записи, если это существенно сократит время на реализацию.
  • Приложение может иметь любой интерфейс взаимодействия: CLI, REST API, HTML (веб-интерфейс).
  • Наличие тестов не требуется, но их наличие будет плюсом.
  • Применение инструментов статического анализа и Docker тоже будет плюсом.