@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