DOCS/journey/plans/250831_unified_id_system_implementation_roadmap.md

1.9 KiB

UUID 통합 시스템 구현 로드맵

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


현재 문제

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

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


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

필요 작업

1. 외래 키 제약 추가

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. 인덱스 생성

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 표준화

{
  "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