# UUID 통합 시스템 구현 로드맵 **날짜**: 2025-08-31 **목표**: 모든 서비스에서 UUID를 Primary Key로 사용 --- ## 현재 문제 - rb8001: UUID 매핑 제공하나 내부 혼용 - skill-email: slack_id 직접 사용 (UUID 미지원) - Gateway: JWT에서 UUID 추출 - ChromaDB: 일관성 없는 collection 명명 **영향**: 서비스 간 통신 오류, 데이터 불일치 --- ## Phase 1: DB 스키마 통일 (✅ 완료) ### 완료된 작업 **1. 외래 키 제약** ✅ - `conversation_log.user_id` → `user.id` (main_db.py:146) - `gmail_token.user_id` → `user.id` (이미 구현됨) **2. 인덱스** ⚠️ 부분 완료 - 일부 테이블에 인덱스 존재 (ir_deck_evaluations, robeing_diary 등) - `conversation_log.user_id`, `gmail_token.user_id` 인덱스는 확인 필요 **3. 데이터 검증** ⏳ 미착수 - orphaned UUID 확인 - NULL UUID 처리 --- ## Phase 2: 서비스 수정 (✅ 완료) ### skill-email ✅ - 파일: `services/db_credentials_provider.py` - 변경: UUID 지원 추가 완료 (250920) - 추가 수정: UUID 강제 (250926, 2025-12-17) ### rb8001 ✅ - 파일: `app/skills/email_integration.py` - 변경: UUID 우선 사용 완료 (250926) ### ChromaDB ✅ - Collection 명명: `{service}_{identifier}_{type}` 통일 완료 (250920) - 예: `rb8001_53529291-5050-4daa-89fb-008b546feb63_memory` - 참고: `troubleshooting/250920_chromadb_collection_naming_unification.md` --- ## Phase 3: Gateway 통합 (✅ 완료) ### JWT 표준화 ✅ ```python { "sub": "uuid", # user.id "username": "happybell80", "email": "user@example.com" } ``` - auth-server에서 UUID를 sub에 포함하여 발급 중 ### 헤더 표준화 ✅ - `X-User-Id`: UUID (모든 내부 API) - Slack ID는 oauth_providers JSONB에만 저장 - Gateway에서 UUID 변환 후 전달 중 --- ## 검증 **테스트 시나리오**: 1. Gmail 재인증 → JWT 발급 → UUID 확인 2. skill-email 호출 → UUID로 토큰 조회 3. ChromaDB 저장 → collection 명명 확인 --- ## 참고 - `troubleshooting/250911_PostgreSQL_테이블명_단수형_통일.md` - `troubleshooting/250924_UUID_체계_전환_및_대화저장_오류.md`