docs: 네이버웍스→슬랙 메일 전달 문서 사실 기반으로 수정 (의사코드 제거)

This commit is contained in:
happybell80 2025-09-19 18:04:12 +09:00
parent e88111ada1
commit 77b9b1c135

View File

@ -2,98 +2,77 @@
## 날짜: 2025-09-19
## 작성자: Claude (51123 서버 관리자)
## 관련 서비스: rb8001, skill-email, slack, robeing-gateway
## 상태: 구현 필요
## 관련 서비스: rb8001, skill-email
## 상태: 부분 구현
---
## 1. 현황 분석
## 1. 현재 구현 상태
### 완료된 부분
- **인증 시스템**: auth-server에 NAVER WORKS OAuth/Passport 구현 완료
- **skill-email 멀티프로바이더**: Gmail/NaverWorks 프로바이더 통합 완료 (포트 8501)
- **API 접근**: `/send`, `/messages` 엔드포인트에 provider=naverworks 파라미터 지원
- **토큰 관리**: naverworks_token 테이블, refresh 로직 구현
### 구현 완료
- **auth-server**:
- `naverworks.py`, `naverworks_passport.py` 파일 존재
- NAVER WORKS OAuth 환경변수 설정 (CLIENT_ID, CLIENT_SECRET, REDIRECT_URI, TENANT_ID)
- **skill-email (포트 8501)**:
- `services/naverworks_provider.py` NaverWorksProvider 클래스 구현
- GET `/messages` 엔드포인트 (provider 파라미터 지원)
- POST `/send` 엔드포인트
- **rb8001**:
- `app/skills/email_integration.py` EmailIntegration 클래스 존재
- skill-email 포트 8501 호출 구조
### 미구현 부분
- **메일 요약 API**: POST `/mail-summary` 엔드포인트
- **Slack 전달 로직**: rb8001 → skill-email → Slack 플로우
- **사용자 매핑**: Slack user_id ↔ NAVER WORKS account_id
### 미구현
- POST `/mail-summary` 엔드포인트 없음
- rb8001 EmailIntegration 클래스는 Gmail만 처리
- 네이버웍스 메일 키워드 감지 로직 없음
- Slack Block Kit 포맷터 없음
---
## 2. 구현 방안
## 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.1 skill-email 수정 사항
- POST `/mail-summary` 엔드포인트 추가 필요
- 메일 요약 생성 로직 구현 필요
- Slack 블록 포맷 변환 기능 필요
# 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
);
```
### 2.2 rb8001 수정 사항
- EmailIntegration 클래스에 NaverWorks 지원 추가 필요
- 네이버웍스 메일 키워드 감지 로직 추가 필요
- provider=naverworks 파라미터 전달 로직 필요
---
## 3. 구현 체크리스트
## 3. 파일 위치
- [ ] skill-email에 `/mail-summary` 엔드포인트 구현
- [ ] NaverWorksProvider에 요약 용 메서드 추가
- [ ] Gemini API 연동 (메일 내용 요약)
### skill-email
- `main.py`: API 엔드포인트 정의
- `services/naverworks_provider.py`: NAVER WORKS API 연동
- `services/gmail_provider.py`: Gmail API 연동
- `services/email_provider.py`: Provider 인터페이스
### rb8001
- `app/skills/email_integration.py`: 이메일 스킬 통합
- `app/main.py`: 메시지 라우팅
### auth-server
- `app/providers/naverworks.py`: OAuth 로그인
- `app/providers/naverworks_passport.py`: Passport 시스템
---
## 4. 구현 체크리스트
- [ ] skill-email `/mail-summary` 엔드포인트 구현
- [ ] rb8001 EmailIntegration에 NaverWorks 지원 추가
- [ ] 네이버웍스 메일 키워드 감지 로직 추가
- [ ] Slack Block Kit 포맷터 구현
- [ ] rb8001에 네이버웍스 메일 키워드 감지 로직
- [ ] robeing-gateway를 통한 skill-email 호출 경로 확인
- [ ] 사용자 매핑 로직 (OAuth ID 기반)
- [ ] 에러 처리 (토큰 만료, API 제한 등)
- [ ] provider 파라미터 전달 로직 구현
---
## 4. 테스트 시나리오
## 5. 환경 설정 확인 사항
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 실패 시 사용자에게 명확한 안내
- skill-email .env 파일에 NAVER WORKS 관련 설정 확인
- rb8001에서 skill-email 호출 시 포트 8501 사용
- auth-server의 NAVER WORKS OAuth 설정 확인