@startuml 04-이벤트참여및관리 !theme mono title 유저플로우 04: 이벤트 참여 및 관리 actor "이벤트 참여자" as Customer participant "이벤트 참여 시스템" as ParticipationSystem participant "중복 체크 시스템" as DuplicateCheck participant "알림 시스템" as NotificationSystem database "참여자 DB" as ParticipantDB database "이벤트 로그 DB" as EventLogDB == 이벤트스토밍 요소 == note over Customer, EventLogDB **Command**: 이벤트 조회, 참여 신청 **Event**: 이벤트 발견됨, 참여신청됨, 중복체크 완료됨, 참여 확인됨, 참여정보 저장됨 **Actor**: 이벤트 참여자 (고객) **Policy**: 중복 참여 불가, 자동 접수 처리 end note == 이벤트 발견 및 조회 == Customer -> ParticipationSystem : **Command**: 이벤트 조회 요청\n(데이터: 채널 경로[우리동네TV/SNS/QR코드]) activate ParticipationSystem note over Customer **유입 경로** - 우리동네TV 시청 - Instagram 게시물 - Naver Blog - KakaoTalk 메시지 - 매장 QR코드 스캔 end note ParticipationSystem --> Customer : **Event**: 이벤트 발견됨\n(데이터: 이벤트 상세 정보, 경품 정보, 참여 방법) == 이벤트 참여 신청 == Customer -> ParticipationSystem : **Command**: 참여 신청\n(데이터: 이름, 전화번호, 참여 경로) ParticipationSystem -> EventLogDB : 참여 로그 기록\n(데이터: 참여 시간, 경로, 디바이스 정보) activate EventLogDB EventLogDB --> ParticipationSystem : 로그 저장 완료 deactivate EventLogDB == 중복 참여 체크 == ParticipationSystem -> DuplicateCheck : 중복 확인 요청\n(데이터: 전화번호, 이벤트ID) activate DuplicateCheck note right of DuplicateCheck **Policy**: 중복 참여 불가 - 전화번호 기반 확인 - 이벤트별 1회 제한 - 실시간 중복 체크 end note DuplicateCheck -> ParticipantDB : 참여 이력 조회 activate ParticipantDB ParticipantDB --> DuplicateCheck : 조회 결과 deactivate ParticipantDB DuplicateCheck --> ParticipationSystem : **Event**: 중복체크 완료됨\n(데이터: 중복 여부) deactivate DuplicateCheck alt 중복 없음 (정상 참여) ParticipationSystem -> ParticipantDB : 참여자 정보 저장\n(데이터: 참여자 정보, 참여 시간, 경로) activate ParticipantDB ParticipantDB --> ParticipationSystem : **Event**: 참여정보 저장됨\n(데이터: 참여번호) deactivate ParticipantDB ParticipationSystem -> NotificationSystem : 참여 확인 알림 발송 요청\n(데이터: 전화번호, 참여번호) activate NotificationSystem NotificationSystem --> Customer : **Event**: 참여 확인됨\n(알림톡: 참여 완료, 당첨자 발표 일정) deactivate NotificationSystem ParticipationSystem --> Customer : 참여 완료 화면\n(데이터: 참여번호, 경품 정보, 발표 일정) note over Customer **참여 완료** ✓ 참여번호: #12345 ✓ 경품: KT 멤버십 5,000P ✓ 발표: 2025-10-24 18:00 ✓ 당첨 시 알림톡 발송 end note else 중복 참여 ParticipationSystem --> Customer : 중복 참여 불가 안내\n(사유: 이미 참여한 이벤트) note over Customer **중복 참여 제한** - 1인 1회 참여 제한 - 공정한 당첨 기회 보장 end note end deactivate ParticipationSystem == 실시간 참여 현황 집계 == ParticipationSystem -> EventLogDB : 실시간 집계 업데이트 activate EventLogDB EventLogDB --> ParticipationSystem : 집계 완료 deactivate EventLogDB note over ParticipationSystem **실시간 집계 데이터** - 총 참여자 수 - 채널별 참여 분포 - 시간대별 참여 추이 → 효과 측정 시스템 전달 end note @enduml