# NAVER WORKS 이메일 → Slack 전달 시스템 구현 ## 날짜: 2025-09-19 ## 작성자: Claude (51123 서버 관리자) ## 관련 서비스: rb8001, skill-email, slack, robeing-gateway ## 상태: 구현 필요 --- ## 1. 현황 분석 ### 완료된 부분 - **인증 시스템**: auth-server에 NAVER WORKS OAuth/Passport 구현 완료 - **skill-email 멀티프로바이더**: Gmail/NaverWorks 프로바이더 통합 완료 (포트 8501) - **API 접근**: `/send`, `/messages` 엔드포인트에 provider=naverworks 파라미터 지원 - **토큰 관리**: naverworks_token 테이블, refresh 로직 구현 ### 미구현 부분 - **메일 요약 API**: POST `/mail-summary` 엔드포인트 - **Slack 전달 로직**: rb8001 → skill-email → Slack 플로우 - **사용자 매핑**: Slack user_id ↔ NAVER WORKS account_id --- ## 2. 구현 방안 ### 2.1 skill-email에 /mail-summary 엔드포인트 추가 ```python # skill-email/main.py @app.post("/mail-summary") async def mail_summary( user_id: str, provider: str = "naverworks", limit: int = 5 ): # 1. 최근 메일 조회 messages = await provider.get_messages(user_id, limit=limit) # 2. Gemini로 요약 생성 summary = await generate_summary(messages) # 3. Slack 블록 포맷 변환 return {"summary": summary, "blocks": format_slack_blocks(summary)} ``` ### 2.2 rb8001 라우팅 로직 추가 ```python # rb8001에서 skill-email 호출 if "네이버웍스" in message and "메일" in message: # X-User-Id 헤더로 사용자 식별 response = await call_skill( url="http://skill-email:8501/mail-summary", params={"user_id": slack_user_id, "provider": "naverworks"} ) # Slack으로 전달 await send_to_slack(channel, response["blocks"]) ``` ### 2.3 사용자 매핑 테이블 (선택사항) ```sql CREATE TABLE slack_naverworks_mapping ( slack_user_id VARCHAR(50) PRIMARY KEY, naverworks_account_id VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` --- ## 3. 구현 체크리스트 - [ ] skill-email에 `/mail-summary` 엔드포인트 구현 - [ ] NaverWorksProvider에 요약 용 메서드 추가 - [ ] Gemini API 연동 (메일 내용 요약) - [ ] Slack Block Kit 포맷터 구현 - [ ] rb8001에 네이버웍스 메일 키워드 감지 로직 - [ ] robeing-gateway를 통한 skill-email 호출 경로 확인 - [ ] 사용자 매핑 로직 (OAuth ID 기반) - [ ] 에러 처리 (토큰 만료, API 제한 등) --- ## 4. 테스트 시나리오 1. Slack에서 "@로빙 네이버웍스 메일 확인해줘" 메시지 전송 2. rb8001이 메시지 수신 및 키워드 감지 3. skill-email `/mail-summary` 호출 4. NAVER WORKS API로 최근 메일 5개 조회 5. Gemini API로 요약 생성 6. Slack 채널에 요약 블록 포스팅 --- ## 5. 주의사항 - **토큰 관리**: naverworks_token의 expires_at 확인 필수 - **Rate Limit**: NAVER WORKS API 제한 고려 (캐싱 권장) - **프라이버시**: 메일 내용 요약 시 민감정보 필터링 - **에러 폴백**: API 실패 시 사용자에게 명확한 안내