# NAVER WORKS 연동 시나리오

**작성일**: 2025-09-17
**작성자**: happybell80
**상태**: 시나리오 설계 중

## 1. Slack에서 NAVER WORKS 메일 요약 받기

### 시나리오
사용자가 Slack에서 "@로빙 네이버웍스 메일 확인해줘"라고 요청하면, 로빙이 NAVER WORKS 메일을 조회하고 요약해서 Slack으로 전달

### 전제 조건
- auth-server에 NAVER WORKS OAuth 구현 완료
- skill-naverworks 서비스 구현 완료 (포트 8511)
- Service Account 인증 설정 완료
- Slack workspace 연동 완료

### 상세 플로우
```
1. Slack 메시지 수신
   Slack → /slack/events/router → rb8001
   메시지: "@로빙 네이버웍스 메일 확인해줘"

2. 의도 파악 및 라우팅
   rb8001 → 키워드 분석 ("네이버웍스", "메일")
   → skill-naverworks 호출 결정

3. NAVER WORKS API 호출
   rb8001 → POST skill-naverworks:8511/mail/summary
   → Service Account Token 사용
   → GET https://www.worksapis.com/v1.0/users/{userId}/mail/mailfolders/0/children

4. 메일 내용 처리
   skill-naverworks → 메일 목록 조회
   → 최근 메일 5개 추출
   → Gemini API로 요약 생성

5. Slack 응답
   skill-naverworks → rb8001 → skill-slack
   → POST /slack/send_message
   → 채널에 요약 포스팅
```

### 구현 필요 사항
- [ ] skill-naverworks 서비스 생성
- [ ] NAVER WORKS Mail API 래퍼 구현
- [ ] rb8001 스킬 라우팅 로직 추가
- [ ] 사용자 매핑 (Slack user_id ↔ NAVER WORKS userId)

---

## 2. 콜드메일을 Slack 캔버스에 자동 포스팅

### 시나리오
NAVER WORKS에 도착한 신규 영업 메일(콜드메일)을 자동으로 감지하고, Slack 캔버스에 정리된 형태로 포스팅

### 상세 플로우
```
1. 메일 모니터링 (30분 주기)
   skill-naverworks → Cron job/스케줄러
   → GET /users/{userId}/mail/mailfolders/0/children?limit=10

2. 콜드메일 필터링
   - 발신자가 주소록에 없음
   - 제목에 특정 키워드 포함 ("제안", "협력", "서비스")
   - 첨부파일 있음 (회사소개서 등)

3. 콜드메일 분석
   skill-naverworks → Gemini API
   - 회사명 추출
   - 제안 내용 요약
   - 연락처 정보 추출
   - 중요도 판단

4. Slack Canvas 생성/업데이트
   skill-slack → POST /canvases.create 또는 /canvases.edit
   템플릿:
   ```
   ## 신규 영업 제안 - {날짜}

   ### {회사명}
   - 담당자: {이름}
   - 연락처: {이메일/전화}
   - 제안 요약: {요약}
   - 첨부파일: {파일명}
   - 우선순위: {높음/중간/낮음}
   ```

5. 알림 전송
   skill-slack → 영업팀 채널에 캔버스 링크 공유
```

### 구현 필요 사항
- [ ] 메일 모니터링 스케줄러
- [ ] 콜드메일 판별 로직
- [ ] Slack Canvas API 통합
- [ ] 템플릿 관리 시스템

---

## 3. 아침 메일 브리핑

### 시나리오
매일 오전 9시에 전날 받은 중요 메일을 요약해서 Slack DM으로 전송

### 상세 플로우
```
1. 스케줄 트리거 (매일 09:00)
   robeing-gateway → scheduled_tasks 테이블
   → trigger skill-naverworks

2. 메일 수집
   skill-naverworks → NAVER WORKS API
   - 지난 24시간 메일 조회
   - 중요도 표시된 메일 우선
   - 미읽은 메일 포함

3. 카테고리별 분류
   - 내부 메일 (company-x.partners 도메인)
   - 고객사 메일
   - 외부 제안
   - 시스템 알림

4. 요약 생성
   Gemini API → 카테고리별 요약
   ```
   📧 오늘의 메일 브리핑 (11월 17일)

   ✅ 긴급 대응 필요 (2건)
   - [고객A] 프로젝트 일정 문의
   - [내부] 오늘 오후 2시 회의 참석 요청

   📌 확인 필요 (5건)
   - [영업] 신규 제안서 3건
   - [지원팀] 시스템 점검 공지
   - [고객B] 추가 기능 요청
   ```

5. 개인별 DM 전송
   skill-slack → 각 사용자 DM
   → 읽음 확인 버튼 포함
```

### 구현 필요 사항
- [ ] 스케줄러 시스템 구현
- [ ] 사용자별 설정 관리 (시간, 카테고리)
- [ ] 메일 중요도 판별 AI
- [ ] DM 템플릿 시스템

---

## 4. 캘린더 일정 → Slack 리마인더

### 시나리오
NAVER WORKS 캘린더의 일정을 Slack 리마인더로 자동 동기화

### 상세 플로우
```
1. 캘린더 이벤트 감지
   skill-naverworks → GET /users/{userId}/calendar/events
   → 향후 24시간 내 일정 조회

2. Slack 리마인더 생성
   skill-slack → /reminders.add
   - 회의 15분 전 알림
   - 참석자 멘션 포함
   - 회의 링크 포함

3. 일정 변경 감지
   - 30분마다 캘린더 동기화
   - 변경된 일정 업데이트
   - 취소된 일정 리마인더 삭제
```

### 구현 필요 사항
- [ ] Calendar API 통합
- [ ] Slack Reminders API 통합
- [ ] 동기화 충돌 해결 로직
- [ ] 사용자별 동기화 설정

---

## 5. 메일 자동 분류 및 태깅

### 시나리오
받은 메일을 AI로 분석해서 자동으로 태그를 붙이고 Slack 채널에 분류해서 전달

### 카테고리 및 채널 매핑
```
- 계약/법무 → #legal 채널
- 인보이스/청구 → #finance 채널
- 고객 문의 → #customer-support 채널
- 제품 피드백 → #product 채널
- 채용 관련 → #recruiting 채널
```

### 구현 필요 사항
- [ ] 메일 분류 ML 모델
- [ ] 태그 시스템 구현
- [ ] 채널별 포스팅 규칙
- [ ] 오분류 피드백 시스템

---

## 6. 구현 우선순위

1. **Phase 1** (기본 인프라)
   - auth-server NAVER WORKS OAuth
   - skill-naverworks 기본 구조
   - Service Account 인증

2. **Phase 2** (핵심 기능)
   - 메일 조회 API
   - Slack 메시지 응답
   - 기본 요약 기능

3. **Phase 3** (자동화)
   - 스케줄러 시스템
   - 아침 브리핑
   - 콜드메일 감지

4. **Phase 4** (고급 기능)
   - Canvas 통합
   - 캘린더 동기화
   - AI 분류 시스템

---

## 7. 기술적 고려사항

### API Rate Limit
- NAVER WORKS API 호출 제한 확인 필요
- 캐싱 전략 수립
- 배치 처리 구현

### 사용자 매핑
- Slack user_id ↔ NAVER WORKS userId 매핑 테이블
- 이메일 기반 자동 매핑
- 수동 연결 UI 제공

### 보안
- Service Account 권한 최소화
- 메일 내용 암호화 저장
- 접근 로그 기록

### 성능
- 비동기 처리 필수
- Redis 캐싱 활용
- 큐 시스템 도입 검토

---

*지속적으로 시나리오 추가 예정*