@startuml !theme mono title 01. 회의 준비 및 시작 - 이벤트스토밍 플로우 actor "회의록 작성자" as User participant "회의록 시스템" as System participant "캘린더 시스템" as Calendar participant "알림 시스템" as Notification == 회의 예약 == User -> System : **커맨드**: 회의 예약하기\n(데이터: 회의 제목, 날짜/시간, 장소, 참석자 목록) activate System System -> System : 회의 정보 검증 System --> User : **이벤트**: 회의가 예약됨\n(데이터: 회의 ID, 회의 정보) deactivate System note right of System **Policy/Rule**: 회의 예약 시 → 자동으로 참석자에게 초대 이메일 발송 end note System -> Calendar : 일정 동기화 요청\n(데이터: 회의 정보, 캘린더 ID) Calendar --> System : **이벤트**: 일정이 캘린더에 등록됨 System -> Notification : 초대 알림 발송 요청\n(데이터: 참석자 목록, 회의 정보) Notification --> System : **이벤트**: 참석자가 초대됨\n(데이터: 참석자 목록, 초대 상태) Notification -> User : 초대 이메일 발송 Notification -> User : **이벤트**: 알림이 발송됨\n(데이터: 알림 ID, 발송 대상) == 회의록 도구 준비 == User -> System : **커맨드**: 회의록 템플릿 선택하기\n(데이터: 템플릿 ID, 커스터마이징 옵션) activate System System -> System : 템플릿 로드 및 설정 System --> User : **이벤트**: 회의록 도구가 준비됨\n(데이터: 회의록 ID, 템플릿 정보) deactivate System == 회의 시작 전 리마인더 == note over System, Notification **Policy/Rule**: 회의 시작 30분 전 → 참석자에게 리마인더 발송 end note System -> Notification : 리마인더 발송 (30분 전) Notification -> User : 회의 시작 알림 == 회의 시작 == User -> System : **커맨드**: 회의 시작하기\n(데이터: 회의 ID, 시작 시간) activate System System -> System : 회의 세션 생성 System -> System : 음성 녹음 준비 System --> User : **이벤트**: 회의가 시작됨\n(데이터: 회의 ID, 시작 시간, 참석자 수) deactivate System note over User, Notification **Actor**: 회의록 작성자 **External System**: 캘린더 시스템, 알림 시스템 **커맨드 데이터**: 회의 정보, 템플릿 설정 **이벤트 데이터**: 회의 ID, 상태, 참석자 정보 end note @enduml