Skip to content

Goose47/mortgage-calculator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ипотечный калькулятор

Описание

Микросервис представляет собой ипотечный калькулятор. Предоставляет возможность рассчитать параметры кредитования пр заданным параметрам. Сохраняет расчеты в кэше.

Сервис доступен по адресу http://rwfshr.ru:8080. Для удобного тестирования кэша в эндпоинт /execute добавлена искусственная задержка в 500мс. конфигурационные значения:

env: "prod"
port: 8080
cache:
  ttl: 10
  clear: 10

Требования

go v1.21+

golangci-lint

Конфигурация

Конфигурационный файл находится по пути ./src/config/config.yml и имеет вид:

env: "prod"     // окружение в котором запущено приложение ("local", "dev", "prod").
port: 8080      // порт, на котором работает http-сервер.
cache:          // параметры кэша.
  ttl: 3600     // время жизни закэшированной записи в секундах.
  clear: 3600   // интервах автоматического удаления записей кэша с истекшим сроком хранения в секундах. 

Путь до конфигурационного файла должен указываться при запуске во флаге --config или находиться в переменной окружения CONFIG_PATH. Флаг имеет больший приоритет.

Установка и запуск

В проекте существует Makefile со следующими командами:

  • lint - осуществление проверки линтером.
  • test - запуск тестов и вывод тестового покрытия.
  • build - сборка Docker образа и вывод его размера.
  • run - запуск контейнера.
  • stoprm - остановка и удаление контейнера.

Для запуска приложения достаточно:

$ make build 
$ make run 

Описание API

Расчет ипотечных параметров.

POST /execute Рассчитывает параметры кредитования по заданным параметрам и сохраняет результат расчетов в кэше.

Параметры

Название Обязателен Тип данных Описание
object_cost да int Общая стоимость объекта.
initial_payment да int Первый взнос.
months да int Количество месяцев.
program да Program Программа кредитования.
тип данных Program
Название Тип данных Описание
base bool Программа базовой ипотеки.
salary bool Программа для корпоративных клиентов.
program bool Программа ипотеки для военных.

Ошибки

http code content-type Ответ Описание
400 application/json; charset=utf-8 {"error": "choose program"} Необходимо выбрать программу кредитования.
400 application/json; charset=utf-8 {"error": "choose only 1 program"} Необходимо выбрать только одну программу кредитования.
400 application/json; charset=utf-8 {"error": "the initial payment should be more"} Первоначальный взнос должен составлять как минимум 20% от суммы объекта.

Пример ответа

{
   "result": {
      "params": {                           // запрашиваемые параметры кредита
         "object_cost": 5000000,
         "initial_payment": 1000000,                
         "months": 240
      },
      "program": {                          // программа кредита
         "salary": true
      },
      "aggregates": {                       // блок с агрегатами
         "rate": 8,                         // годовая процентная ставка
         "loan_sum": 4000000,               // сумма кредита
         "monthly_payment": 33458,          // аннуитетный ежемесячный платеж
         "overpayment": 4029920,            // переплата за весь срок кредита
         "last_payment_date": "2044-02-18"  // последняя дата платежа
      }
   }
}

Листинг кэша

GET /cache Выводит все результаты расчетов, сохраненные в кэше.

Ошибки

http code content-type Ответ Описание
400 application/json; charset=utf-8 {"error": "empty cache"} Кэе пуст.

Пример ответа

[
  {
    "id": 0, // id расчета в кэше
    "params": {
      "object_cost": 5000000,
      "initial_payment": 1000000,
      "months": 240
    },
    "program": {
      "salary": true
    },
    "aggregates": {
      "rate": 8,
      "loan_sum": 4000000,
      "monthly_payment": 33458,
      "overpayment": 4029920,
      "last_payment_date": "2044-02-18"
    }
  },
  {
    "id": 1,
    "params": {
      "object_cost": 8000000,
      "initial_payment": 2000000,
      "months": 200
    },
    "program": {
      "military": true
    },
    "aggregates": {
      "rate": 9,
      "loan_sum": 6000000,
      "monthly_payment": 58019,
      "overpayment": 5603800,
      "last_payment_date": "2040-10-18"
    }
  },
  {
    "id": 2,
    "params": {
      "object_cost": 12000000,
      "initial_payment": 3000000,
      "months": 120
    },
    "program": {
      "base": true
    },
    "aggregates": {
      "rate": 10,
      "loan_sum": 9000000,
      "monthly_payment": 118936,
      "overpayment": 5272320,
      "last_payment_date": "2034-02-18"
    }
  }
]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors