@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 note over Gateway 라우팅 규칙: /api/meetings/** → Meeting Service /api/minutes/** → Meeting Service /api/dashboard → User Service /api/notifications/** → Notification Service /api/auth/** → User Service /api/todos/** → Meeting Service end note == 회의 시작 == 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 par 회의록 내용 정리 AI -> AI: [1] 회의록 내용 정리 (LLM) else 전문용어 추출 AI -> AI: [2] 전문용어 추출 (RAG) else 관련 자료 검색 AI -> AI: [3] 관련 자료 검색 else 논의사항 제안 AI -> AI: [4] 추가할 논의사항 제안 (LLM) note right 실시간으로 대화 맥락 분석하여 추가할만한 논의 항목 제안 end note else 결정사항 제안 AI -> AI: [5] 결정사항 제안 (LLM) note right "~하기로 함", "~로 결정" 등의 결정 패턴 감지 및 구조화 end note end AI -> AI: AI 분석 결과 저장 AI -> EventHub: TranscriptSummaryCreated 발행 note right 이벤트 데이터: - 회의록 내용 - 전문용어 목록 - 논의사항 제안 목록 - 결정사항 제안 목록 end note 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 note right WebSocket 데이터: - 회의록 내용 - 논의사항 제안 (오른쪽 탭) - 결정사항 제안 (오른쪽 탭) - 전문용어 하이라이트 end note Meeting --> EventHub: 동기화 완료 deactivate Meeting deactivate EventHub Frontend -> Frontend: 회의록 화면 업데이트 Frontend -> Frontend: 오른쪽 탭에 추천 항목 표시 Frontend --> User: 실시간 회의록 + 추천사항 표시 deactivate Frontend == 사용자 추천 적용 == User -> Frontend: 추천 항목 "적용" 버튼 클릭 activate Frontend note right 논의사항/결정사항 중 원하는 항목 선택하여 적용 end note Frontend -> Frontend: 추천 내용을 회의록에 반영 Frontend -> Gateway: PUT /api/meetings/{meetingId}/transcript activate Gateway note right 사용자가 적용한 내용으로 회의록 업데이트 end note Gateway -> Meeting: PUT /meetings/{meetingId}/transcript activate Meeting Meeting -> Meeting: 회의록 업데이트 Meeting --> Gateway: 200 OK deactivate Meeting Gateway --> Frontend: 200 OK deactivate Gateway Frontend --> User: 회의록 업데이트 완료 deactivate Frontend end note over User, EventHub 처리 시간: - STT 변환: 1-3초 - AI 병렬 처리: 7-10초 * 회의록 정리: 3-5초 * 전문용어: 2-4초 * 논의사항 제안: 2-3초 * 결정사항 제안: 2-3초 - 회의록 저장: 1-2초 - 총 처리 시간: 9-15초 end note @enduml