hgzero/design/backend/sequence/outer/회의예약및참석자초대.puml
ondal 715add4dbc 외부/내부 시퀀스 설계 일관성 개선 및 표준화
주요 변경사항:

[Critical]
- API 엔드포인트 통일: POST /api/minutes/{minutesId}/finalize
- 이벤트 이름 표준화: MinutesFinalized

[Warning]
- API Gateway 라우팅 규칙 문서화 (외부 시퀀스 7개 파일)
- 대시보드 API 경로 통일: GET /api/dashboard
- AI 제안 병합 프로세스 상세 문서화
- 회의록 확정 검증 로직 5단계 상세화

[Minor]
- Redis 캐시 TTL 명시 (7개 파일, TTL 정책 표준화)
- 대시보드 페이지네이션 파라미터 추가
- 에러 응답 포맷 표준화 (14개 에러 응답)

총 31개 파일 수정, 34건의 개선 사항 적용

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-23 09:48:06 +09:00

84 lines
2.6 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\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)
Notification -> Email: 참석자 전원에게 초대 이메일 발송\n(회의 제목, 일시, 장소, 참여 링크)
Email --> Notification: 발송 완료
Notification -> MeetingDB: 알림 발송 기록 저장
MeetingDB --> Notification: 저장 완료
== 회의 시작 30분 전 리마인더 (스케줄링) ==
note over Notification
스케줄링된 작업:
회의 시작 시간 30분 전 자동 실행
end note
Notification -> Email: 참석자 전원에게 리마인더 이메일 발송\n(회의 시작 30분 전)
Email --> Notification: 발송 완료
@enduml