feat: start concepts declaring

This commit is contained in:
skeris 2023-10-20 01:02:58 +03:00
parent ae14dc2364
commit 017f1958e6

11
concepts/README.md Normal file

@ -0,0 +1,11 @@
## Привилегия
Привилегия - единица предоставления услуг конечному пользователю. Список привилегий определяется при разработке сервиса и публикуется\обновляется при каждом запуске сервиса. Ответственен за публикацию своих привилегий непосредственно конечный сервис. Привилегии нужны для создания тарифов, ибо тариф - набор привилегий и их количества, снабженный ценой и общим описанием.
При покупке пользователем тарифа, привилегии, перечисленные в этом тарифе добавляются в аккаунт этого пользователя. "Трату" привилегий и ограничения налагаемые ограниченным количеством той или иной привилегии обрабатывает сам конечный сервис.
При окончании количества привилегии, конечный сервис должен оповестить customer сервис об этом, добавив запись в историю.
## Аккаунт
Аккаунт - сущность обеспечивающая связь между customer сервисом и конецчнм продуктовым сервисом. Каждый продуктовый сервис имеет набор тарифов, описывающих ограниченность доступа конкретного аккаунта к услугам, которые предоставляет сервис. При покупке тарифа в customer сервисе, тот публикует данные о купленном тарифе в очередь redpanda, а конечный продуктовый сервис, подписанный на этот топик, получив из очереди информацию о том, что такой-то юзер купил тариф относящийся к нему, должен внести приобретенные привилегии в аккаунт пользователя, купившего тариф.
При использовании услуг продуктового сервиса, он обращается к полям аккаунта, для того чтобы определять, доступна ли этому пользователю данная услуга или же он уже выработал квоту, определённую приобретенным им тарифом.
Так же, в аккаунте хранятся дополнительные настройки, необходимые для взаимодействия пользователя с конечным продуктовым сервисом, но лишние в customer сервисе, т.е. сервисоспецифичые настройки. Например, токены доступа к яндекс диску