From 6faeaa0d611f663fcfa7447af71d5568b18e36b2 Mon Sep 17 00:00:00 2001 From: kimjh Date: Wed, 22 Oct 2025 16:33:35 +0900 Subject: [PATCH] =?UTF-8?q?=EB=85=BC=EB=A6=AC=20=EC=95=84=ED=82=A4?= =?UTF-8?q?=ED=85=8D=EC=B2=98=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20=EA=B5=AC?= =?UTF-8?q?=EB=8F=85=20=EB=B0=8F=20=EB=B0=9C=ED=96=89=20=EC=B5=9C=EC=A0=81?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AI Service 이벤트 구독 제거 - MeetingCreated, MeetingEnded 구독 제거 - TranscriptReady만 구독하도록 단순화 - Notification Service 이벤트 구독 변경 - 기존 모든 이벤트 제거 (MeetingCreated, MeetingEnded, TranscriptCreated, TodoCreated, TodoCompleted, TranscriptShared) - NotificationRequest 이벤트만 구독하도록 통합 - Meeting Service 이벤트 발행 단순화 - 발행 이벤트: MeetingEnded, NotificationRequest만 유지 - NotificationRequest에 발송수단, 대상자, 메시지 정보 포함 - 이벤트 발행/구독 매트릭스 업데이트 - 8개 이벤트 → 4개 이벤트로 단순화 - 주요 사용자 플로우 업데이트 (회의 예약, 종료, Todo 관리, 회의록 공유) - Mermaid 다이어그램 이벤트 구독 매핑 수정 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../backend/logical/logical-architecture.md | 101 +++++++++--------- .../backend/logical/logical-architecture.mmd | 2 +- 2 files changed, 51 insertions(+), 52 deletions(-) diff --git a/design/backend/logical/logical-architecture.md b/design/backend/logical/logical-architecture.md index cd47ae1..9e55fa4 100644 --- a/design/backend/logical/logical-architecture.md +++ b/design/backend/logical/logical-architecture.md @@ -111,13 +111,8 @@ - TodoProgress 엔티티: 진행 상황 (시작 시간, 완료 시간) **이벤트 발행**: -- `MeetingCreated`: 회의 생성 시 -- `MeetingStarted`: 회의 시작 시 - `MeetingEnded`: 회의 종료 시 -- `TranscriptCreated`: 회의록 생성 완료 시 -- `TranscriptShared`: 회의록 공유 시 -- `TodoCreated`: Todo 생성 시 -- `TodoCompleted`: Todo 완료 시 +- `NotificationRequest`: 통지 요청 시 (발송수단, 대상자, 메시지 등 포함) **실시간 동기화**: - WebSocket을 통해 수정 델타 전송 (전체 데이터 대신) @@ -215,14 +210,17 @@ - NotificationTemplate 엔티티: 알림 템플릿 **비동기 처리**: -- Queue를 통한 알림 발송 요청 수신 +- Event Hub를 통한 통지 요청 수신 - 대량 알림 발송 시 부하 분산 -**알림 유형**: -- 회의 생성/시작/종료 알림 -- Todo 할당/완료 알림 -- 회의록 생성/공유 알림 -- 리마인더 (회의 30분 전, Todo 마감 3일 전) +**알림 처리**: +- Meeting Service가 발행한 `NotificationRequest` 이벤트 구독 +- 이벤트에 포함된 정보: + - 발송수단 (이메일, SMS 등) + - 대상자 목록 + - 메시지 내용 및 템플릿 + - 발송 우선순위 +- 알림 템플릿 기반 메시지 생성 및 발송 --- @@ -245,14 +243,10 @@ | 이벤트 | 발행자 | 구독자 | 목적 | |--------|--------|--------|------| -| **MeetingCreated** | Meeting Service | Notification Service
AI Service | 참석자 알림 발송
회의 분석 준비 | -| **MeetingStarted** | Meeting Service | STT Service | 음성 녹음 시작 준비 | -| **MeetingEnded** | Meeting Service | STT Service
AI Service
Notification Service | 음성 녹음 종료
AI 분석 종료
종료 알림 | +| **MeetingEnded** | Meeting Service | STT Service | 음성 녹음 종료 | | **TranscriptReady** | STT Service | AI Service | AI 회의록 분석 (5초 배치) | | **TranscriptSummaryCreated** | AI Service | Meeting Service | 회의록 최종 저장 및 동기화 | -| **TodoCreated** | Meeting Service | Notification Service | 담당자 알림 발송 | -| **TodoCompleted** | Meeting Service | Notification Service | 완료 알림 | -| **TranscriptShared** | Meeting Service | Notification Service | 회의록 공유 알림 | +| **NotificationRequest** | Meeting Service | Notification Service | 통지 발송 (발송수단, 대상자, 메시지 포함) | **Azure Event Hubs 구성**: - **Event Hub 네이밍**: `meeting-events`, `transcript-events`, `todo-events` @@ -325,21 +319,18 @@ ↓ 회의 생성 (DB 저장) ↓ - MeetingCreated 이벤트 발행 + NotificationRequest 이벤트 발행 ↓ - ┌───────────────────┴───────────────────┐ - ↓ ↓ - [Notification Service] [AI Service] - 참석자 초대 알림 발송 회의 분석 준비 + [Notification Service] + 참석자 초대 알림 발송 ``` **단계별 처리**: 1. 사용자가 회의 정보 입력 (제목, 날짜/시간, 장소, 참석자) 2. Meeting Service: 회의 생성 및 DB 저장 3. Meeting Service: Redis 캐시 저장 (`meeting:info:{meetingId}`) -4. Meeting Service: `MeetingCreated` 이벤트 발행 +4. Meeting Service: `NotificationRequest` 이벤트 발행 (초대 알림) 5. Notification Service: 참석자 전원에게 초대 이메일 발송 -6. AI Service: 회의 일정 분석 준비 --- @@ -380,11 +371,17 @@ ↓ [Meeting Service] → MeetingEnded 이벤트 발행 ↓ -┌───┴───┬───────┬────────┐ -↓ ↓ ↓ ↓ -STT AI Notify Meeting -음성 Todo 종료 Todo -종료 추출 알림 생성 +[STT Service] +음성 녹음 종료 + ↓ +[Meeting Service] + ├─ Todo 생성 및 할당 (내부) + ├─ 섹션별 검증 완료 (내부) + ├─ 회의록 확정 + └─ NotificationRequest 이벤트 발행 + ↓ + [Notification Service] + 종료 알림 및 Todo 할당 알림 발송 ``` **단계별 처리**: @@ -393,17 +390,13 @@ STT AI Notify Meeting 3. **STT Service** (구독): - 음성 녹음 중지 - 최종 STT 변환 완료 확인 -4. **AI Service** (구독): - - 최종 회의록 분석 - - Todo 자동 추출 및 담당자 식별 - - 추출된 Todo 정보를 Meeting Service에 전송 -5. **Meeting Service**: - - Todo 생성 및 할당 (내부 처리) +4. **Meeting Service** (내부 처리): + - Todo 생성 및 할당 - 회의록 섹션 링크 연결 - - `TodoCreated` 이벤트 발행 - - 섹션별 검증 완료 처리 (내부 처리) + - 섹션별 검증 완료 처리 - 회의록 확정 (확정 버전 생성) -6. **Notification Service** (구독): + - `NotificationRequest` 이벤트 발행 (종료 알림, Todo 할당 알림) +5. **Notification Service** (구독): - 회의 종료 알림 발송 - Todo 할당 알림 발송 @@ -414,10 +407,13 @@ STT AI Notify Meeting ``` [Todo 완료 처리] ↓ -[Meeting Service] → TodoCompleted 이벤트 발행 - ↓ -Notification -완료 알림 +[Meeting Service] + ├─ Todo 상태 업데이트 (내부) + ├─ 회의록 반영 (내부) + └─ NotificationRequest 이벤트 발행 + ↓ + [Notification Service] + 완료 알림 발송 ``` **단계별 처리**: @@ -425,7 +421,7 @@ Notification 2. Meeting Service: Todo 상태 업데이트 (완료 시간, 완료자 기록) 3. Meeting Service: 관련 회의록에 완료 상태 자동 반영 (내부 처리) 4. Meeting Service: Redis 캐시 무효화 (`meeting:info:{meetingId}`) -5. Meeting Service: `TodoCompleted` 이벤트 발행 +5. Meeting Service: `NotificationRequest` 이벤트 발행 (완료 알림) 6. **Notification Service** (구독): - 회의록 작성자에게 완료 알림 발송 - 모든 Todo 완료 시 전체 완료 알림 발송 @@ -441,11 +437,13 @@ Notification ``` [회의록 확정] → [공유 버튼 클릭] ↓ -[Meeting Service] → 공유 링크 생성 - ↓ -[Notification Service] → 참석자 알림 발송 - ↓ -[Meeting Service] → 다음 회의 일정 자동 등록 (언급된 경우) +[Meeting Service] + ├─ 공유 링크 생성 + ├─ 다음 회의 일정 등록 (내부) + └─ NotificationRequest 이벤트 발행 + ↓ + [Notification Service] + 공유 알림 발송 ``` **단계별 처리**: @@ -453,8 +451,9 @@ Notification 2. Meeting Service: 공유 링크 생성 (고유 URL) 3. Meeting Service: 공유 정보 DB 저장 (공유 시간, 대상, 권한) 4. Meeting Service: Redis 캐시 무효화 -5. Notification Service: 참석자 전원에게 이메일 알림 발송 -6. Meeting Service: 다음 회의 일정이 언급된 경우 캘린더 자동 등록 +5. Meeting Service: 다음 회의 일정이 언급된 경우 캘린더 자동 등록 (내부 처리) +6. Meeting Service: `NotificationRequest` 이벤트 발행 (공유 알림) +7. Notification Service: 참석자 전원에게 이메일 알림 발송 --- diff --git a/design/backend/logical/logical-architecture.mmd b/design/backend/logical/logical-architecture.mmd index 16a337f..cdfd16a 100644 --- a/design/backend/logical/logical-architecture.mmd +++ b/design/backend/logical/logical-architecture.mmd @@ -88,7 +88,7 @@ graph TB %% ======================================== %% 이벤트 구독 정보 (노트) %% ======================================== - Note1["📋 이벤트 구독 매핑

Meeting Service:
- TranscriptSummaryCreated

STT Service:
- MeetingEnded

AI Service:
- MeetingCreated
- MeetingEnded
- TranscriptReady

Notification Service:
- MeetingCreated
- MeetingEnded
- TranscriptCreated
- TodoCreated
- TodoCompleted"] + Note1["📋 이벤트 구독 매핑

Meeting Service:
- TranscriptSummaryCreated

STT Service:
- MeetingEnded

AI Service:
- TranscriptReady

Notification Service:
- NotificationRequest"] Note1 -.->|"참조"| EventHubs