docs: 네이버웍스 브리핑 문서 간소화 및 scheduler/jobs 구조 반영
This commit is contained in:
parent
5a2ced6244
commit
5da123ffc1
@ -1,13 +1,9 @@
|
||||
# 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)
|
||||
## 날짜: 2025-09-19 (업데이트: 2025-09-22)
|
||||
## 작성자: Claude / happybell80
|
||||
## 관련 서비스: rb8001, skill-email, skill-slack
|
||||
## 상태: 계획
|
||||
|
||||
---
|
||||
|
||||
@ -27,101 +23,52 @@
|
||||
## 2. 구현 방식
|
||||
|
||||
### 2.1 트리거 방식
|
||||
- **스케줄러**: 매일 09:00 KST 자동 실행
|
||||
- **위치(현행)**: rb8001/main.py 내 APScheduler 초기화 및 잡 등록
|
||||
- **도구**: APScheduler (환경변수 기반 자동 등록 패턴 사용, **주의: Monday=0 체계 사용, 평일은 'mon-fri' 권장**)
|
||||
- **로그 이슈**: APScheduler 잡 실행 시 "Running job" 로그 누락, 래퍼 함수 필요
|
||||
- 매일 09:00 KST 자동 실행
|
||||
- APScheduler 사용 (mon-fri 형식 권장)
|
||||
|
||||
### 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)
|
||||
### 2.2 처리 흐름
|
||||
1. 09:00 스케줄러 트리거
|
||||
2. DB에서 info@company-x.partners 계정 UUID 조회
|
||||
3. skill-email `/messages` 호출 (provider=naverworks, 24시간 필터)
|
||||
4. 중요 메일 필터링 (긴급/계약/결제/공지)
|
||||
5. Gemini 요약 생성
|
||||
6. skill-slack `/api/v1/send`로 채널 전송 (C09C98KK2TT)
|
||||
|
||||
---
|
||||
|
||||
## 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 전송
|
||||
- **app/scheduler/jobs/naverworks_briefing.py**: 스케줄 등록 함수
|
||||
- **app/skills/naverworks_briefing.py**: 브리핑 로직
|
||||
- **app/scheduler/registry.py**: 모든 스케줄 통합 관리
|
||||
- **main.py**: 2줄 추가 (registry.register_all_jobs)
|
||||
|
||||
---
|
||||
|
||||
## 4. 구현 체크리스트
|
||||
|
||||
### 4.1 skill-email 구현
|
||||
- [ ] 중요도 필터링 알고리즘 (제목/발신자 키워드 기반)
|
||||
- [ ] 24시간 필터 파라미터 표준화(startSearchDate/endSearchDate) 및 검증
|
||||
- [ ] (선택) `POST /daily-briefing`로 일괄 처리 엔드포인트 제공
|
||||
### 4.1 스케줄러 구조 개편
|
||||
- [ ] app/scheduler/registry.py 생성
|
||||
- [ ] app/scheduler/jobs/ 디렉토리 생성
|
||||
- [ ] 기존 스케줄 코드 main.py에서 이동 (130줄 감소)
|
||||
|
||||
### 4.2 rb8001 구현
|
||||
- [ ] naverworks_briefing_skill.py 파일 생성
|
||||
- [ ] APScheduler 잡 등록 (09:00 KST, main.py)
|
||||
- 주의: main.py는 이미 732줄로 과도함, 최소한의 등록만
|
||||
- [ ] 환경변수 설정:
|
||||
- NAVERWORKS_BRIEFING_ENABLED=true
|
||||
- NAVERWORKS_BRIEFING_CHANNEL_ID=C09C98KK2TT
|
||||
- NAVERWORKS_BRIEFING_SCHEDULE=0 9 * * mon-fri
|
||||
- [ ] DB에서 info@company-x.partners 계정 조회 (UUID: 3550cef6-63e1-4ceb-8802-a25c9d1c6917)
|
||||
- [ ] skill-email `/messages` 호출 시 `provider=naverworks` 및 24시간 파라미터 포함
|
||||
- [ ] Gemini 기반 요약 생성(내부 LLM 서비스)
|
||||
- [ ] Slack 채널 전송 (skill-slack 활용)
|
||||
### 4.2 네이버웍스 브리핑 구현
|
||||
- [ ] app/scheduler/jobs/naverworks_briefing.py 생성
|
||||
- [ ] app/skills/naverworks_briefing.py 생성
|
||||
- [ ] 환경변수: NAVERWORKS_BRIEFING_ENABLED, CHANNEL_ID, SCHEDULE
|
||||
- [ ] DB에서 info@company-x.partners 조회
|
||||
- [ ] 중요 메일 필터링 로직
|
||||
- [ ] Gemini 요약 및 Slack 전송
|
||||
|
||||
---
|
||||
|
||||
## 5. 문제점 및 개선 방안
|
||||
|
||||
### 5.1 폴링 방식 문제
|
||||
- **문제**: 9,192개 메일 조회 시 API Rate Limit 위험
|
||||
- **개선**:
|
||||
- 최근 24시간 메일만 조회 (limit 파라미터)
|
||||
- 캐싱 적용 (중복 조회 방지)
|
||||
## 5. 문제점
|
||||
|
||||
### 5.2 인증 방식
|
||||
- **문제**: 스케줄러는 사용자 로그인 없이 작동 필요
|
||||
- **개선**: JWT 기반 서비스 계정 도입 권장
|
||||
- API Rate Limit 위험: 24시간 메일만 조회로 해결
|
||||
- 보안: 제목/발신자만 요약, 본문 제외
|
||||
- main.py 732줄 문제: scheduler/ 분리로 해결
|
||||
|
||||
### 5.3 보안 우려
|
||||
- **문제**: 메일 본문이 Gemini API로 전송
|
||||
- **개선**:
|
||||
- 민감정보 필터링
|
||||
- 발신자/제목/키워드만 요약
|
||||
- 상세 내용은 원본 메일 링크 제공
|
||||
|
||||
---
|
||||
|
||||
## 6. 예상 출력 형식
|
||||
|
||||
```
|
||||
📅 일일 메일 브리핑 (2025-09-19)
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
🔴 긴급 (2건)
|
||||
• [계약] OO사 계약 검토 요청 - 김과장
|
||||
• [결제] 월간 서버 비용 승인 필요 - 재무팀
|
||||
|
||||
🟡 중요 (3건)
|
||||
• [공지] 9월 정기 점검 안내 - IT팀
|
||||
• [미팅] 다음주 프로젝트 킥오프 - PM팀
|
||||
• [요청] 마케팅 자료 검토 - 마케팅팀
|
||||
|
||||
🟢 일반 (5건)
|
||||
• 기타 일반 메일 5건
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
```
|
||||
### 5.4 구현 시 주의사항
|
||||
- 계정 정보는 DB에서 조회 (환경변수 아님)
|
||||
- 설정값만 환경변수 사용
|
||||
- skill-email의 기존 API 최대한 활용
|
||||
## 6. 참고
|
||||
- [DB 기반 스케줄러 관리](./250919_naverworks_slack_04_db_scheduler_management.md)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user