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;