mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 07:56:24 +00:00
189 lines
4.2 KiB
Plaintext
189 lines
4.2 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: 회의 세션 생성
|
|
|
|
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
|