#491 Реализация MVP постамата для выдачи заказов
Постамат - автоматическая станция приёма/выдачи посылок.
В маркете формируются заказы, и хочется добавить возможность получения через постамат. Мы запускаем MVP: небольшая аудитория пользователей, несколько постаматов в Москве. При заказе пользователь сможет выбрать, что хочет получить заказ в постамате.
В рамках задачи нужно реализовать код для MVP решения:
- Курьер привозит заказ и пробует положить его в ячейку, указывая номер заказа. Постамат сам выбирает ячейку и возвращает в ответ. Она откроется вызывающим этот метод кодом;
- После того, как заказ положили в ячейку, пользователю отправляется СМС c кодом получения. Заказ будет ждать вечно;
- В случае любых ошибок - курьер забирает заказ назад и попробует положить заказ в ячейку на следующий день (для MVP это ок);
- Пользователь может получить заказ по коду выдачи из СМС. При вводе кода выдачи постамат должен вывести на экран текст "ваш заказ ХХХ в ячейке YYY", ячейка откроется сама.
Ограничения:
- Все ячейки одного размера, но их может быть разное количество, зависит от конкретного постамата;
- Один заказ - одна коробка, она влезает в ячейку;
- Ячейки каждого постамата пронумерованы;
- Каждый постамат сам хранит своё состояние.
Для отправки сообщения пользователю надо использовать клиент UserNotificationApi:
class PostalBox {
private final UserNotificationApi notificationApi;
// нужно реализовать методы хранения и выдачи заказа
}
Синхронный клиент, вызывающий postalbox.notify.market.yandex.net. Реализацию интерфейса описывать не нужно:
interface UserNotificationApi {
// нужно описать метод(ы) для отправки сообщения с кодом выдачи
// в ответ придёт код выдачи, который был отправлен пользователю
}
Разбор вопроса
Войди, чтобы начать диалог
Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти
Доступно с Premium
Это лишь одно из решений, доступных с Premium. А ещё:
- 250+ продвинутых лекций
- 1300+ практических заданий
- 500+ решений задач с реальных собеседований
- Именные сертификаты Java Hub
- Расширенный доступ к AI-ментору