fix: rb8001 크론잡 트러블슈팅 문서 개선 및 토큰 갱신 버그 분석 추가

- 해결된 부분과 미해결 문제 명확히 구분
- Gmail 토큰 자동 갱신 timezone 버그 상세 분석 추가
  - auth-server의 datetime.now() UTC 처리 문제
  - API는 정상 작동하나 expiry 필드 잘못 저장
- 로컬 개발자를 위한 즉시 수정 액션 아이템 추가
  - app/api/gmail_refresh.py:132 수정 필요
  - timezone.utc 사용 권장
- 불필요한 중복 해결책 제거, 현재 문제에 집중
This commit is contained in:
happybell80 2025-08-25 00:38:33 +09:00
parent 52ea633cdb
commit 1d4fbf68c2

View File

@ -115,48 +115,29 @@ NameError: name 'datetime' is not defined
--- ---
## 5. 해결 방안 ## 5. 현재 미해결 문제
### 5.1 즉시 조치 (임시) ### 5.1 Gmail 토큰 자동 갱신 실패
```bash **근본 원인**: auth-server의 timezone 버그
# skill-email 환경 변경 (database → file 모드) - 파일: `/home/admin/auth-server/app/api/gmail_refresh.py:132`
cd /home/admin/ivada_project/skill_email - 문제: `datetime.now()`가 timezone-naive datetime 생성
vi .env - 영향: DB에 UTC로 저장되어 8시간 전 시간으로 기록 (항상 만료 상태)
# TOKEN_PROVIDER=file 로 변경
# 서비스 재시작 **필요 조치**:
docker compose down && docker compose up -d --build
```
### 5.2 근본 해결
#### 옵션 1: auth_db → main_db 마이그레이션
```bash
# skill-email .env 수정
DATABASE_URL=postgresql://robeings:robeings@localhost:5433/main_db
# gmail_tokens 테이블이 main_db에 이미 존재하므로 정상 작동 예상
```
#### 옵션 2: 51123 서버 직접 연결
```bash
# SSH 터널 대신 직접 연결
DATABASE_URL=postgresql://robeings:robeings@192.168.219.45:5432/main_db
```
#### 옵션 3: rb8001 내장 이메일 기능 사용
- rb8001에 이미 통합된 email_integration.py 활용
- skill-email 의존성 제거
### 5.3 코드 수정 필요
```python ```python
# rb8001/main.py 상단에 추가 # 현재 (버그)
import datetime new_expiry = datetime.now() + timedelta(seconds=expires_in)
# 또는 # 수정 필요
from datetime import datetime from datetime import timezone
new_expiry = datetime.now(timezone.utc) + timedelta(seconds=expires_in)
``` ```
### 5.2 자동 갱신 메커니즘 부재
- 현재: 수동 API 호출만 가능 (`/api/gmail/refresh/{user_id}`)
- 필요: 크론잡 또는 스케줄러로 자동 갱신
- 추천: 토큰 만료 1시간 전 자동 갱신 트리거
--- ---
## 6. 검증 방법 ## 6. 검증 방법
@ -245,18 +226,18 @@ docker exec robeing-gateway tail -f /var/log/cron.log
- **auth_db → main_db 마이그레이션**: 완료 ✅ - **auth_db → main_db 마이그레이션**: 완료 ✅
- **main_db gmail_tokens**: 테이블 존재, 토큰 데이터 NULL ❌ - **main_db gmail_tokens**: 테이블 존재, 토큰 데이터 NULL ❌
### 조치 사항 (2025-08-25 00:12) ### 해결된 사항 (2025-08-25 00:12)
- **skill-email .env 수정**: - **skill-email DB 연결 문제**: ✅ 해결
- 변경 전: `postgresql://robeings:robeings@192.168.219.45:5432/main_db` - .env 수정: `postgresql://robeings:robeings@localhost:5433/main_db`
- 변경 후: `postgresql://robeings:robeings@localhost:5433/main_db` - auth_db → main_db 마이그레이션 완료
- **서비스 재시작**: docker compose 재빌드 완료 - 서비스 재시작 완료
### 남은 문제 ### 현재 문제 상태
- **Gmail OAuth 토큰 부재**: 모든 사용자의 token_data가 NULL - **모든 사용자 토큰 만료**:
- b6ea2ee0 (전희재/U091UNVE41M): token_data = NULL - 0914eagle: 1일 8시간 전 만료
- 1e16e9d5 (김종태/U0925SXQFDK): token_data = NULL - cdctfm: 1일 15시간 전 만료
- 69ae4ea9 (HanYong Hwang/U092F7FQ55L): token_data = NULL - happybell80: 1일 15시간 전 만료
- **해결 필요**: 사용자들이 프론트엔드에서 Gmail 재인증 필요 - **자동 갱신 실패**: refresh_token 존재하나 timezone 버그로 갱신 불가
### 긴급도 ### 긴급도
- **높음**: 매일 오전 9시 사용자 영향 - **높음**: 매일 오전 9시 사용자 영향
@ -266,6 +247,19 @@ docker exec robeing-gateway tail -f /var/log/cron.log
## 11. OAuth 토큰 상태 검증 (2025-08-25 00:30) ## 11. OAuth 토큰 상태 검증 (2025-08-25 00:30)
### 토큰 갱신 API 테스트
```bash
# API 호출 성공
curl -X POST "http://localhost:9000/api/gmail/refresh/1e16e9d5-59f3-54da-a661-8abeabff4230"
# 응답: 200 OK, "status": "refreshed"
# 그러나 DB 확인 시 여전히 만료 상태
SELECT username, expiry FROM gmail_tokens WHERE username='happybell80';
# expiry: 2025-08-24 16:30:10 (어제 시간으로 기록됨)
```
## 12. 토큰 자동 갱신 버그 분석 (2025-08-25 00:35)
### DB 검증 결과 ### DB 검증 결과
```sql ```sql
-- 토큰 데이터 확인 -- 토큰 데이터 확인
@ -316,4 +310,36 @@ FROM gmail_tokens;
--- ---
## 13. 필요한 조치사항 (로컬 개발자 액션)
### 13.1 즉시 수정 필요
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)
```
2. **토큰 자동 갱신 크론잡 구현**
- 매시간 만료 임박 토큰 체크
- 만료 1시간 전 자동 갱신
- 갱신 실패 시 알림
### 13.2 영향받는 서비스
- rb8001 일일 요약 (매일 오전 9시)
- skill-email 이메일 조회 기능
- 프론트엔드 Gmail 아이템 기능
### 13.3 긴급도
- **매우 높음**: 모든 Gmail 관련 기능 작동 불가
- 즉시 수정 및 배포 필요
---
**문서 끝** **문서 끝**