외부 시퀀스 설계 완료

- 7개 주요 비즈니스 플로우 설계 완료
  1. 회의예약및참석자초대 (2.5KB)
  2. 회의시작및실시간회의록작성 (4.9KB)
  3. 회의종료및최종확정 (4.6KB)
  4. 회의록공유 (2.1KB)
  5. Todo완료및회의록반영 (1.9KB)
  6. 대시보드조회 (1.6KB)
  7. 회의록상세조회및수정 (4.4KB)

- 설계 특징
  - 병렬 처리 전략: 서브 에이전트 활용 동시 작성
  - 5개 서비스 통합 아키텍처 (User, Meeting, STT, AI, Notification)
  - Azure Event Hubs를 통한 Pub/Sub 이벤트 기반 통신
  - Redis Cache-Aside 패턴을 통한 성능 최적화
  - AI 병렬 처리 (회의록 정리 + 전문용어 설명 + 관련 자료 검색)
  - WebSocket 실시간 동기화 (델타 전송)

- 작성원칙 준수
  - 유저스토리와 1:1 매칭
  - 논리 아키텍처에 정의된 참여자 표시
  - UI/UX 사용자 플로우 참조
  - 동기/비동기 통신 명확히 구분 (실선/점선)
  - 한글 설명 추가
  - PlantUML 표준 (!theme mono, 올바른 화살표 문법)

- PlantUML 문법 검증 완료 (수동)
  - @startuml, !theme mono 사용
  - 금지된 ..> 화살표 미사용
  - 동기 (→), 비동기 (->>), 캐시 (-.->) 구분

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
kimjh
2025-10-22 14:58:20 +09:00
parent 1b5efd76d8
commit a43b0c63cb
7 changed files with 664 additions and 0 deletions
@@ -0,0 +1,142 @@
@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 이벤트 발행\n{\n "meetingId": "...",\n "title": "...",\n "startTime": "...",\n "participants": [...]\n}
activate EventHub
Meeting --> Gateway: 201 Created\n{\n "meetingId": "...",\n "sessionId": "...",\n "status": "IN_PROGRESS"\n}
deactivate Meeting
Gateway --> Frontend: 201 Created\n회의 세션 정보
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 이벤트 발행\n{\n "meetingId": "...",\n "segments": [\n {\n "speaker": "홍길동",\n "text": "...",\n "timestamp": "...",\n "confidence": 0.95\n }\n ]\n}
activate EventHub
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 이벤트 발행\n{\n "meetingId": "...",\n "summary": "...",\n "terms": [...],\n "relatedDocs": [...],\n "timestamp": "..."\n}
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 메시지 전송\n{\n "type": "TRANSCRIPT_UPDATE",\n "summary": "...",\n "terms": [...],\n "relatedDocs": [...],\n "delta": { "changes": [...] }\n}
activate Frontend
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