Skip to content

Design of microservice to generate promocodes

License

Notifications You must be signed in to change notification settings

pparshin/promocode-design

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation

Необходимо спроектировать сервис PromocodeService для WEB проекта, который что-то продаёт.

Условия:

  1. Промокод - это сущность, которая состоит из: код (символьная строка, которую пользователи будут вводить при оформлении заказа для получения скидки) и размер скидки (процент от стоимости заказа).
  2. Сервис должен уметь генерировать промокод (получать на вход размер скидки и отдавать в ответ код промокода) и отдавать размер скидки по промокоду (получать на вход код промокода и отдавать по нему размер скидки или ошибку, если промокод не действителен).
  3. У сервиса должен быть REST API, по которому будет осуществляться взаимодействие с другими сервисами. Авторизация на данном этапе не требуется.
  4. Промокод может быть одноразовым и многоразовым. Если промокод многоразовый, то у него есть или лимит количества использований, или дата, до которой он действует.
  5. Код промокода должен быть по возможности коротким, т.е. использовать в качестве него, например, UUID или MD5-хэш нельзя. Продакт-менеджер говорит, что чем короче - тем лучше, но строго длина не задана.
  6. На старте понадобятся два формата кода промокода - рандомная строка из полного набора символов ([a-zA-Z0-9]) и произвольная строка только из цифр. Затем, возможно, потребуются другие форматы. Указание, какой формат использовать, будет поступать в запросе на генерацию промокода.
  7. Стек технологий - Symfony и PostgreSQL, при необходимости - Redis.

Проработать:

  • алгоритмы генерации кодов промокодов,
  • дизайн API,
  • схему и индексы базы данных,
  • примерные классы/интерфейсы.

About

Design of microservice to generate promocodes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published