kimjh afe02b3d0b AI 서비스 내부 시퀀스 PlantUML 문법 오류 수정
- 병렬 처리 블록에서 'and' 키워드를 'else'로 변경
- PlantUML sequence diagram에서 par/else/end가 올바른 문법
- 수정된 파일:
  - ai-맥락기반용어설명.puml (2개 else 사용)
  - ai-전문용어감지.puml (1개 else 사용)
  - ai-회의록자동작성.puml (1개 else 사용)
- PlantUML Server 검증 통과 확인

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-22 16:15:54 +09:00
..
2025-10-22 15:59:13 +09: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)
  • 캐시 우선 전략 적용
  • 비동기 처리 명확히 구분
  • 비즈니스 로직 상세 설명

📝 다음 단계

  1. PlantUML 검증: Docker 컨테이너 설정 후 문법 검사 실행
  2. 클래스 설계: 내부 시퀀스 기반 클래스 다이어그램 작성
  3. 데이터 설계: Repository 계층 기반 테이블 스키마 설계
  4. API 명세: Controller 기반 OpenAPI 명세 작성

작성일: 2025-10-22 작성자: 길동 (아키텍트) 버전: v1.0