diff --git a/troubleshooting/250818_happybell80_대화히스토리구현.md b/troubleshooting/250818_happybell80_대화히스토리구현.md index 691bfd9..aa8023c 100644 --- a/troubleshooting/250818_happybell80_대화히스토리구현.md +++ b/troubleshooting/250818_happybell80_대화히스토리구현.md @@ -142,10 +142,33 @@ def resolve_username(user_id: str) -> str: - 프론트 검색 시: `user_id = "happybell80"` (username) - where 조건 `{"user_id": user_id}` 일치하지 않음 -### 원인 -- 250809, 250812에도 같은 문제 발생 -- User ID 체계 3가지 혼재 (UUID, username, email) -- 각 시스템이 다른 ID 사용 +### 근본 원인 발견 +**2025년 8월 9일의 잘못된 결정이 문제의 시작**: + +```sql +-- 잘못된 예: 테스트용 UUID 하드코딩 (250809_happybell80_robing-gateway구현.md) +INSERT INTO users (id, email, name) VALUES +('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'::uuid, 'goeun2dc@gmail.com', '김종태'), +('bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb'::uuid, '0914eagle@gmail.com', '전희재'), +('cccccccc-cccc-cccc-cccc-cccccccccccc'::uuid, 'hhyong91@gmail.com', '황한용'); + +-- 올바른 방법: gen_random_uuid() 사용 +INSERT INTO users (id, email, name, username) VALUES +(gen_random_uuid(), 'goeun2dc@gmail.com', '김종태', 'happybell80'); +-- 실제 UUID 생성: 'e7a9f3c2-8b4d-4f2e-a1b3-9c8d7e6f5a4b' +``` + +### 문제의 연쇄 반응 +1. **테스트 데이터가 프로덕션에**: 임시 UUID가 영구 사용 +2. **프론트엔드 혼란**: user_id 불명확 → "default_user" 하드코딩 +3. **ChromaDB 컬렉션명 혼란**: UUID? username? email? +4. **매핑 지옥**: 여러 식별자 연결하는 복잡한 시스템 필요 + +### 왜 이런 실수를 했나 +- OAuth 로그인 시 UUID 자동 생성 대신 +- 개발 편의를 위해 알아보기 쉬운 UUID 사용 +- aaaa..., bbbb..., cccc... 패턴으로 테스트 +- username 시스템은 나중에 급하게 추가 (8월 9일) ### 해결 ```python @@ -170,4 +193,22 @@ results = collection.query( ### 6. **ChromaDB 메타데이터 일관성** - 저장 시와 검색 시 키 일치 확인 - username vs user_id 명확히 구분 -- where 조건 디버깅 로그 추가 권장 \ No newline at end of file +- where 조건 디버깅 로그 추가 권장 + +### 7. **테스트 데이터를 프로덕션에 사용 금지** +- 개발 편의를 위한 하드코딩 UUID 사용 금지 +- 항상 `gen_random_uuid()` 같은 실제 함수 사용 +- 테스트 데이터는 명확히 구분하고 제거 + +### 8. **PostgreSQL UUID 올바른 사용법** +```sql +-- ❌ 잘못된 방법: 하드코딩 +INSERT INTO users (id) VALUES ('aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'); + +-- ✅ 올바른 방법: 함수 사용 +INSERT INTO users (id) VALUES (gen_random_uuid()); +-- 또는 테이블 정의 시 DEFAULT 설정 +CREATE TABLE users ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid() +); +``` \ No newline at end of file