DOCS/troubleshooting/250919_naverworks_slack_02_daily_briefing.md

4.2 KiB

NAVER WORKS → Slack 연동 [2/3] 일일 브리핑

날짜: 2025-09-19

작성자: Claude (51123 서버 관리자)

관련 서비스: rb8001, skill-email, skill-slack(선택)

상태: 미구현 (현행 코드 기준 사항 반영)

관련 문서


1. 일일 브리핑 개요

목적

회사 대표메일 중요사항을 매일 아침 자동으로 요약하여 Slack 지정 채널에 브리핑

핵심 기능

  • 최근 24시간 메일 중 중요 메일 필터링
  • AI 요약 생성
  • 우선순위별 정렬
  • Slack 지정 채널 자동 포스팅

2. 구현 방식

2.1 트리거 방식

  • 스케줄러: 매일 09:00 KST 자동 실행
  • 위치(계획): rb8001/main.py 내 APScheduler 잡 등록
  • 도구: APScheduler (환경변수 기반 자동 등록 패턴 사용)
  • 로그 이슈: APScheduler 잡 실행 시 "Running job" 로그 누락, 래퍼 함수 필요

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 포맷팅 후 전송
    • skill-slack POST /api/v1/send 활용
  7. 전송 대상: 환경변수로 지정된 채널 (NAVERWORKS_BRIEFING_CHANNEL_ID)

3. 구현 파일 구조

skill-email

  • GET /messages에서 provider=naverworks 및 날짜 파라미터 활용

skill-slack

  • POST /api/v1/send 활용하여 메시지 전송

rb8001

  • 새 파일: app/skills/naverworks_briefing_skill.py 생성
  • 스케줄러: main.py에서 APScheduler 잡 등록
  • 오케스트레이션: skill-email에서 데이터 조회 → 내부 LLM 요약 → Slack 전송

4. 구현 체크리스트

4.1 skill-email 구현

  • 중요도 필터링 알고리즘 (제목/발신자 키워드 기반)
  • 24시간 필터 파라미터 표준화(startSearchDate/endSearchDate) 및 검증
  • (선택) POST /daily-briefing로 일괄 처리 엔드포인트 제공

4.2 rb8001 구현

  • naverworks_briefing_skill.py 파일 생성
  • APScheduler 잡 등록 (09:00 KST, main.py)
  • 환경변수 설정:
    • NAVERWORKS_BRIEFING_ENABLED=true
    • NAVERWORKS_BRIEFING_CHANNEL_ID=C09C98KK2TT
    • NAVERWORKS_BRIEFING_SCHEDULE=0 9 * * 1-5
    • NAVERWORKS_BRIEFING_ACCOUNT_ID={회사 대표메일 UUID}
  • skill-email /messages 호출 시 provider=naverworks 및 24시간 파라미터 포함
  • Gemini 기반 요약 생성(내부 LLM 서비스)
  • Slack 채널 전송 (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 구현 시 주의사항

  • 회사 대표메일 계정 UUID 확인 필요
  • 환경변수로 모든 설정 관리 (하드코딩 금지)
  • skill-email의 기존 API 최대한 활용