# UUID 통합 시스템 구현 로드맵

**날짜**: 2025-08-31
**목표**: 모든 서비스에서 UUID를 Primary Key로 사용

---

## 현재 문제

- rb8001: UUID 매핑 제공하나 내부 혼용
- skill-email: slack_id 직접 사용 (UUID 미지원)
- Gateway: JWT에서 UUID 추출
- ChromaDB: 일관성 없는 collection 명명

**영향**: 서비스 간 통신 오류, 데이터 불일치

---

## Phase 1: DB 스키마 통일 (미착수)

### 필요 작업

**1. 외래 키 제약 추가**
```sql
ALTER TABLE gmail_token ADD CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES user(id);
ALTER TABLE workspace_member ADD CONSTRAINT fk_user_id FOREIGN KEY (user_id) REFERENCES user(id);
```

**2. 인덱스 생성**
```sql
CREATE INDEX idx_conversation_log_user_id ON conversation_log(user_id);
CREATE INDEX idx_gmail_token_user_id ON gmail_token(user_id);
```

**3. 데이터 검증**
- orphaned UUID 확인
- NULL UUID 처리

---

## Phase 2: 서비스 수정 (미착수)

### skill-email
- 파일: `services/db_credentials_provider.py`
- 변경: slack_id → user_id (UUID)

### rb8001
- 파일: `app/skills/email_skill.py`
- 변경: UUID 우선 사용

### ChromaDB
- Collection 명명: `{service}_{uuid}` 통일
- 예: `rb8001_53529291-5050-4daa-89fb-008b546feb63`

---

## Phase 3: Gateway 통합 (미착수)

### JWT 표준화
```python
{
  "sub": "uuid",  # user.id
  "username": "happybell80",
  "email": "user@example.com"
}
```

### 헤더 표준화
- `X-User-Id`: UUID (모든 내부 API)
- Slack ID는 oauth_providers JSONB에만 저장

---

## 검증

**테스트 시나리오**:
1. Gmail 재인증 → JWT 발급 → UUID 확인
2. skill-email 호출 → UUID로 토큰 조회
3. ChromaDB 저장 → collection 명명 확인

---

## 참고

- `troubleshooting/250911_PostgreSQL_테이블명_단수형_통일.md`
- `troubleshooting/250924_UUID_체계_전환_및_대화저장_오류.md`
