@startuml 05-이벤트참여및접수 !theme mono title 유저플로우 05: 이벤트 참여 및 접수 관리 actor "고객" as Customer actor "소상공인" as Owner participant "이벤트 참여 시스템" as ParticipationSystem participant "SMS/알림톡 시스템" as Notification database "참여자 DB" as ParticipantDB == 이벤트스토밍 요소 == note over Customer, ParticipantDB **Command**: 이벤트참여신청, 참여정보검증, 중복체크수행, 참여접수, 당첨자추첨, 당첨알림발송 **Event**: 고객이이벤트발견함, 참여신청됨, 참여정보검증됨, 중복참여차단됨, 참여접수완료됨, 당첨자추첨완료됨, 당첨알림발송됨 **Actor**: 고객, 소상공인 **External System**: SMS/카카오알림톡 발송 시스템 **Policy**: 1인 1회 참여 제한, 매장 방문 고객 가산점 부여, 공정한 추첨 알고리즘 적용, 개인정보 보호 규정 준수 end note == 고객의 이벤트 발견 == Customer -> ParticipationSystem : **Event**: 고객이이벤트발견함\n(경로: 우리동네TV/SNS/QR코드) activate ParticipationSystem ParticipationSystem --> Customer : 이벤트 상세 정보 제공\n(경품, 참여방법, 당첨확률) == 이벤트 참여 신청 == Customer -> ParticipationSystem : **Command**: 이벤트참여신청\n(데이터: 고객명, 전화번호, 참여경로) ParticipationSystem --> Customer : **Event**: 참여신청됨 == 참여 정보 검증 == ParticipationSystem -> ParticipationSystem : **Command**: 참여정보검증\n(데이터: 전화번호, 매장방문여부) activate ParticipationSystem note right of ParticipationSystem **Policy**: 1인 1회 참여 제한 - 전화번호 기반 중복 체크 - 매장 방문 고객 가산점 - 허위 정보 필터링 end note ParticipationSystem --> ParticipationSystem : **Event**: 참여정보검증됨 deactivate ParticipationSystem == 중복 참여 체크 == ParticipationSystem -> ParticipantDB : **Command**: 중복체크수행\n(데이터: 전화번호, 이벤트ID) activate ParticipantDB alt 중복 참여 ParticipantDB --> ParticipationSystem : **Event**: 중복참여차단됨 ParticipationSystem --> Customer : 중복 참여 불가 안내 else 정상 참여 ParticipantDB --> ParticipationSystem : 중복 없음 deactivate ParticipantDB == 참여 접수 완료 == ParticipationSystem -> ParticipantDB : **Command**: 참여접수\n(데이터: 참여ID, 참여일시, 참여채널) activate ParticipantDB ParticipantDB --> ParticipationSystem : **Event**: 참여접수완료됨 deactivate ParticipantDB ParticipationSystem --> Customer : 참여 완료 안내\n(응모번호, 당첨 발표일) end == 이벤트 종료 후 당첨자 추첨 == note over ParticipationSystem 이벤트 종료 시각 도래 자동 추첨 프로세스 시작 end note ParticipationSystem -> ParticipantDB : **Command**: 당첨자추첨\n(데이터: 참여자목록, 당첨인원, 추첨방식) activate ParticipantDB note right of ParticipantDB **Policy**: 공정한 추첨 - 난수 기반 무작위 추첨 - 매장 방문 고객 가산점 - 추첨 과정 로그 기록 end note ParticipantDB --> ParticipationSystem : **Event**: 당첨자추첨완료됨\n(데이터: 당첨자목록) deactivate ParticipantDB == 당첨 알림 발송 == ParticipationSystem -> Notification : **Command**: 당첨알림발송\n(데이터: 당첨자목록, 경품정보) activate Notification Notification -> Customer : SMS/카카오알림톡 발송\n(당첨 축하, 경품 수령 안내) Notification --> ParticipationSystem : **Event**: 당첨알림발송됨 deactivate Notification ParticipationSystem --> Owner : 당첨자 명단 제공\n(경품 지급 안내) note over Customer, Owner **참여 및 접수 자동화 완료** 고객: 간편한 참여 (1분 이내) 소상공인: 자동 접수 및 추첨 수동 관리 불필요 end note deactivate ParticipationSystem @enduml