# NAVER WORKS → Slack 연동 [2/3] 일일 브리핑 ## 날짜: 2025-09-19 ## 작성자: Claude (51123 서버 관리자) ## 관련 서비스: rb8001, skill-email, skill-slack(선택) ## 상태: 미구현 (현행 코드 기준 사항 반영) ## 관련 문서 - [1/3 기본 구성](./250919_naverworks_slack_01_base_configuration.md) - [3/3 콜드메일 리스트업](./250919_naverworks_slack_03_cold_mail_list.md) --- ## 1. 일일 브리핑 개요 ### 목적 회사 대표메일 중요사항을 매일 아침 자동으로 요약하여 Slack 전체 채널에 브리핑 ### 핵심 기능 - 최근 24시간 메일 중 중요 메일 필터링 - AI 요약 생성 - 우선순위별 정렬 - Slack 전체 채널 자동 포스팅 --- ## 2. 구현 방식 ### 2.1 트리거 방식 - **스케줄러**: 매일 09:00 KST 자동 실행 - **위치(현행)**: rb8001/main.py 내 APScheduler 초기화 및 잡 등록 - **도구**: APScheduler (환경변수 기반 자동 등록 패턴 사용) ### 2.2 처리 흐름 (현행 코드 기준 + 계획) 1. 스케줄러가 09:00에 rb8001 트리거 (main.py) 2. rb8001이 skill-email GET `/messages` 호출 - 쿼리 파라미터: `provider=naverworks&user_id={UUID}&startSearchDate={T-24h}&endSearchDate={T}` 3. skill-email이 NAVER WORKS API로 24시간 메일 조회 4. 중요도 필터링 적용 (긴급/계약/결제/공지) [미구현 → 구현 필요] 5. Gemini API로 요약 생성 (rb8001 내부 LLM 서비스 사용) 6. Slack 포맷팅 후 전송 - 현행: rb8001이 WebClient로 직접 Block Kit 조립 및 전송 - 계획: skill-slack `/format-briefing`(미구현)로 포맷 위임 후 전송 7. 전송 대상: 네이버웍스 등록 사용자에게 개별 DM 전송 (전체 채널 브리핑 아님) --- ## 3. 구현 파일 구조 ### skill-email 현황/계획 - 현황: GET `/messages`에서 `provider=naverworks` 및 날짜 파라미터 지원 - 계획(선택): `POST /daily-briefing` 엔드포인트 추가, 내부에서 조회/필터/요약까지 처리 ### skill-slack 현황/계획 - 현황: 포맷 전용 엔드포인트 없음, rb8001이 직접 포맷 후 전송 - 계획: POST `/format-briefing` 추가(미구현) — Section/Divider/Context 조합, 우선순위별 색상 코딩 ### rb8001 현황 - 스케줄러: main.py에서 APScheduler 설정/잡 등록 - 오케스트레이션: skill-email에서 데이터 조회 → 내부 LLM 요약 → Slack 전송 --- ## 4. 구현 체크리스트 ### 4.1 skill-email 구현 - [ ] 중요도 필터링 알고리즘 (제목/발신자 키워드 기반) - [ ] 24시간 필터 파라미터 표준화(startSearchDate/endSearchDate) 및 검증 - [ ] (선택) `POST /daily-briefing`로 일괄 처리 엔드포인트 제공 ### 4.2 rb8001 구현 - [ ] APScheduler 잡 등록 (09:00 KST, main.py) - [ ] 네이버웍스 등록 사용자 조회(DB): `naverworks_token` ↔ 사용자 매핑으로 대상자 결정 - [ ] skill-email `/messages` 호출 시 `provider=naverworks` 및 24시간 파라미터 포함 - [ ] Gemini 기반 요약 생성(내부 LLM 서비스) - [ ] Slack DM 전송 (현행 WebClient, 추후 skill-slack 포맷터 연계) --- ## 5. 문제점 및 개선 방안 ### 5.1 폴링 방식 문제 - **문제**: 9,192개 메일 조회 시 API Rate Limit 위험 - **개선**: - 최근 24시간 메일만 조회 (limit 파라미터) - 캐싱 적용 (중복 조회 방지) ### 5.2 인증 방식 - **문제**: 스케줄러는 사용자 로그인 없이 작동 필요 - **개선**: JWT 기반 서비스 계정 도입 권장 ### 5.3 보안 우려 - **문제**: 메일 본문이 Gemini API로 전송 - **개선**: - 민감정보 필터링 - 발신자/제목/키워드만 요약 - 상세 내용은 원본 메일 링크 제공 --- ## 6. 예상 출력 형식 ``` 📅 일일 메일 브리핑 (2025-09-19) ━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🔴 긴급 (2건) • [계약] OO사 계약 검토 요청 - 김과장 • [결제] 월간 서버 비용 승인 필요 - 재무팀 🟡 중요 (3건) • [공지] 9월 정기 점검 안내 - IT팀 • [미팅] 다음주 프로젝트 킥오프 - PM팀 • [요청] 마케팅 자료 검토 - 마케팅팀 🟢 일반 (5건) • 기타 일반 메일 5건 ━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ### 5.4 현행 코드 상 주의사항 - rb8001 EmailIntegration 내 Slack→UUID 매핑에 하드코딩된 내부 URL 존재 — 환경변수/게이트웨이 경유로 정리 필요 - provider 전달 누락 구간 점검 필요 (특히 목록 조회 경로)