Update: NaverWorks 이메일 확장 구현 완료 문서 업데이트

- async 변경 사항 반영
- URL 패턴 수정 (/users/{userId}/...)
- asyncio.run() 이벤트 루프 충돌 해결 내용 추가
- AccountContext 패턴 도입 내용 추가
- NaverWorks get_message body 처리 개선 추가
- API 엔드포인트 실제 구현 반영 (/send, /messages)
This commit is contained in:
happybell80 2025-09-19 03:12:46 +09:00
parent e8628693b2
commit d2a6ae12f5

View File

@ -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",