mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 10:16:24 +00:00
Meeting Service 내부 시퀀스 설계
Meeting Service의 내부 처리 흐름을 표현한 시퀀스 설계서 모음입니다.
📋 설계 개요
목적
- Meeting Service 내부의 Controller → Service → Repository 계층 구조 표현
- 각 시나리오별 비즈니스 로직 및 데이터 처리 흐름 상세화
- 캐시, 데이터베이스, 메시징 인프라와의 상호작용 명시
- 동기/비동기 처리 구분 명확화
설계 원칙
- 유저스토리 기반: 모든 시나리오는 유저스토리와 1:1 매칭
- 외부 시퀀스 일치: 외부 시퀀스 설계와 일관성 유지
- 계층 구조 명확화: Controller, Service, Repository 역할 분리
- 인프라 표시: DB, Cache, Event Hub 등 외부 참여자는 <> 표시
- 비즈니스 로직 설명: note를 통한 핵심 로직 설명
📂 시나리오별 설계 파일
1. 대시보드 조회
파일: meeting-대시보드조회.puml
유저스토리: AFR-USER-020
주요 처리:
- 사용자별 대시보드 정보 조회 (예정된 회의, Todo, 최근 회의록, 공유받은 회의록)
- Redis 캐시 우선 조회 (Cache-Aside 패턴)
- 통계 정보 계산 (예정 회의 수, Todo 완료율)
- 응답 데이터 TTL: 5분
주요 컴포넌트:
- DashboardController
- DashboardService
- MeetingRepository, TodoRepository, MinutesRepository
- Redis Cache, Meeting DB
2. 회의 예약
파일: meeting-회의예약.puml
유저스토리: UFR-MEET-010
주요 처리:
- 회의 정보 입력 검증 (제목, 날짜/시간, 참석자)
- 중복 회의 체크 (같은 시간대 회의 확인)
- 회의 및 참석자 정보 저장
- 캐시 저장 (회의 정보, 참석자 목록)
- 비동기 이벤트 발행 (MeetingCreated)
주요 컴포넌트:
- MeetingController
- MeetingService
- MeetingRepository, ParticipantRepository
- Meeting DB, Redis Cache
- Azure Event Hubs (비동기 알림)
3. 회의 시작
파일: meeting-회의시작.puml
유저스토리: UFR-MEET-030
주요 처리:
- 회의 시작 권한 검증 (생성자 또는 참석자)
- 회의 상태 확인 (SCHEDULED → IN_PROGRESS)
- 회의 세션 생성 (sessionId, startedAt)
- 회의록 초안 생성 (빈 회의록)
- 비동기 이벤트 발행 (MeetingStarted → STT 녹음 시작)
주요 컴포넌트:
- MeetingController
- MeetingService, SessionService
- MeetingRepository, SessionRepository
- Meeting DB, Redis Cache
- Azure Event Hubs (STT 연동)
4. 회의 종료
파일: meeting-회의종료.puml
유저스토리: UFR-MEET-040
주요 처리:
- 회의 종료 권한 검증 (생성자만)
- 회의 세션 종료 (endedAt 기록)
- 회의 상태 변경 (IN_PROGRESS → ENDED)
- 회의 통계 생성 (총 시간, 참석자 수, 발언 횟수)
- 회의록 상태 업데이트 (DRAFT)
- 비동기 이벤트 발행 (MeetingEnded → AI 최종 회의록 생성)
주요 컴포넌트:
- MeetingController
- MeetingService, SessionService, StatisticsService
- MeetingRepository, SessionRepository
- Meeting DB, Redis Cache
- Azure Event Hubs (AI 연동)
5. 회의록 확정
파일: meeting-회의록확정.puml
유저스토리: UFR-MEET-050
주요 처리:
- 회의록 확정 권한 검증 (생성자만)
- 필수 항목 검증 (제목, 참석자, 논의 내용, 결정 사항)
- 확정 버전 생성 (v1.0)
- 회의록 스냅샷 저장 (버전 관리)
- 회의록 상태 변경 (DRAFT → FINALIZED)
- 비동기 이벤트 발행 (MinutesFinalized → AI Todo 추출)
주요 컴포넌트:
- MinutesController
- MinutesService, ValidationService
- MinutesRepository
- Meeting DB, Redis Cache
- Azure Event Hubs (AI Todo 추출)
6. 회의록 상세 조회
파일: meeting-회의록상세조회.puml
유저스토리: UFR-MEET-047
주요 처리:
- 회의록 조회 권한 검증 (생성자, 참석자, 공유받은 사용자)
- Redis 캐시 우선 조회 (Cache-Aside 패턴)
- 회의록 기본 정보 + 참석자 + 섹션 + AI 요약 조회
- 관련 회의록 조회 (벡터 유사도 기반, 최대 3개)
- 조회 이력 기록
- 응답 데이터 TTL: 10분
주요 컴포넌트:
- MinutesController
- MinutesService, RelatedMinutesService
- MinutesRepository, SectionRepository
- Meeting DB, Redis Cache
7. 회의록 수정
파일: meeting-회의록수정.puml
유저스토리: UFR-MEET-055
주요 처리:
- 회의록 수정 권한 검증 (생성자만)
- 잠긴 섹션 수정 여부 확인
- 수정 이력 저장 (버전 관리)
- 회의록 제목 및 섹션 내용 수정
- 확정된 회의록은 DRAFT로 상태 변경
- 실시간 동기화 (WebSocket 브로드캐스트)
- 캐시 무효화
주요 컴포넌트:
- MinutesController
- MinutesService, VersionService, CollaborationService
- MinutesRepository, SectionRepository
- Meeting DB, Redis Cache
- WebSocket (실시간 협업)
8. 회의록 공유
파일: meeting-회의록공유.puml
유저스토리: UFR-MEET-060
주요 처리:
- 회의록 공유 권한 검증 (생성자만)
- 회의록 상태 확인 (FINALIZED만 공유 가능)
- 공유 링크 생성 (UUID 기반 토큰)
- 공유 대상 및 권한 설정 (READ_ONLY, COMMENT, EDIT)
- 다음 회의 일정 추출 및 캘린더 등록
- 비동기 이벤트 발행 (MinutesShared → 이메일 알림)
주요 컴포넌트:
- ShareController
- ShareService, CalendarService
- MinutesRepository, ShareRepository
- Meeting DB, Redis Cache
- Azure Event Hubs (알림 발송)
9. Todo 할당
파일: meeting-Todo할당.puml
유저스토리: UFR-TODO-010
주요 처리:
- Todo 정보 입력 검증 (내용, 담당자, 회의록 ID)
- 회의록 존재 확인
- Todo 생성 및 저장
- 회의록 섹션과 양방향 연결 (Todo 뱃지 추가)
- 마감일이 있는 경우 캘린더 이벤트 생성
- 비동기 이벤트 발행 (TodoAssigned → 담당자 알림)
- 캐시 무효화 (대시보드, 회의록)
주요 컴포넌트:
- TodoController
- TodoService, CalendarService
- TodoRepository, MinutesRepository
- Meeting DB, Redis Cache
- Azure Event Hubs (알림 발송)
10. Todo 완료 처리
파일: meeting-Todo완료처리.puml
유저스토리: UFR-TODO-030
주요 처리:
- Todo 완료 권한 검증 (담당자만)
- Todo 상태 변경 (IN_PROGRESS → COMPLETED)
- 회의록 섹션에 완료 상태 자동 반영
- 모든 Todo 완료 여부 확인
- 실시간 동기화 (WebSocket 브로드캐스트)
- 비동기 이벤트 발행 (TodoCompleted 또는 AllTodosCompleted)
- 캐시 무효화 (대시보드, 회의록)
주요 컴포넌트:
- TodoController
- TodoService, CollaborationService
- TodoRepository, MinutesRepository
- Meeting DB, Redis Cache
- WebSocket (실시간 협업)
- Azure Event Hubs (알림 발송)
🎯 설계 특징
1. 캐시 전략
- Cache-Aside 패턴: 캐시 우선 조회 후 DB 조회
- TTL 설정: 조회 데이터 5-10분, 회의 정보 10분
- 캐시 무효화: 데이터 변경 시 즉시 삭제
2. 비동기 처리
- 이벤트 기반: Azure Event Hubs를 통한 이벤트 발행
- 서비스 분리: STT, AI, Notification 서비스와 비동기 통신
- 성능 최적화: 장시간 작업은 비동기로 처리
3. 실시간 협업
- WebSocket: 회의록 수정 및 Todo 완료 시 실시간 동기화
- 변경 델타 전송: 전체 데이터가 아닌 변경 부분만 전송
- 충돌 방지: 버전 관리 및 잠금 기능
4. 권한 관리
- 역할 기반: 생성자, 참석자, 공유받은 사용자 구분
- 작업별 권한: 수정, 확정, 공유 등 작업별 권한 검증
- 섹션 잠금: 검증 완료 섹션은 생성자만 잠금/해제
5. 데이터 일관성
- 버전 관리: 회의록 수정 이력 및 스냅샷 저장
- 양방향 연결: Todo와 회의록 섹션 간 양방향 링크
- 트랜잭션: 관련 데이터는 동일 트랜잭션 내 처리
🔍 검증 사항
PlantUML 문법
- ✅
!theme mono사용 - ✅ 외부 참여자
<<E>>표시 - ✅ 동기 호출
→, 비동기 호출--> - ✅ alt/loop/note 적절히 사용
유저스토리 일치
- ✅ 모든 시나리오가 유저스토리와 매칭
- ✅ 외부 시퀀스 설계와 일치
- ✅ UI/UX 설계의 사용자 플로우 반영
아키텍처 원칙
- ✅ 계층 구조 명확 (Controller → Service → Repository)
- ✅ 캐시 우선 전략 적용
- ✅ 비동기 처리 명확히 구분
- ✅ 비즈니스 로직 상세 설명
📝 다음 단계
- PlantUML 검증: Docker 컨테이너 설정 후 문법 검사 실행
- 클래스 설계: 내부 시퀀스 기반 클래스 다이어그램 작성
- 데이터 설계: Repository 계층 기반 테이블 스키마 설계
- API 명세: Controller 기반 OpenAPI 명세 작성
작성일: 2025-10-22 작성자: 길동 (아키텍트) 버전: v1.0