mirror of
https://github.com/hwanny1128/HGZero.git
synced 2026-06-13 17:39:09 +00:00
외부 시퀀스 설계 완료
- 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:
@@ -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
|
||||
Reference in New Issue
Block a user