docs: 네이버웍스→슬랙 메일 전달 시스템 구현 가이드 추가
This commit is contained in:
parent
5cfa6d9507
commit
e88111ada1
@ -0,0 +1,99 @@
|
||||
# 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 실패 시 사용자에게 명확한 안내
|
||||
Loading…
x
Reference in New Issue
Block a user