hgzero/design/backend/sequence/outer/03-회의시작및템플릿선택.puml
djeon e1d411e989 외부 시퀀스 설계 가이드 및 설계서 추가
- 외부 시퀀스 설계 가이드 다운로드 (claude/sequence-outer-design.md)
- 외부 시퀀스 설계 디렉토리 생성 (design/backend/sequence/)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 13:23:50 +09:00

74 lines
2.3 KiB
Plaintext

@startuml 회의시작및템플릿선택
!theme mono
title 회의 시작 및 템플릿 선택 (Flow 3)
actor "사용자" as User
participant "Web App" as Web
participant "API Gateway" as Gateway
participant "Meeting Service" as Meeting
participant "STT Service" as STT
participant "RabbitMQ" as MQ
participant "Redis" as Cache
database "PostgreSQL" as DB
== 템플릿 선택 ==
User -> Web: 회의 템플릿 선택\n(일반/스크럼/킥오프/주간)
Web -> Gateway: GET /api/meetings/templates
Gateway -> Meeting: 템플릿 목록 조회
Meeting -> Cache: 템플릿 캐시 확인
alt 캐시 존재
Cache --> Meeting: 템플릿 목록 반환
else 캐시 미존재
Meeting -> DB: SELECT * FROM templates
DB --> Meeting: 템플릿 데이터
Meeting -> Cache: 템플릿 캐시 저장
end
Meeting --> Gateway: 템플릿 목록 응답
Gateway --> Web: 200 OK + 템플릿 목록
Web --> User: 템플릿 선택 UI 표시
== 회의 시작 ==
User -> Web: 회의 시작 버튼 클릭
Web -> Gateway: POST /api/meetings/{meetingId}/start\n+ templateId
Gateway -> Meeting: 회의 시작 요청
Meeting -> DB: BEGIN TRANSACTION
Meeting -> DB: UPDATE meetings\nSET status='ongoing',\nstarted_at=NOW()
DB --> Meeting: 업데이트 완료
Meeting -> DB: INSERT INTO meeting_sessions\n(meeting_id, template_id,\nsession_status='active')
DB --> Meeting: 세션 생성 완료
Meeting -> DB: INSERT INTO meeting_transcripts\n(session_id, template_id,\ncontent='{}')
DB --> Meeting: 회의록 초기화 완료
Meeting -> DB: COMMIT
Meeting -> Cache: 회의 상태 캐시 업데이트\n(status='ongoing')
== 이벤트 발행 ==
Meeting ->> MQ: Publish "MeetingStarted" Event\n{\n meetingId,\n sessionId,\n templateId,\n startedAt,\n participants\n}
note right
비동기 이벤트 발행
- Exchange: meeting.events
- Routing Key: meeting.started
end note
Meeting --> Gateway: 200 OK + sessionId
Gateway --> Web: 회의 시작 성공 응답
Web --> User: 회의 진행 화면 전환
== STT 서비스 시작 ==
MQ -->> STT: Consume "MeetingStarted" Event
STT -> STT: 오디오 녹음 세션 초기화
STT -> Cache: 녹음 세션 상태 저장\n(sessionId, status='recording')
STT -> STT: 마이크 활성화 및\n오디오 스트림 시작
note over STT
STT 서비스 준비 완료
- 5초 단위 음성 인식 시작
- 실시간 텍스트 변환 대기
end note
@enduml