Update: NaverWorks 이메일 확장 구현 완료 문서 업데이트
- async 변경 사항 반영
- URL 패턴 수정 (/users/{userId}/...)
- asyncio.run() 이벤트 루프 충돌 해결 내용 추가
- AccountContext 패턴 도입 내용 추가
- NaverWorks get_message body 처리 개선 추가
- API 엔드포인트 실제 구현 반영 (/send, /messages)
This commit is contained in:
parent
e8628693b2
commit
d2a6ae12f5
@ -73,31 +73,40 @@
|
||||
|
||||
---
|
||||
|
||||
## 4. 구현 완료 (2025-09-19)
|
||||
## 4. 구현 완료 (2025-09-19 ~ 2025-09-20)
|
||||
|
||||
### Phase 1: 기반 구조 ✅
|
||||
- [x] Provider 인터페이스 정의 (EmailProvider Protocol)
|
||||
- [x] 기존 Gmail 코드를 GmailProvider로 리팩토링
|
||||
- [x] 테스트 코드 작성 (tests/test_provider.py)
|
||||
- [x] Provider 인터페이스를 async로 변경 (EmailProvider Protocol)
|
||||
- [x] 기존 Gmail 코드를 GmailProvider로 리팩토링 (run_in_executor 사용)
|
||||
- [x] NaverWorksProvider async 구현
|
||||
|
||||
### Phase 2: NAVER WORKS 구현 ✅
|
||||
### Phase 2: NAVER WORKS API 구현 ✅
|
||||
- [x] NaverWorksProvider 클래스 생성
|
||||
- [x] Mail API 클라이언트 구현
|
||||
- [x] 메일 목록 조회 (`/mailfolders/{folderId}/children`)
|
||||
- [x] 메일 발송 (`POST /mail`)
|
||||
- [x] 메일 상세 조회 (`GET /mail/{mailId}`)
|
||||
- [x] Mail API URL 패턴 수정
|
||||
- [x] 메일 목록: `/users/{userId}/mail/mailfolders/0/children`
|
||||
- [x] 메일 발송: `POST /users/{userId}/mail`
|
||||
- [x] 메일 상세: `GET /users/{userId}/mail/{mailId}` (응답 구조 {"mail": {...}})
|
||||
- [x] 메일 삭제: `POST /users/{userId}/mail/{mailId}/trash`
|
||||
- [x] 토큰 갱신 로직 (auth-server 연동)
|
||||
|
||||
### Phase 3: DB 스키마 문제 수정 ✅
|
||||
- [x] slack_user_id 컬럼 참조를 user JOIN으로 변경
|
||||
- [x] token_data JSONB로 토큰 저장 통일
|
||||
- [x] 하드코딩 OAuth 설정 제거
|
||||
### Phase 3: asyncio 이벤트 루프 문제 해결 ✅
|
||||
- [x] NaverWorksProvider의 asyncio.run() 제거 (FastAPI 충돌 해결)
|
||||
- [x] 모든 Provider 메서드를 async로 통일
|
||||
- [x] main.py에서 await 추가
|
||||
|
||||
### Phase 4: 테스트 결과 ✅
|
||||
### Phase 4: AccountContext 패턴 도입 ✅
|
||||
- [x] AccountContext dataclass 정의 (토큰 + account_id)
|
||||
- [x] _get_account_context() 메서드로 DB 조회 통합
|
||||
- [x] 한 번의 쿼리로 token_data와 account_id 조회
|
||||
- [x] account_id NULL 시 DEFAULT_USER_ID 폴백
|
||||
- [x] 기존 _get_access_token() 유지 (하위 호환성)
|
||||
|
||||
### Phase 5: 테스트 및 검증 ✅
|
||||
- [x] 토큰 갱신 테스트 성공
|
||||
- [x] Refresh Token Rotation 정상 작동
|
||||
- [x] 갱신된 토큰으로 메일 30개 조회 성공
|
||||
- [x] Git push 완료 (skill-email, auth-server)
|
||||
- [x] NaverWorks 메일 목록 조회 성공
|
||||
- [x] NaverWorks 메일 상세 조회 성공 (응답 구조 수정)
|
||||
- [x] NaverWorks get_message body 처리 개선 (문자열/dict 타입 대응)
|
||||
- [x] Git push 및 Actions 배포 완료
|
||||
|
||||
---
|
||||
|
||||
@ -146,7 +155,7 @@ CREATE TABLE slack_naverworks_mapping (
|
||||
|
||||
### 7.1 메일 발송
|
||||
```http
|
||||
POST /v2/send-email
|
||||
POST /send
|
||||
{
|
||||
"provider": "naverworks",
|
||||
"user_id": "3550cef6-63e1-4ceb-8802-a25c9d1c6917",
|
||||
@ -158,12 +167,12 @@ POST /v2/send-email
|
||||
|
||||
### 7.2 메일 조회
|
||||
```http
|
||||
GET /v2/list-emails?provider=naverworks&user_id={user_id}&limit=10
|
||||
GET /messages?provider=naverworks&user_id={user_id}&limit=10
|
||||
```
|
||||
|
||||
### 7.3 메일 요약 (Slack용)
|
||||
### 7.3 메일 요약 (Slack용) - 미구현
|
||||
```http
|
||||
POST /v2/mail-summary
|
||||
POST /mail-summary
|
||||
{
|
||||
"provider": "naverworks",
|
||||
"user_id": "3550cef6-63e1-4ceb-8802-a25c9d1c6917",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user