- 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/*)
2.3 KiB
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_token→gmail_tokenSELECT COUNT(*) FROM gmail_token WHERE user_id = %s
남은 작업
skill-email 서비스 수정 필요
- main.py: UUID 검증 로직 추가
- db_credentials_provider.py: Slack ID 처리 제거, UUID만 받기
- 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 테이블 참조 |
교훈
- 원칙 준수: "내부 로직은 UUID만 사용" 원칙 철저히 준수
- 테이블명 확인: 문서(tables.md) 참조하여 정확한 테이블명 사용
- 일관성: 모든 서비스가 동일한 ID 체계 사용
문서 끝