@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: 회의 세션 생성\n- 회의 상태 업데이트 (시작중)\n- 시작 시간 기록\n- 회의 통계 초기화 ' MeetingStarted 이벤트 발행 Meeting -> EventHub: MeetingStarted 이벤트 발행 activate EventHub note right 이벤트 데이터: - meetingId - title - startTime - participants end note Meeting --> Gateway: 201 Created note right 응답 데이터: - meetingId - sessionId - status: IN_PROGRESS end note deactivate Meeting Gateway --> Frontend: 201 Created (회의 세션 정보) deactivate Gateway Frontend -> Frontend: 회의 화면으로 전환\n- 음성 녹음 UI 표시\n- 참석자 목록 표시\n- 회의록 편집 영역 활성화 Frontend --> User: 회의 진행 화면 표시 deactivate Frontend == 음성 녹음 시작 == EventHub -> STT: MeetingStarted 이벤트 구독 activate STT STT -> STT: 음성 녹음 준비\n- 녹음 세션 생성\n- 오디오 스트림 초기화\n- Azure Speech 연동 준비 STT --> EventHub: 녹음 준비 완료 deactivate STT deactivate EventHub == 실시간 회의록 작성 (반복) == loop 5초 간격 배치 처리 User -> Frontend: 발언 (음성 입력) activate Frontend Frontend -> STT: 음성 데이터 스트리밍 activate STT ' 음성-텍스트 변환 STT -> STT: 음성 인식 처리\n- 화자 식별\n- Azure Speech API 호출\n- 텍스트 변환\n- 타임스탬프 기록 ' TranscriptReady 이벤트 발행 (5초 배치) STT -> EventHub: TranscriptReady 이벤트 발행 (5초 배치) activate EventHub note right 이벤트 데이터: - meetingId - segments: * speaker * text * timestamp * confidence end note STT --> Frontend: 음성 처리 중 표시 deactivate STT deactivate Frontend == AI 병렬 처리 == EventHub -> AI: TranscriptReady 이벤트 구독 activate AI par AI 병렬 처리 AI -> AI: [1] 회의록 내용 정리 (LLM)\n- 구어체 → 문어체 변환\n- 주제별 분류\n- 핵심 내용 요약\n- 문장 다듬기 and AI -> AI: [2] 전문용어 추출 (RAG)\n- 전문용어 자동 감지\n- 벡터 임베딩\n- 유사도 검색\n- 맥락 기반 설명 생성 and AI -> AI: [3] 관련 자료 검색\n- 과거 회의록 검색\n- 사내 문서 검색\n- 관련도 계산\n- 상위 5개 선정 end ' AI 분석 결과 저장 AI -> AI: AI 분석 결과 저장\n- TranscriptSummary 생성\n- TermExplanation 저장\n- 관련 문서 링크 저장 ' TranscriptSummaryCreated 이벤트 발행 AI -> EventHub: TranscriptSummaryCreated 이벤트 발행 note right 이벤트 데이터: - meetingId - summary - terms - relatedDocs - timestamp end note AI --> EventHub: AI 분석 완료 deactivate AI deactivate EventHub == 회의록 저장 및 실시간 동기화 == EventHub -> Meeting: TranscriptSummaryCreated 이벤트 구독 activate EventHub activate Meeting ' 회의록 데이터 저장 Meeting -> Meeting: 회의록 데이터 저장\n- Transcript 엔티티 업데이트\n- 버전 증가\n- 수정 이력 기록 ' 캐시 무효화 Meeting --> Cache: DEL meeting:info:{meetingId} activate Cache Cache --> Meeting: 캐시 삭제 완료 deactivate Cache ' 실시간 동기화 (WebSocket) Meeting -> Frontend: WebSocket 메시지 전송 activate Frontend note right 메시지 데이터: - type: TRANSCRIPT_UPDATE - summary - terms - relatedDocs - delta end note Meeting --> EventHub: 동기화 완료 deactivate Meeting deactivate EventHub Frontend -> Frontend: 회의록 화면 업데이트\n- 정리된 회의록 표시\n- 전문용어 하이라이트\n- 관련 자료 링크 표시\n- 수정자 표시 (3초간) Frontend --> User: 실시간 회의록 표시 deactivate Frontend end note over User, EventHub **처리 시간**: - STT 변환: 1-3초 - AI 병렬 처리: 5-8초 - 회의록 저장 및 동기화: 1-2초 - 총 처리 시간: 7-13초 (5초 배치 기준) **차별화 포인트**: - AI 병렬 처리로 회의록 정리, 전문용어 설명, 관련 자료 검색을 동시에 수행 - 정리된 회의록과 맥락 기반 용어 설명을 통합 제공 - WebSocket 델타 전송으로 네트워크 효율성 향상 end note @enduml