mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 14:56:23 +00:00
- 외부 시퀀스 다이어그램 업데이트 * 회의예약: 템플릿 선택 플로우 추가, 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>
115 lines
3.3 KiB
Plaintext
115 lines
3.3 KiB
Plaintext
@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
|
|
|
|
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 -> WebApp: 회의 정보 입력\n(제목, 날짜/시간, 장소, 참석자)
|
|
activate WebApp
|
|
|
|
WebApp -> Gateway: POST /api/meetings/reserve\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: NotificationRequest 이벤트 발행
|
|
activate EventHub
|
|
note right
|
|
이벤트 데이터:
|
|
- 발송수단: EMAIL
|
|
- 대상자: 참석자 목록
|
|
- 메시지: 회의 초대 내용
|
|
- 메타데이터: 회의 제목, 일시, 장소
|
|
end note
|
|
EventHub --> Meeting: 발행 완료
|
|
deactivate EventHub
|
|
|
|
Meeting --> Gateway: 201 Created\n회의 ID, 회의 정보
|
|
deactivate Meeting
|
|
|
|
Gateway --> WebApp: 회의 생성 응답
|
|
deactivate Gateway
|
|
|
|
WebApp --> User: 회의 예약 완료 표시\n캘린더에 자동 등록
|
|
deactivate WebApp
|
|
|
|
== 템플릿 선택 (선택 사항) ==
|
|
User -> WebApp: 템플릿 선택\n(일반, 스크럼, 킥오프, 주간)
|
|
activate WebApp
|
|
|
|
WebApp -> Gateway: PUT /api/meetings/{meetingId}/template\n+ JWT 토큰\n+ templateId
|
|
activate Gateway
|
|
|
|
Gateway -> Meeting: 템플릿 적용 요청
|
|
activate Meeting
|
|
|
|
Meeting -> MeetingDB: 템플릿 정보 저장
|
|
activate MeetingDB
|
|
MeetingDB --> Meeting: 저장 완료
|
|
deactivate MeetingDB
|
|
|
|
Meeting --> Gateway: 200 OK\n템플릿 적용 완료
|
|
deactivate Meeting
|
|
|
|
Gateway --> WebApp: 템플릿 적용 응답
|
|
deactivate Gateway
|
|
|
|
WebApp --> User: 템플릿 적용 완료
|
|
deactivate WebApp
|
|
|
|
== 참석자 초대 알림 (비동기) ==
|
|
EventHub -> Notification: NotificationRequest 이벤트 수신\n(Consumer Group: notification-service-group)
|
|
|
|
Notification -> Email: 참석자 전원에게 초대 이메일 발송\n(회의 제목, 일시, 장소, 참여 링크)
|
|
Email --> Notification: 발송 완료
|
|
|
|
Notification -> MeetingDB: 알림 발송 기록 저장
|
|
MeetingDB --> Notification: 저장 완료
|
|
|
|
== 회의 시작 30분 전 리마인더 (스케줄링) ==
|
|
note over Notification
|
|
스케줄링된 작업:
|
|
회의 시작 시간 30분 전 자동 실행
|
|
end note
|
|
|
|
Notification -> Email: 참석자 전원에게 리마인더 이메일 발송\n(회의 시작 30분 전)
|
|
Email --> Notification: 발송 완료
|
|
|
|
@enduml
|