graph TD;
A[클라이언트 - 고객] -->|1.예약 생성 요청| B[예약 서비스];
B -->|2.예약 생성 응답| A;
A -->|3.결제 요청| C[외부 PG사 - DKPG, 토스];
C -->|4.결제 성공/실패 응답| A;
A -->|5.결제 승인 요청| D[결제 서비스];
D -->|6.결제 승인 요청 - 최대 5회 재시도| C;
C -->|7.승인 성공/실패| D;
D -->|8.결제 성공/실패 처리| D;
D -->|9.결제 성공/실패 이벤트 발행| H[Kafka];
B -->|10.결제 성공/실패 이벤트 수신 - 예약 완료/실패 처리| H;
F[웹소켓 서비스] -->|11.결제 성공/실패 이벤트 수신| H;
F -->|12.실시간 알림| A;
E[알림 서비스] -->|13.결제 성공/실패 이벤트 수신| H;
E -->|14.매장 & 디자이너 알림| G[매장/디자이너];
%% 색상 스타일 적용
style A fill:#ffcc00,stroke:#000000,stroke-width:2px;
style B fill:#66ccff,stroke:#000000,stroke-width:2px;
style C fill:#ff6666,stroke:#000000,stroke-width:2px;
style D fill:#66ccff,stroke:#000000,stroke-width:2px;
style H fill:#cccccc,stroke:#000000,stroke-width:2px;
style F fill:#66ccff,stroke:#000000,stroke-width:2px;
style E fill:#66ccff,stroke:#000000,stroke-width:2px;
style G fill:#ff9966,stroke:#000000,stroke-width:2px;
style H fill:#cc99ff,stroke:#000000,stroke-width:2px;