mirror of
https://github.com/hwanny1128/HGZero.git
synced 2025-12-06 09:06:24 +00:00
논리 아키텍처 이벤트 구독 및 발행 최적화
- 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 <noreply@anthropic.com>
This commit is contained in:
parent
3cf8eb2995
commit
6faeaa0d61
@ -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<br/>AI Service | 참석자 알림 발송<br/>회의 분석 준비 |
|
||||
| **MeetingStarted** | Meeting Service | STT Service | 음성 녹음 시작 준비 |
|
||||
| **MeetingEnded** | Meeting Service | STT Service<br/>AI Service<br/>Notification Service | 음성 녹음 종료<br/>AI 분석 종료<br/>종료 알림 |
|
||||
| **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: 참석자 전원에게 이메일 알림 발송
|
||||
|
||||
---
|
||||
|
||||
|
||||
@ -88,7 +88,7 @@ graph TB
|
||||
%% ========================================
|
||||
%% 이벤트 구독 정보 (노트)
|
||||
%% ========================================
|
||||
Note1["📋 이벤트 구독 매핑<br/><br/>Meeting Service:<br/>- TranscriptSummaryCreated<br/><br/>STT Service:<br/>- MeetingEnded<br/><br/>AI Service:<br/>- MeetingCreated<br/>- MeetingEnded<br/>- TranscriptReady<br/><br/>Notification Service:<br/>- MeetingCreated<br/>- MeetingEnded<br/>- TranscriptCreated<br/>- TodoCreated<br/>- TodoCompleted"]
|
||||
Note1["📋 이벤트 구독 매핑<br/><br/>Meeting Service:<br/>- TranscriptSummaryCreated<br/><br/>STT Service:<br/>- MeetingEnded<br/><br/>AI Service:<br/>- TranscriptReady<br/><br/>Notification Service:<br/>- NotificationRequest"]
|
||||
|
||||
Note1 -.->|"참조"| EventHubs
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user