# 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/messages 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/messages?unread=true 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 캐싱 활용 - 큐 시스템 도입 검토 --- *지속적으로 시나리오 추가 예정*