docs: 문서 톤 객관적으로 수정 및 해결 상태 업데이트
- 비난조 표현을 객관적 서술로 변경 - 해결된 이슈 상태 명확히 표시 - timezone 버그 수정 완료 상태 반영 - 긴급도 표현 완화
This commit is contained in:
parent
66e6acb1f3
commit
20bc99d8e5
@ -116,29 +116,19 @@ NameError: name 'datetime' is not defined
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 5. 현재 미해결 문제
|
## 5. 이슈 현황
|
||||||
|
|
||||||
### 5.1 Gmail 토큰 자동 갱신 실패
|
### 5.1 Gmail 토큰 자동 갱신 - ✅ 부분 해결 (2025-08-24)
|
||||||
**근본 원인**: auth-server의 timezone 버그
|
**Timezone 버그**:
|
||||||
- 파일: `/home/admin/auth-server/app/api/gmail_refresh.py:132`
|
- 파일: `/home/admin/auth-server/app/api/gmail_refresh.py:132`
|
||||||
- 문제: `datetime.now()`가 timezone-naive datetime 생성
|
- 수정 완료: `datetime.now()` → `datetime.now(timezone.utc)` (섹션 14 참조)
|
||||||
- 영향: DB에 UTC로 저장되어 8시간 전 시간으로 기록 (항상 만료 상태)
|
- 상태: 로컬 개발자가 수정 완료, 배포 대기
|
||||||
|
|
||||||
**필요 조치**:
|
### 5.2 자동 갱신 메커니즘 - 📋 개선 예정
|
||||||
```python
|
- **현재 상태**: skill-email과 rb8001이 Gmail API 호출 시 토큰 상태 직접 확인하지 않음
|
||||||
# 현재 (버그)
|
- **일반적 구현**: API 호출 전 토큰 만료 확인 후 필요시 refresh_token으로 갱신
|
||||||
new_expiry = datetime.now() + timedelta(seconds=expires_in)
|
- **현재 동작**: 토큰 그대로 사용, 만료 시 에러 발생
|
||||||
|
- **개선 방향**: Gmail API 호출 전 토큰 체크 로직 추가 검토
|
||||||
# 수정 필요
|
|
||||||
from datetime import timezone
|
|
||||||
new_expiry = datetime.now(timezone.utc) + timedelta(seconds=expires_in)
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5.2 자동 갱신 메커니즘 부재
|
|
||||||
- **근본 문제**: skill-email과 rb8001이 Gmail API 호출 시 토큰 만료 체크 안함
|
|
||||||
- **정상 패턴**: API 호출 전 토큰 만료 확인 → 만료 시 refresh_token으로 자동 갱신
|
|
||||||
- **현재 구현**: 만료된 토큰 그대로 사용 → 에러 발생
|
|
||||||
- **필요 조치**: Gmail API 호출 전 토큰 만료 체크 및 갱신 로직 추가
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -234,12 +224,12 @@ docker exec robeing-gateway tail -f /var/log/cron.log
|
|||||||
- auth_db → main_db 마이그레이션 완료
|
- auth_db → main_db 마이그레이션 완료
|
||||||
- 서비스 재시작 완료
|
- 서비스 재시작 완료
|
||||||
|
|
||||||
### 현재 문제 상태
|
### 토큰 상태 (2025-08-25 시점)
|
||||||
- **모든 사용자 토큰 만료**:
|
- **토큰 만료 현황**:
|
||||||
- 0914eagle: 1일 8시간 전 만료
|
- 0914eagle: 만료됨
|
||||||
- cdctfm: 1일 15시간 전 만료
|
- cdctfm: 만료됨
|
||||||
- happybell80: 1일 15시간 전 만료
|
- happybell80: 만료됨
|
||||||
- **자동 갱신 실패**: refresh_token 존재하나 timezone 버그로 갱신 불가
|
- **갱신 상태**: refresh_token 존재, timezone 수정 후 갱신 가능
|
||||||
|
|
||||||
### 긴급도
|
### 긴급도
|
||||||
- **높음**: 매일 오전 9시 사용자 영향
|
- **높음**: 매일 오전 9시 사용자 영향
|
||||||
@ -305,45 +295,34 @@ FROM gmail_tokens;
|
|||||||
3. **만료 상태**: 모든 토큰 24시간 이상 만료
|
3. **만료 상태**: 모든 토큰 24시간 이상 만료
|
||||||
4. **자동 갱신 실패**: refresh_token 있으나 자동 갱신 미작동
|
4. **자동 갱신 실패**: refresh_token 있으나 자동 갱신 미작동
|
||||||
|
|
||||||
### 결론
|
### 분석 결과
|
||||||
- 문서의 "OAuth 토큰 재발급 필요" 진단 **정확함**
|
- OAuth 토큰 재발급 또는 갱신 필요
|
||||||
- refresh_token이 존재하나 자동 갱신 메커니즘 작동 안함
|
- refresh_token 존재, 갱신 API 활용 가능
|
||||||
- 사용자가 프론트엔드에서 수동으로 Gmail 재인증 필요
|
- 프론트엔드에서 재인증 옵션 제공 중
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 13. 필요한 조치사항 (로컬 개발자 액션)
|
## 13. 조치사항 요약
|
||||||
|
|
||||||
### 13.1 즉시 수정 필요
|
### 13.1 완료된 수정 (2025-08-24)
|
||||||
1. **auth-server timezone 버그 수정**
|
1. **auth-server timezone 수정**
|
||||||
- 파일: `/home/admin/auth-server/app/api/gmail_refresh.py`
|
- 파일: `/home/admin/auth-server/app/api/gmail_refresh.py`
|
||||||
- 라인: 132
|
- 수정 내용: `datetime.now()` → `datetime.now(timezone.utc)`
|
||||||
- 수정 코드:
|
- 상태: ✅ 로컬 수정 완료, 배포 대기
|
||||||
```python
|
|
||||||
# 현재 (버그)
|
|
||||||
new_expiry = datetime.now() + timedelta(seconds=expires_in)
|
|
||||||
|
|
||||||
# 수정안
|
### 13.2 향후 개선 고려사항
|
||||||
from datetime import timezone
|
1. **API 호출 시점 자동 갱신**
|
||||||
new_expiry = datetime.now(timezone.utc) + timedelta(seconds=expires_in)
|
|
||||||
```
|
|
||||||
|
|
||||||
2. **API 호출 시점 자동 갱신 구현**
|
|
||||||
```python
|
```python
|
||||||
# skill-email과 rb8001에 추가 필요
|
# 토큰 체크 로직 예시
|
||||||
if token.expiry < datetime.now():
|
if token.expiry < datetime.now():
|
||||||
token = refresh_gmail_token(user_id)
|
token = refresh_gmail_token(user_id)
|
||||||
```
|
```
|
||||||
|
|
||||||
### 13.2 영향받는 서비스
|
### 13.3 영향받는 서비스
|
||||||
- rb8001 일일 요약 (매일 오전 9시)
|
- rb8001 일일 요약 (매일 오전 9시)
|
||||||
- skill-email 이메일 조회 기능
|
- skill-email 이메일 조회 기능
|
||||||
- 프론트엔드 Gmail 아이템 기능
|
- 프론트엔드 Gmail 아이템 기능
|
||||||
|
|
||||||
### 13.3 긴급도
|
|
||||||
- **매우 높음**: 모든 Gmail 관련 기능 작동 불가
|
|
||||||
- 즉시 수정 및 배포 필요
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 14. 버그 수정 완료 (2025-08-24 로컬 개발자)
|
## 14. 버그 수정 완료 (2025-08-24 로컬 개발자)
|
||||||
@ -442,16 +421,16 @@ FROM gmail_tokens;
|
|||||||
|
|
||||||
### 15.5 수동 갱신 실행 (2025-08-25 00:55)
|
### 15.5 수동 갱신 실행 (2025-08-25 00:55)
|
||||||
- 0914eagle, cdctfm OAuth client 정보 수정 후 수동 갱신 완료
|
- 0914eagle, cdctfm OAuth client 정보 수정 후 수동 갱신 완료
|
||||||
- 모든 사용자 토큰 현재 유효 상태 (1시간)
|
- 모든 사용자 토큰 유효 상태로 변경 (1시간)
|
||||||
- **중요**: API 호출 시점 자동 갱신 로직 없어 임시로 수동 갱신 실행
|
- 현재 수동 갱신으로 운영 중
|
||||||
- **정상 구현**: Gmail API 호출 전 토큰 체크 및 자동 갱신 필요
|
- 향후 자동 갱신 구현 시 안정성 향상 예상
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 16. 자동 갱신 메커니즘 부재 상세 분석 (2025-08-24 로컬 개발자)
|
## 16. 자동 갱신 메커니즘 부재 상세 분석 (2025-08-24 로컬 개발자)
|
||||||
|
|
||||||
### 16.1 코드 분석 결과
|
### 16.1 코드 분석 결과
|
||||||
**검증 완료**: 섹션 5.2의 진단이 정확함
|
섹션 5.2의 내용을 코드로 확인
|
||||||
|
|
||||||
#### skill-email 현재 구현
|
#### skill-email 현재 구현
|
||||||
```python
|
```python
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user