DOCS/journey/troubleshooting/250827_51124_critical_issues.md
happybell80 0252dd1a7f fix: 51123 서버 IP 주소 업데이트 (성수 이전)
192.168.219.45 → 192.168.0.100 일괄 변경

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 11:52:26 +09:00

4.8 KiB

51124 서버 주요 이슈 - ChromaDB 격리 및 OAuth 토큰 갱신

문제 발생일

2025-08-27

작성자

Claude Code

문제 1: ChromaDB 사용자 대화 격리 문제 해결 완료 (2025-08-28)

문제 설명

rb8001 서비스에서 ChromaDB 컬렉션 구조와 사용자 데이터 분리 방식 검토 필요해결됨: 250828_UUID_통합_및_사용자_격리_계획.md 참조

해결 완료 (2025-08-28)


문제 2: skill-email OAuth 토큰 자동 갱신 부재 해결완료 (2025-08-27)

문제 설명

skill-email 서비스의 Gmail OAuth 토큰 자동 갱신 기능 미구현 상태2025-08-27 배포 완료: OAuth 토큰 자동 갱신 구현 및 배포 완료

현상 (해결 전)

  1. 토큰 갱신 미구현

    • /skill_email/services/gmail_service.py:62 TODO 주석 확인
    • refresh_credentials 함수가 실제 갱신 없이 그대로 반환
  2. auth-server 연동 부재

    • auth-server API 호출 코드 전혀 없음
    • 파일 시스템에서 토큰 읽기만 수행 (/auth-server/tokens)
    • 토큰 만료 체크 로직 없음

원인 분석 (해결됨)

현재 해결 전 상태 (2025-08-27 이전)

  1. auth-server (51123): 토큰 갱신 API 구현 완료

    • /api/gmail/refresh/{user_id} - 토큰 자동 갱신
    • /api/gmail/check/{user_id} - 토큰 상태 확인
    • 2025-08-23 문서에서 구현 확인됨
  2. skill-email (51124): auth-server API 미연동 자체 갱신 구현 완료

    • 2025-08-25 commit 2d175c1: "이메일 보내기 전 refresh" 구현
    • 2025-08-27 배포 완료

해결 방법 (구현됨)

  • Google OAuth 라이브러리(google.auth) 직접 사용
  • creds.refresh(Request()) 호출로 자동 갱신
  • 갱신된 토큰은 DB에 자동 저장
  • auth-server API 연동 없이 독립적으로 처리

구현 완료 (2025-08-27)

구현된 솔루션 (/skill_email/services/gmail_service.py:95-108)

# 토큰이 만료되었거나 곧 만료될 경우 자동 refresh
if creds and creds.expired and creds.refresh_token:
    logger.info(f"Refreshing expired token for user: {user_id}")
    from google.auth.transport.requests import Request
    creds.refresh(Request())  # Google OAuth 라이브러리가 자동 갱신
    
    # 갱신된 토큰 저장
    if hasattr(self.creds_provider, 'save_credentials'):
        self.creds_provider.save_credentials(user_id, creds)
        logger.info(f"Refreshed token saved for user: {user_id}")

추가 구현 사항

  • 401 에러 발생 시 토큰 재갱신 후 재시도 로직 추가
  • DBCredentialsProvider에 save_credentials() 메서드 구현 완료
  • 토큰 갱신 실패 시에도 서비스 계속 진행 (graceful degradation)

영향 범위

  • 영향받는 서비스: skill-email
  • 관련 서비스: auth-server (51123 서버)
  • 긴급도: MEDIUM RESOLVED (2025-08-27 해결)

테스트 방법

# 1. 현재 토큰 상태 확인 (skill-email에서)
docker exec -it skill-email python -c "
from services.db_credentials_provider import DBCredentialsProvider
provider = DBCredentialsProvider()
creds = provider.get_credentials('U0925SXQFDK')
print(f'Token expiry: {creds.expiry if creds else None}')
"

# 2. auth-server의 토큰 상태 확인 API (이미 구현됨)
curl http://192.168.0.100:3000/api/gmail/check/U0925SXQFDK

# 3. auth-server의 토큰 갱신 API 테스트 (이미 구현됨)
curl -X POST http://192.168.0.100:3000/api/gmail/refresh/U0925SXQFDK

개선 방향

  1. 데이터 구조: 사용자별 컬렉션 분리 검토 완료
  2. 서비스 표준화: rb8001과 rb10508 구조 통일 검토
  3. 코드 관리: TODO 항목 추적 및 구현
  4. 토큰 관리: OAuth 토큰 자동 갱신 체계 구축 완료

참고 문서

  • rb10508_micro 메모리 구조: /home/admin/ivada_project/rb10508_micro/app/core/memory/storage.py
  • rb8001 메모리 관리자: /home/admin/ivada_project/rb8001/app/memory/manager.py
  • skill-email Gmail 서비스: /home/admin/ivada_project/skill_email/services/gmail_service.py
  • auth-server 토큰 디렉토리: /home/admin/auth-server/tokens

업데이트 이력

  • 2025-08-27: 초기 문서 작성 - ChromaDB 격리 문제 (Claude Code)
  • 2025-08-27: skill-email OAuth 토큰 자동 갱신 문제 추가 (Claude Code)
  • 2025-08-27: skill-email OAuth 토큰 자동 갱신 해결 완료 및 배포 (Claude Code)