Загрузка данных


@startuml
left to right direction
skinparam processBackgroundColor lightblue
skinparam entityBackgroundColor lightyellow
skinparam storageBackgroundColor lightgray

entity "Зритель" as Viewer
entity "Платёжная\nсистема" as Gateway

database "D1\nРасписание и залы" as Store1
database "D2\nПроданные билеты\nи бронирования" as Store2

process "1.1.1\nПоказать доступные\nсеансы и места" as P1
process "1.1.2\nЗарезервировать\nвыбранные места" as P2
process "1.1.3\nРассчитать\nитоговую стоимость" as P3
process "1.1.4\nОтправить запрос\nна оплату" as P4
process "1.1.5\nОбработать\nподтверждение оплаты" as P5
process "1.1.6\nСформировать\nэлектронный билет" as P6
process "1.1.7\nПодтвердить бронь\nи отправить билет" as P7
process "1.1.8\nЗаписать продажу\nв хранилище" as P8

Viewer --> P1 : "заявка на бронирование\n(фильм, дата, места)"
Viewer --> P4 : "данные для оплаты"
Gateway --> P5 : "подтверждение платежа"

P1 --> P2 : "выбранные места и сеанс"
P2 --> P3 : "данные о брони"
P3 --> P4 : "сумма к оплате"
P4 --> Gateway : "запрос на списание средств"
P5 --> P6 : "оплата успешна"
P6 --> P7 : "билет в формате QR"
P7 --> Viewer : "подтверждение бронирования\n+ электронный билет"

Store1 --> P1 : "схема зала и расписание"
P2 --> Store1 : "временно заблокировать места"
P8 --> Store1 : "снять блокировку /\nподтвердить занятость"
P8 --> Store2 : "запись продажи и билета"

P2 --> P8 : "данные успешной продажи"

@enduml