hgzero/design/backend/sequence/outer/회의시작및실시간회의록작성.puml
kimjh b05f7b2f22 PlantUML JSON 구조 오류 수정 (회의시작및실시간회의록작성)
- 메시지 텍스트의 JSON 데이터를 note 블록으로 분리
- MeetingStarted 이벤트: JSON을 note로 이동
- TranscriptReady 이벤트: JSON을 note로 이동
- TranscriptSummaryCreated 이벤트: JSON을 note로 이동
- WebSocket 메시지: JSON을 note로 이동
- 201 Created 응답: JSON을 note로 이동

PlantUML 렌더링 오류 해결

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 15:19:07 +09:00

181 lines
4.7 KiB
Plaintext

@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