From 20bc99d8e5ca6c12d5170bce7d29e80fe00cb5ff Mon Sep 17 00:00:00 2001 From: happybell80 Date: Mon, 25 Aug 2025 01:22:49 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=EB=AC=B8=EC=84=9C=20=ED=86=A4=20?= =?UTF-8?q?=EA=B0=9D=EA=B4=80=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=ED=95=B4=EA=B2=B0=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 비난조 표현을 객관적 서술로 변경 - 해결된 이슈 상태 명확히 표시 - timezone 버그 수정 완료 상태 반영 - 긴급도 표현 완화 --- ...50824_rb8001_daily_summary_cron_failure.md | 87 +++++++------------ 1 file changed, 33 insertions(+), 54 deletions(-) diff --git a/troubleshooting/250824_rb8001_daily_summary_cron_failure.md b/troubleshooting/250824_rb8001_daily_summary_cron_failure.md index 88d5814..fc336a7 100644 --- a/troubleshooting/250824_rb8001_daily_summary_cron_failure.md +++ b/troubleshooting/250824_rb8001_daily_summary_cron_failure.md @@ -116,29 +116,19 @@ NameError: name 'datetime' is not defined --- -## 5. 현재 미해결 문제 +## 5. 이슈 현황 -### 5.1 Gmail 토큰 자동 갱신 실패 -**근본 원인**: auth-server의 timezone 버그 +### 5.1 Gmail 토큰 자동 갱신 - ✅ 부분 해결 (2025-08-24) +**Timezone 버그**: - 파일: `/home/admin/auth-server/app/api/gmail_refresh.py:132` -- 문제: `datetime.now()`가 timezone-naive datetime 생성 -- 영향: DB에 UTC로 저장되어 8시간 전 시간으로 기록 (항상 만료 상태) +- 수정 완료: `datetime.now()` → `datetime.now(timezone.utc)` (섹션 14 참조) +- 상태: 로컬 개발자가 수정 완료, 배포 대기 -**필요 조치**: -```python -# 현재 (버그) -new_expiry = datetime.now() + timedelta(seconds=expires_in) - -# 수정 필요 -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 호출 전 토큰 만료 체크 및 갱신 로직 추가 +### 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 마이그레이션 완료 - 서비스 재시작 완료 -### 현재 문제 상태 -- **모든 사용자 토큰 만료**: - - 0914eagle: 1일 8시간 전 만료 - - cdctfm: 1일 15시간 전 만료 - - happybell80: 1일 15시간 전 만료 -- **자동 갱신 실패**: refresh_token 존재하나 timezone 버그로 갱신 불가 +### 토큰 상태 (2025-08-25 시점) +- **토큰 만료 현황**: + - 0914eagle: 만료됨 + - cdctfm: 만료됨 + - happybell80: 만료됨 +- **갱신 상태**: refresh_token 존재, timezone 수정 후 갱신 가능 ### 긴급도 - **높음**: 매일 오전 9시 사용자 영향 @@ -305,45 +295,34 @@ FROM gmail_tokens; 3. **만료 상태**: 모든 토큰 24시간 이상 만료 4. **자동 갱신 실패**: refresh_token 있으나 자동 갱신 미작동 -### 결론 -- 문서의 "OAuth 토큰 재발급 필요" 진단 **정확함** -- refresh_token이 존재하나 자동 갱신 메커니즘 작동 안함 -- 사용자가 프론트엔드에서 수동으로 Gmail 재인증 필요 +### 분석 결과 +- OAuth 토큰 재발급 또는 갱신 필요 +- refresh_token 존재, 갱신 API 활용 가능 +- 프론트엔드에서 재인증 옵션 제공 중 --- -## 13. 필요한 조치사항 (로컬 개발자 액션) +## 13. 조치사항 요약 -### 13.1 즉시 수정 필요 -1. **auth-server timezone 버그 수정** +### 13.1 완료된 수정 (2025-08-24) +1. **auth-server timezone 수정** - 파일: `/home/admin/auth-server/app/api/gmail_refresh.py` - - 라인: 132 - - 수정 코드: - ```python - # 현재 (버그) - new_expiry = datetime.now() + timedelta(seconds=expires_in) - - # 수정안 - from datetime import timezone - new_expiry = datetime.now(timezone.utc) + timedelta(seconds=expires_in) - ``` + - 수정 내용: `datetime.now()` → `datetime.now(timezone.utc)` + - 상태: ✅ 로컬 수정 완료, 배포 대기 -2. **API 호출 시점 자동 갱신 구현** +### 13.2 향후 개선 고려사항 +1. **API 호출 시점 자동 갱신** ```python - # skill-email과 rb8001에 추가 필요 + # 토큰 체크 로직 예시 if token.expiry < datetime.now(): token = refresh_gmail_token(user_id) ``` -### 13.2 영향받는 서비스 +### 13.3 영향받는 서비스 - rb8001 일일 요약 (매일 오전 9시) - skill-email 이메일 조회 기능 - 프론트엔드 Gmail 아이템 기능 -### 13.3 긴급도 -- **매우 높음**: 모든 Gmail 관련 기능 작동 불가 -- 즉시 수정 및 배포 필요 - --- ## 14. 버그 수정 완료 (2025-08-24 로컬 개발자) @@ -442,16 +421,16 @@ FROM gmail_tokens; ### 15.5 수동 갱신 실행 (2025-08-25 00:55) - 0914eagle, cdctfm OAuth client 정보 수정 후 수동 갱신 완료 -- 모든 사용자 토큰 현재 유효 상태 (1시간) -- **중요**: API 호출 시점 자동 갱신 로직 없어 임시로 수동 갱신 실행 -- **정상 구현**: Gmail API 호출 전 토큰 체크 및 자동 갱신 필요 +- 모든 사용자 토큰 유효 상태로 변경 (1시간) +- 현재 수동 갱신으로 운영 중 +- 향후 자동 갱신 구현 시 안정성 향상 예상 --- ## 16. 자동 갱신 메커니즘 부재 상세 분석 (2025-08-24 로컬 개발자) ### 16.1 코드 분석 결과 -**검증 완료**: 섹션 5.2의 진단이 정확함 +섹션 5.2의 내용을 코드로 확인 #### skill-email 현재 구현 ```python