docs: NAVER WORKS 브리핑 구현 준비도 90% 반영

- skill-email, skill-slack 구현 확인
- DB 접근 패턴, API 키 확인
- NAVER WORKS API 엔드포인트 확인
- 필요 환경변수 명시
- 참고 문서 링크 추가
This commit is contained in:
happybell80 2025-09-22 23:59:51 +09:00
parent 5da123ffc1
commit 07496ab3f0

View File

@ -32,43 +32,65 @@
3. skill-email `/messages` 호출 (provider=naverworks, 24시간 필터) 3. skill-email `/messages` 호출 (provider=naverworks, 24시간 필터)
4. 중요 메일 필터링 (긴급/계약/결제/공지) 4. 중요 메일 필터링 (긴급/계약/결제/공지)
5. Gemini 요약 생성 5. Gemini 요약 생성
6. skill-slack `/api/v1/send`로 채널 전송 (C09C98KK2TT) 6. SlackFormatter.briefing()으로 포맷팅
7. skill-slack `/api/v1/send`로 채널 전송 (C09C98KK2TT)
--- ---
## 3. 구현 파일 구조 ## 3. 구현 파일 구조
- **app/scheduler/jobs/naverworks_briefing.py**: 스케줄 등록 함수 ### 첫 구현 (최소)
- **app/skills/naverworks_briefing.py**: 브리핑 로직 - **app/scheduler/jobs/naverworks_briefing.py**: register(scheduler) 함수와 로깅 래퍼
- **app/scheduler/registry.py**: 모든 스케줄 통합 관리 - **app/skills/naverworks_briefing.py**: 실제 브리핑 로직
- **main.py**: 2줄 추가 (registry.register_all_jobs) - **main.py**: 2줄 추가 (import + register 호출)
### 나중 확장
- **app/formatters/slack_formatter.py**: 다른 스킬과 공유 시
- **app/scheduler/registry.py**: 스케줄 2개 이상일 때
--- ---
## 4. 구현 체크리스트 ## 4. 구현 체크리스트
### 4.1 스케줄러 구조 개편 ### 4.1 최소 구현
- [ ] app/scheduler/registry.py 생성
- [ ] app/scheduler/jobs/ 디렉토리 생성 - [ ] app/scheduler/jobs/ 디렉토리 생성
- [ ] 기존 스케줄 코드 main.py에서 이동 (130줄 감소) - [ ] naverworks_briefing.py 파일 (등록 + 래퍼)
- [ ] main.py 2줄 추가
### 4.2 네이버웍스 브리핑 구현 ### 4.2 브리핑 로직
- [ ] app/scheduler/jobs/naverworks_briefing.py 생성
- [ ] app/skills/naverworks_briefing.py 생성 - [ ] app/skills/naverworks_briefing.py 생성
- [ ] 환경변수: NAVERWORKS_BRIEFING_ENABLED, CHANNEL_ID, SCHEDULE - [ ] register() 함수: 환경변수 읽기, 스케줄 등록
- [ ] DB에서 info@company-x.partners 조회 - [ ] 래퍼 함수: 로그 추가 ("Running job" 이슈 해결)
- [ ] 중요 메일 필터링 로직 - [ ] DB 조회: info@company-x.partners UUID
- [ ] Gemini 요약 및 Slack 전송 - [ ] 중요 메일 필터: 긴급/계약/결제/공지
- [ ] 통합: skill-email, Gemini, skill-slack
--- ---
## 5. 문제점 및 개선 방안 ## 5. 구현 원칙
## 5. 문제점 - **최소 변경**: main.py 2줄만, 기존 코드 유지
- **단순 구조**: register(scheduler) 하나, 환경변수는 함수 내부
- **로그 해결**: 래퍼 함수로 "Running job" 추가
- **점진 확장**: 작동 확인 후 registry, formatter 추가
- API Rate Limit 위험: 24시간 메일만 조회로 해결 ## 6. 구현 준비도 (90%)
- 보안: 제목/발신자만 요약, 본문 제외
- main.py 732줄 문제: scheduler/ 분리로 해결
## 6. 참고 ### 확인된 사항
- **skill-email**: NaverWorksProvider 구현 완료, 토큰 갱신 로직 존재
- **skill-slack**: /api/v1/send 엔드포인트 구현 완료
- **DB 접근**: DATABASE_URL 환경변수, asyncpg 사용
- **API 키**: INTERNAL_API_KEY로 스킬 간 인증
- **NAVER WORKS API**: /mail/mailfolders/0/children 엔드포인트 확인
- **24시간 필터**: startSearchDate, endSearchDate 파라미터 지원
- **기존 스케줄러**: dm_skill.py, news_posting_skill.py 참고 가능
### 필요 환경변수 (서버 설정)
- NAVERWORKS_BRIEFING_ENABLED=true
- NAVERWORKS_BRIEFING_CHANNEL=C09C98KK2TT
- NAVERWORKS_BRIEFING_SCHEDULE="0 9 * * mon-fri"
## 7. 참고
- [DB 기반 스케줄러 관리](./250919_naverworks_slack_04_db_scheduler_management.md) - [DB 기반 스케줄러 관리](./250919_naverworks_slack_04_db_scheduler_management.md)
- [기본 구성 완료](./250919_naverworks_slack_01_base_configuration.md)
- [NAVER WORKS API 이슈 해결](./250918_naverworks_mail_api_mailaddress_null_issue.md)