@startuml !theme mono title 회의시작및실시간회의록작성 외부 시퀀스 actor "사용자" as User participant "Web App" as Frontend participant "API Gateway" as Gateway participant "Meeting Service" as Meeting participant "STT Service" as STT participant "AI Service" as AI database "Redis Cache" as Cache queue "Azure Event Hubs" as EventHub == 회의 시작 == User -> Frontend: 회의 시작 버튼 클릭 activate Frontend Frontend -> Gateway: POST /api/meetings/{meetingId}/start activate Gateway Gateway -> Meeting: POST /meetings/{meetingId}/start activate Meeting Meeting -> Meeting: 회의 세션 생성 Meeting -> EventHub: MeetingStarted 이벤트 발행 activate EventHub Meeting --> Gateway: 201 Created deactivate Meeting Gateway --> Frontend: 201 Created deactivate Gateway Frontend -> Frontend: 회의 화면으로 전환 Frontend --> User: 회의 진행 화면 표시 deactivate Frontend == 음성 녹음 시작 == EventHub -> STT: MeetingStarted 이벤트 구독 activate STT STT -> STT: 음성 녹음 준비 STT --> EventHub: 녹음 준비 완료 deactivate STT deactivate EventHub == 실시간 회의록 작성 (반복) == loop 5초 간격 배치 처리 User -> Frontend: 발언 (음성 입력) activate Frontend Frontend -> STT: 음성 데이터 스트리밍 activate STT STT -> STT: 음성 인식 처리 STT -> EventHub: TranscriptReady 이벤트 발행 activate EventHub STT --> Frontend: 음성 처리 중 표시 deactivate STT deactivate Frontend == AI 병렬 처리 == EventHub -> AI: TranscriptReady 이벤트 구독 activate AI AI -> AI: [1] 회의록 내용 정리 (LLM) AI -> AI: [2] 전문용어 추출 (RAG) AI -> AI: [3] 관련 자료 검색 AI -> AI: AI 분석 결과 저장 AI -> EventHub: TranscriptSummaryCreated 발행 AI --> EventHub: AI 분석 완료 deactivate AI == 회의록 저장 및 실시간 동기화 == EventHub -> Meeting: TranscriptSummaryCreated 구독 activate Meeting Meeting -> Meeting: 회의록 데이터 저장 Meeting -> Cache: 캐시 무효화 activate Cache Cache --> Meeting: 캐시 삭제 완료 deactivate Cache Meeting -> Frontend: WebSocket 메시지 전송 activate Frontend Meeting --> EventHub: 동기화 완료 deactivate Meeting deactivate EventHub Frontend -> Frontend: 회의록 화면 업데이트 Frontend --> User: 실시간 회의록 표시 deactivate Frontend end note over User, EventHub 처리 시간: - STT 변환: 1-3초 - AI 병렬 처리: 5-8초 - 회의록 저장: 1-2초 - 총 처리 시간: 7-13초 end note @enduml