docs: UUID 문제의 근본 원인 분석 추가
- 2025년 8월 9일 테스트용 하드코딩 UUID가 문제의 시작 - gen_random_uuid() 사용하지 않고 가짜 UUID 사용한 것이 원인 - 테스트 데이터가 프로덕션에 남아 연쇄 문제 발생 - PostgreSQL UUID 올바른 사용법 교훈 추가
This commit is contained in:
parent
1793249fa5
commit
e291716847
@ -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 조건 디버깅 로그 추가 권장
|
||||
- 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()
|
||||
);
|
||||
```
|
||||
Loading…
x
Reference in New Issue
Block a user