Выпускной проект Яндекс.Практикум
Система представляет собой HTTP API со следующими требованиями к бизнес-логике:
- регистрация, аутентификация и авторизация пользователей;
- приём номеров заказов от зарегистрированных пользователей;
- учёт и ведение списка переданных номеров заказов зарегистрированного пользователя;
- учёт и ведение накопительного счёта зарегистрированного пользователя;
- проверка принятых номеров заказов через систему расчёта баллов лояльности;
- начисление за каждый подходящий номер заказа положенного вознаграждения на счёт лояльности пользователя.
Ниже представлена абстрактная бизнес-логика взаимодействия пользователя с системой:
- Пользователь регистрируется в системе лояльности «Гофермарт».
- Пользователь совершает покупку в интернет-магазине «Гофермарт».
- Заказ попадает в систему расчёта баллов лояльности.
- Пользователь передаёт номер совершённого заказа в систему лояльности.
- Система связывает номер заказа с пользователем и сверяет номер с системой расчёта баллов лояльности.
- При наличии положительного расчёта баллов лояльности производится начисление баллов лояльности на счёт пользователя.
- Пользователь списывает доступные баллы лояльности для частичной или полной оплаты последующих заказов в интернет-магазине «Гофермарт».
Накопительная система лояльности «Гофермарт» должна предоставлять следующие HTTP-хендлеры:
Метод | Путь | Описание |
---|---|---|
POST | /api/user/register | Регистрация пользователя |
POST | /api/user/login | Аутентификация пользователя |
POST | /api/user/orders | Загрузка пользователем номера заказа для расчёта |
GET | /api/user/orders | Получение списка загруженных пользователем номеров заказов, их статусов и информации о начислениях |
GET | /api/user/balance | Получение текущего баланса счёта баллов лояльности пользователя |
POST | /api/user/balance/withdraw | Запрос на списание баллов с накопительного счёта в счёт оплаты нового заказа |
GET | /api/user/withdrawals | Получение информации о выводе средств с накопительного счёта пользователем |
Подробнее тут SPECIFICATION.md
Сервис должн поддерживать конфигурирование следующими методами:
- адрес и порт запуска сервиса: переменная окружения ОС
RUN_ADDRESS
или флаг-a
- адрес подключения к базе данных: переменная окружения ОС
DATABASE_URI
или флаг-d
- адрес системы расчёта начислений: переменная окружения ОС
ACCRUAL_SYSTEM_ADDRESS
или флаг-r