hgzero/docs/setup-eventhub-policy.md
Minseo-Jo 92e4863fc7 feat: 회의종료 기능을 위한 DB 스키마 추가
## 변경 내용
- minutes 테이블에 user_id 컬럼 추가 (참석자별 회의록 지원)
  * user_id IS NULL: AI 통합 회의록
  * user_id IS NOT NULL: 참석자별 회의록

- agenda_sections 테이블 생성 (안건별 AI 요약 저장)
  * agenda_number, agenda_title
  * ai_summary_short, discussions, decisions (JSON)
  * pending_items (JSON), opinions (JSON)

- ai_summaries 테이블 생성 (AI 결과 캐싱)
  * summary_type: CONSOLIDATED, TODO_EXTRACTION
  * keywords, statistics (JSON)
  * processing_time_ms (성능 모니터링)

- todos 테이블 확장 (AI 추출 정보)
  * extracted_by: AI, MANUAL
  * section_reference: 관련 안건 참조
  * extraction_confidence: 0.00~1.00

## 문서
- DB-Schema-회의종료.md: 상세 스키마 문서
- ERD-회의종료.puml: ERD 다이어그램
- 회의종료-개발계획.md: 전체 개발 계획

## 설계 개선
- is_consolidated 컬럼 제거 (user_id로 구분 가능)
- 중복 정보 제거로 데이터 일관성 향상
2025-10-28 11:21:32 +09:00

108 lines
3.0 KiB
Markdown

# Event Hub 정책 설정 가이드
## 📌 개요
Azure Event Hub 사용을 위한 공유 액세스 정책(SAS Policy) 설정 방법
## 🔧 설정 단계
### 1. Azure Portal 접속
- Event Hub Namespace: `hgzero-eventhub-ns`
- 리소스 그룹: `rg-digitalgarage-02`
### 2. 정책 생성
#### (1) STT 서비스용 Send 정책
```
정책 이름: stt-send-policy
권한: ✓ Send
용도: STT 서비스가 음성 인식 결과를 Event Hub에 발행
```
**생성 방법**:
1. `hgzero-eventhub-ns` → 공유 액세스 정책
2. `+ 추가` 클릭
3. 정책 이름: `stt-send-policy`
4. **Send** 체크
5. **만들기** 클릭
6. 생성된 정책 클릭 → **연결 문자열-기본 키** 복사
#### (2) AI 서비스용 Listen 정책
```
정책 이름: ai-listen-policy
권한: ✓ Listen
용도: AI 서비스가 Event Hub에서 이벤트를 구독
```
**생성 방법**:
1. 공유 액세스 정책 → `+ 추가`
2. 정책 이름: `ai-listen-policy`
3. **Listen** 체크
4. **만들기** → 연결 문자열 복사
#### (3) 관리용 Manage 정책
```
정책 이름: hgzero-manage-policy
권한: ✓ Manage (Send + Listen 포함)
용도: 개발, 테스트, 관리 작업
```
**생성 방법**:
1. 공유 액세스 정책 → `+ 추가`
2. 정책 이름: `hgzero-manage-policy`
3. **Manage** 체크 (자동으로 Send/Listen 포함)
4. **만들기** → 연결 문자열 복사
### 3. 연결 문자열 형식
```
Endpoint=sb://hgzero-eventhub-ns.servicebus.windows.net/;
SharedAccessKeyName=stt-send-policy;
SharedAccessKey=<YOUR_KEY>;
EntityPath=hgzero-eventhub-name
```
### 4. IntelliJ 실행 프로파일 설정
#### STT 서비스 (`.run/SttServiceApplication.run.xml`)
```xml
<option name="env">
<map>
<entry key="EVENTHUB_CONNECTION_STRING" value="Endpoint=sb://...;SharedAccessKeyName=stt-send-policy;SharedAccessKey=..."/>
<entry key="EVENTHUB_NAME" value="hgzero-eventhub-name"/>
</map>
</option>
```
#### AI 서비스 (`.run/AiServiceApplication.run.xml`)
```xml
<option name="env">
<map>
<entry key="EVENTHUB_CONNECTION_STRING" value="Endpoint=sb://...;SharedAccessKeyName=ai-listen-policy;SharedAccessKey=..."/>
<entry key="EVENTHUB_NAME" value="hgzero-eventhub-name"/>
</map>
</option>
```
## ✅ 검증 방법
### 연결 테스트
```bash
# STT 서비스 시작 후 로그 확인
# 성공 메시지 예시:
[INFO] EventHubProducerClient - Connected to Event Hub: hgzero-eventhub-name
```
### 권한 검증
- **Send 정책**: 이벤트 발행만 가능
- **Listen 정책**: 이벤트 구독만 가능
- **Manage 정책**: 모든 작업 가능
## 🔐 보안 권장사항
1. **최소 권한 원칙**: 각 서비스는 필요한 권한만 부여
2. **키 회전**: 정기적으로 액세스 키 재생성
3. **환경 분리**: Dev/Prod 환경별 별도 정책 사용
4. **연결 문자열 보호**: Git에 커밋하지 않음 (환경 변수 사용)
## 📚 참고 문서
- [Azure Event Hub SAS 인증](https://learn.microsoft.com/azure/event-hubs/authenticate-shared-access-signature)