From e2266ed7ac7eb88fed43f236aa2d455a5385ac49 Mon Sep 17 00:00:00 2001 From: Kirill Date: Mon, 26 Jun 2023 14:50:34 +0300 Subject: [PATCH] docs: relationships init --- docs/diagram/README.md | 57 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 docs/diagram/README.md diff --git a/docs/diagram/README.md b/docs/diagram/README.md new file mode 100644 index 0000000..e32794c --- /dev/null +++ b/docs/diagram/README.md @@ -0,0 +1,57 @@ +--- + +**UseCase авторизации пользователя (Пользователь существует / Пароль верный / Аккаунт не существует):** + +```plantuml +participant Frontend +participant CustomerService +participant AuthService +participant HubAdminService +participant PaymentService +participant CBRFService +database AuthServiceDB +database ServiceDB + +Frontend -> AuthService : Запрос на авторизацию пользователя +AuthService -> AuthServiceDB : Запрос на существования пользователя +AuthService <-- AuthServiceDB : Ответ: пользователь существует +AuthService -> AuthService : Проверка пароля (пароль верный) +Frontend <-- AuthService : Ответ успешной авторизации: \n- refreshToken в onlyHttp куках\n- accessToken в body \n- информация о пользователе +Frontend -> Frontend : Записывает accessToken в store (Redux / Recoil) +Frontend -> Service : Запрос на получение аккаунта \n- accessToken должен храниться \nв Authorization Header \nиспользуя метод Bearer +Service -> ServiceDB : Проверка на \nсуществование аккаунта +Service <-- ServiceDB : Ответ: \nаккаунта не существует +Frontend <-- Service : Ошибка: аккаунта не существует +``` + +## Relationships + +```plantuml +!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml + +Container(CustomerService, "Customer Service", "Golang", "Сервис customer") +Container(AuthService, "Auth Service", "NodeJS", "Сервис единой авторизации") +Container(CbrfService, "CBRF Worker Service", "Golang", "Сервис по выдаче и перевода курсов валют") +Container(PaymentService, "Payment Service", "Golang", "Платёжный сервис") +Container(HubadminService, "Hub admin Service", "NodeJS", "Севрис управления тарифами и привелегиями") + +ContainerDb(CustomerDB, "Customer Service Database", "MongoDB", "Хранит информацию об аккаунтах") +ContainerDb(AuthServiceDB, "Auth Service Database", "MongoDB", "Хранит информацию о пользователях и сессиях") +ContainerDb(CbrfServiceDB, "CBRF Worker Database", "MongoDB", "Хранит информацию о курсах валют") +ContainerDb(PaymentServiceDB, "Payment Service Database", "MongoDB", "Хранит информацию о платежах и их состоянии") +ContainerDb(HubadminServiceDB, "Hubadmin service Database", "MongoDB", "Хранит информацию о тарифах и привелегиях") + +Rel(CustomerService, AuthService, "Использует для получения актуальной информации о пользователе") +Rel(CustomerService, CbrfService, "Использует для перевода валюты с одного курса на другой") +Rel(CustomerService, PaymentService, "Использует для проведения оплаты (получения платёжной ссылки и уведомления об успешной/не_успешной оплате)") +Rel(CustomerService, HubadminService, "Использует для получения информации о тарифах") + +Rel_R(CustomerService, CustomerDB, "Читает/Записывает") +Rel_R(AuthService, AuthServiceDB, "Читает/Записывает") +Rel_R(CbrfService, CbrfServiceDB, "Читает/Записывает") +Rel_R(PaymentService, PaymentServiceDB, "Читает/Записывает") +Rel_R(HubadminService, HubadminServiceDB, "Читает/Записывает") + +SHOW_FLOATING_LEGEND() +Lay_Distance(LEGEND(), AuthService, 1) +``` \ No newline at end of file