hgzero/design/backend/sequence/outer/회의시작및실시간회의록작성.puml

199 lines
4.5 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
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 -> STT: POST /stt/recording/start\n(meetingId, participantIds)
activate STT
note right
동기 호출로 즉시 녹음 시작
회의 시작과 음성 녹음이 원자적으로 처리
end note
STT -> STT: 음성 녹음 준비 및 시작
STT --> Meeting: 200 OK (recordingId)
deactivate STT
Meeting --> Gateway: 201 Created
deactivate Meeting
Gateway --> Frontend: 201 Created
deactivate Gateway
Frontend -> Frontend: 회의 화면으로 전환
Frontend --> User: 회의 진행 화면 표시
deactivate Frontend
== 음성 녹음 진행 ==
== 실시간 회의록 작성 (반복) ==
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