DOCS/journey/troubleshooting/250926_happybell80_UUID_원칙_위반_email_integration.md
Claude-51124 22557e7132 docs: 오래된 트러블슈팅 아카이브 및 구조 정리
- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동
- book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서)
- 빈 폴더 제거 (journey/assets/*)
2025-11-17 14:06:05 +09:00

2.3 KiB

UUID 원칙 위반 - email_integration 및 skill-email 서비스

작성일: 2025-09-26

작성자: happybell80


문제 상황

핵심 문제

"모든 내부 로직은 UUID만 사용" 원칙(250924 문서)을 위반하여 Slack ID와 UUID 혼용

발견된 위반 사항

1. rb8001/app/skills/email_integration.py

  • 잘못된 테이블명: gmail_token → 실제는 gmail_token
  • Slack ID 사용: skill-email 호출 시 Slack ID 전달
  • 미정의 변수: user_uuid 변수 정의 없이 사용 (136줄)

2. skill-email 서비스

  • 이중 처리: UUID와 Slack ID 모두 받아서 처리
  • DB 쿼리 분기: UUID인지 Slack ID인지 판단 후 다른 쿼리 실행
  • oauth_id 조회: Slack ID로 user 테이블의 oauth_id 조회

원칙 재확인

UUID 중심 원칙 (250924 문서)

  • 모든 내부 로직은 UUID만 사용
  • Gateway가 UUID 변환 책임
  • UUID 없으면 403 차단

수정 내역

rb8001 수정 (완료)

# 변경 전: Slack ID 직접 사용
slack_id = user_id

# 변경 후: UUID 원칙 적용
if user_id.startswith('U'):
    user_uuid = await self.get_uuid_from_slack(user_id)
else:
    user_uuid = user_id

테이블명 수정 (완료)

  • gmail_tokengmail_token
  • SELECT COUNT(*) FROM gmail_token WHERE user_id = %s

남은 작업

skill-email 서비스 수정 필요

  1. main.py: UUID 검증 로직 추가
  2. db_credentials_provider.py: Slack ID 처리 제거, UUID만 받기
  3. naverworks_provider.py: UUID 검증 및 정규화

영향 범위

  • rb8001: email_integration.py
  • skill-email: 전체 provider 및 API
  • DB: gmail_token, naverworks_token 테이블 쿼리

테이블 스키마 확인 (tables.md 기준)

gmail_token (s 없음!)

컬럼명 타입 설명
user_id UUID user 테이블 참조
is_equipped BOOLEAN 장착 상태

naverworks_token

컬럼명 타입 설명
user_id UUID user 테이블 참조

교훈

  1. 원칙 준수: "내부 로직은 UUID만 사용" 원칙 철저히 준수
  2. 테이블명 확인: 문서(tables.md) 참조하여 정확한 테이블명 사용
  3. 일관성: 모든 서비스가 동일한 ID 체계 사용

문서 끝