-
Notifications
You must be signed in to change notification settings - Fork 0
Hee edited this page Jun 27, 2025
·
2 revisions
sequenceDiagram participant Client as 클라이언트 participant NotiService as 알림 서비스 (예: NotificationManager) participant NotiSender as <> NotificationSender participant MailSender as MailNotificationSender participant DiscordSender as DiscordNotificationSender participant KakaoSender as KakaoNotificationSender participant SlackSender as SlackNotificationSender participant ExternalMail as 외부 메일 서비스 participant ExternalDiscord as 외부 Discord API participant ExternalKakao as 외부 Kakao API participant ExternalSlack as 외부 Slack API
Client->>NotiService: 알림 발송 요청 (메시지, 타입)
activate NotiService
Note right of NotiService: 요청된 알림 타입에 따라 적절한 NotificationSender 구현체 선택
NotiService->>NotiSender: sender = getSender(알림타입)
% activate NotiSender // 이 줄을 제거합니다.
alt 메일 알림 발송
NotiSender-->>MailSender: MailNotificationSender 인스턴스 반환
% deactivate NotiSender // 이 줄을 제거합니다.
NotiService->>MailSender: initialize(설정정보)
activate MailSender
MailSender->>ExternalMail: API 연결 및 인증
ExternalMail-->>MailSender: 연결 성공
deactivate MailSender
NotiService->>MailSender: send(메시지)
activate MailSender
MailSender->>ExternalMail: sendMail(메시지)
activate ExternalMail
ExternalMail-->>MailSender: 발송 결과 (성공/실패)
deactivate ExternalMail
MailSender-->>NotiService: NotificationResult 반환
deactivate MailSender
else Discord 알림 발송
NotiSender-->>DiscordSender: DiscordNotificationSender 인스턴스 반환
% deactivate NotiSender // 이 줄을 제거합니다.
NotiService->>DiscordSender: initialize(설정정보)
activate DiscordSender
DiscordSender->>ExternalDiscord: API 연결 및 인증
ExternalDiscord-->>DiscordSender: 연결 성공
deactivate DiscordSender
NotiService->>DiscordSender: send(메시지)
activate DiscordSender
DiscordSender->>ExternalDiscord: sendMessage(메시지)
activate ExternalDiscord
ExternalDiscord-->>DiscordSender: 발송 결과
deactivate ExternalDiscord
DiscordSender-->>NotiService: NotificationResult 반환
deactivate DiscordSender
else 카카오 알림 발송
NotiSender-->>KakaoSender: KakaoNotificationSender 인스턴스 반환
% deactivate NotiSender // 이 줄을 제거합니다.
NotiService->>KakaoSender: initialize(설정정보)
activate KakaoSender
KakaoSender->>ExternalKakao: API 연결 및 인증
ExternalKakao-->>KakaoSender: 연결 성공
deactivate KakaoSender
NotiService->>KakaoSender: send(메시지)
activate KakaoSender
KakaoSender->>ExternalKakao: sendMessage(메시지)
activate ExternalKakao
ExternalKakao-->>KakaoSender: 발송 결과
deactivate ExternalKakao
KakaoSender-->>NotiService: NotificationResult 반환
deactivate KakaoSender
else Slack 알림 발송
NotiSender-->>SlackSender: SlackNotificationSender 인스턴스 반환
% deactivate NotiSender // 이 줄을 제거합니다.
NotiService->>SlackSender: initialize(설정정보)
activate SlackSender
SlackSender->>ExternalSlack: API 연결 및 인증
ExternalSlack-->>SlackSender: 연결 성공
deactivate SlackSender
NotiService->>SlackSender: send(메시지)
activate SlackSender
SlackSender->>ExternalSlack: sendMessage(메시지)
activate ExternalSlack
ExternalSlack-->>SlackSender: 발송 결과
deactivate ExternalSlack
SlackSender-->>NotiService: NotificationResult 반환
deactivate SlackSender
end
NotiService-->>Client: 알림 발송 완료 (결과)
deactivate NotiService