@startuml 01-회원가입및매장등록 !theme mono title 유저플로우 01: 회원가입 및 매장정보 등록 actor "소상공인" as Owner participant "회원관리 시스템" as UserSystem participant "KT 인증 시스템" as KTAuth participant "사업자번호 검증 시스템" as BizVerify database "회원 DB" as UserDB == 이벤트스토밍 요소 == note over Owner, UserDB **Command**: 회원가입 요청, 매장정보 입력, 사업자번호 검증 요청 **Event**: 회원가입 요청됨, 인증 완료됨, 매장정보 입력됨, 사업자번호 검증됨, 회원가입 완료됨 **Actor**: 소상공인 **External System**: KT 인증 시스템, 사업자번호 검증 시스템 **Policy**: 사업자번호가 유효해야 가입 가능 end note == 회원가입 프로세스 == Owner -> UserSystem : **Command**: 회원가입 요청\n(데이터: 이름, 전화번호, 이메일) activate UserSystem UserSystem --> Owner : **Event**: 회원가입 요청됨 UserSystem -> KTAuth : 본인 인증 요청\n(데이터: 전화번호) activate KTAuth KTAuth --> UserSystem : **Event**: 인증 완료됨\n(데이터: 인증토큰) deactivate KTAuth UserSystem --> Owner : 인증 성공 알림 == 매장정보 등록 == Owner -> UserSystem : **Command**: 매장정보 입력\n(데이터: 매장명, 업종, 주소, 영업시간) UserSystem --> Owner : **Event**: 매장정보 입력됨 Owner -> UserSystem : **Command**: 사업자번호 입력\n(데이터: 사업자번호) UserSystem -> BizVerify : 사업자번호 검증 요청\n(데이터: 사업자번호, 매장명) activate BizVerify note right of BizVerify **Policy**: 사업자번호가 유효해야 가입 가능 - 국세청 DB 조회 - 휴폐업 여부 확인 end note BizVerify --> UserSystem : **Event**: 사업자번호 검증됨\n(데이터: 검증결과, 사업자정보) deactivate BizVerify alt 검증 성공 UserSystem -> UserDB : 회원 정보 저장\n(데이터: 회원정보, 매장정보) activate UserDB UserDB --> UserSystem : 저장 완료 deactivate UserDB UserSystem --> Owner : **Event**: 회원가입 완료됨\n(데이터: 회원ID, 무료체험 쿠폰) note over Owner **무료 체험 혜택** - 첫 1회 이벤트 무료 - 5분 만에 시작 가능 end note else 검증 실패 UserSystem --> Owner : 검증 실패 알림\n(사유: 유효하지 않은 사업자번호) Owner -> UserSystem : 사업자번호 재입력 end deactivate UserSystem @enduml