hgzero/design/backend/sequence/outer/회의시작및실시간회의록작성.puml
yabo0812 ed9fa6f934 설계서 업데이트: 실제 구현 반영 및 불필요한 다이어그램 정리
- 외부 시퀀스 다이어그램 업데이트
  * 회의예약: 템플릿 선택 플로우 추가, API 경로 수정 (/api/meetings/reserve)
  * 회의시작: SessionResponse 구조 반영 (sessionId, minutesId, websocketUrl 등)
  * 회의종료: AI 분석 동기 처리 및 MeetingEndResponse 구조 반영, RAG용 이벤트 추가

- 불필요한 다이어그램 삭제
  * 외부: 대시보드조회.puml (Meeting Service로 이동), Todo완료및회의록반영.puml (통합됨)
  * 내부: meeting-대시보드조회.puml, meeting-최종회의록확정.puml (중복)

- 실제 API Controller 구현과 일치하도록 API 경로 및 응답 구조 정확히 반영

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 18:20:15 +09:00

199 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
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: 회의 세션 생성\n- Session 객체 생성\n- Minutes 초기화 (DRAFT)\n- WebSocket URL 생성
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\n- sessionId\n- meetingId\n- minutesId\n- status (IN_PROGRESS)\n- websocketUrl\n- sessionToken\n- startedAt\n- expiresAt
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