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,84 @@
|
||||
@startuml 회의예약및참석자초대
|
||||
!theme mono
|
||||
|
||||
title 회의 예약 및 참석자 초대 플로우
|
||||
|
||||
actor "사용자" as User
|
||||
participant "Web App" as WebApp
|
||||
participant "API Gateway" as Gateway
|
||||
participant "Meeting Service" as Meeting
|
||||
database "Meeting DB" as MeetingDB
|
||||
database "Redis Cache" as Redis
|
||||
participant "Azure Event Hubs" as EventHub
|
||||
participant "Notification Service" as Notification
|
||||
participant "Email Service" as Email
|
||||
|
||||
== 회의 예약 ==
|
||||
User -> WebApp: 회의 정보 입력\n(제목, 날짜/시간, 장소, 참석자)
|
||||
activate WebApp
|
||||
|
||||
WebApp -> Gateway: POST /api/meetings\n+ JWT 토큰\n+ 사용자 정보 (userId, userName, email)
|
||||
activate Gateway
|
||||
|
||||
Gateway -> Meeting: 회의 생성 요청
|
||||
activate Meeting
|
||||
|
||||
Meeting -> MeetingDB: 회의 정보 저장\n(제목, 일시, 장소, 참석자, 생성자)
|
||||
activate MeetingDB
|
||||
MeetingDB --> Meeting: 회의 ID 반환
|
||||
deactivate MeetingDB
|
||||
|
||||
Meeting -> Redis: 회의 정보 캐싱\nkey: meeting:info:{meetingId}\nTTL: 10분
|
||||
activate Redis
|
||||
Redis --> Meeting: 캐싱 완료
|
||||
deactivate Redis
|
||||
|
||||
Meeting -> Redis: 참석자 목록 캐싱\nkey: meeting:participants:{meetingId}\nTTL: 10분
|
||||
activate Redis
|
||||
Redis --> Meeting: 캐싱 완료
|
||||
deactivate Redis
|
||||
|
||||
Meeting -> EventHub: MeetingCreated 이벤트 발행\n(meetingId, 제목, 일시, 참석자 목록)
|
||||
activate EventHub
|
||||
EventHub --> Meeting: 발행 완료
|
||||
deactivate EventHub
|
||||
|
||||
Meeting --> Gateway: 201 Created\n회의 ID, 회의 정보
|
||||
deactivate Meeting
|
||||
|
||||
Gateway --> WebApp: 회의 생성 응답
|
||||
deactivate Gateway
|
||||
|
||||
WebApp --> User: 회의 예약 완료 표시\n캘린더에 자동 등록
|
||||
deactivate WebApp
|
||||
|
||||
== 참석자 초대 알림 (비동기) ==
|
||||
EventHub -> Notification: MeetingCreated 이벤트 수신\n(Consumer Group: notification-service-group)
|
||||
activate Notification
|
||||
|
||||
Notification -> Email: 참석자 전원에게 초대 이메일 발송\n(회의 제목, 일시, 장소, 참여 링크)
|
||||
activate Email
|
||||
Email --> Notification: 발송 완료
|
||||
deactivate Email
|
||||
|
||||
Notification -> MeetingDB: 알림 발송 기록 저장
|
||||
activate MeetingDB
|
||||
MeetingDB --> Notification: 저장 완료
|
||||
deactivate MeetingDB
|
||||
|
||||
deactivate Notification
|
||||
|
||||
== 회의 시작 30분 전 리마인더 (스케줄링) ==
|
||||
note over Notification
|
||||
스케줄링된 작업:
|
||||
회의 시작 시간 30분 전 자동 실행
|
||||
end note
|
||||
|
||||
Notification -> Email: 참석자 전원에게 리마인더 이메일 발송\n(회의 시작 30분 전)
|
||||
activate Notification
|
||||
activate Email
|
||||
Email --> Notification: 발송 완료
|
||||
deactivate Email
|
||||
deactivate Notification
|
||||
|
||||
@enduml
|
||||
Reference in New Issue
Block a user