docs: ChromaDB 컬렉션명 패턴을 서비스별 prefix 방식으로 통일
- 기존: user_{uuid}_emails 형식
- 변경: {service}_{uuid} 형식 (예: rb8001_{uuid}, skill_email_{uuid})
- 서비스별 데이터 격리 및 관리 용이성 향상
- 8/28 UUID 통합 문서의 검증된 패턴 적용
This commit is contained in:
parent
76b5ff0db3
commit
4220e6ac25
@ -13,7 +13,7 @@
|
|||||||
- **rb8001**: UUID 매핑 API 제공하지만 내부적으로 혼용
|
- **rb8001**: UUID 매핑 API 제공하지만 내부적으로 혼용
|
||||||
- **skill-email**: slack_id 직접 사용 (UUID 미지원)
|
- **skill-email**: slack_id 직접 사용 (UUID 미지원)
|
||||||
- **Gateway**: JWT에서 UUID 추출 후 전달
|
- **Gateway**: JWT에서 UUID 추출 후 전달
|
||||||
- **ChromaDB**: 일관성 없는 collection 명명 체계
|
- **ChromaDB**: 일관성 없는 collection 명명 체계 → 서비스별 prefix 방식으로 통일 필요 ({service}_{uuid})
|
||||||
|
|
||||||
### 1.2 영향 범위
|
### 1.2 영향 범위
|
||||||
- 서비스 간 통신 오류 발생
|
- 서비스 간 통신 오류 발생
|
||||||
@ -140,8 +140,8 @@ async def list_emails(request: EmailRequest):
|
|||||||
# user_id를 UUID로 받음
|
# user_id를 UUID로 받음
|
||||||
user_uuid = request.user_id # 이제 UUID
|
user_uuid = request.user_id # 이제 UUID
|
||||||
|
|
||||||
# ChromaDB collection 명명 규칙 통일
|
# ChromaDB collection 명명 규칙 통일 (서비스별 prefix)
|
||||||
collection_name = f"user_{user_uuid}_emails" # UUID 사용
|
collection_name = f"skill_email_{user_uuid}" # 서비스_UUID 형식
|
||||||
|
|
||||||
credentials = await credentials_provider.get_credentials(user_uuid)
|
credentials = await credentials_provider.get_credentials(user_uuid)
|
||||||
# ...
|
# ...
|
||||||
@ -201,7 +201,7 @@ async def handle_slack_event(request: Request):
|
|||||||
---
|
---
|
||||||
|
|
||||||
### Phase 4: ChromaDB Collection 정리 (Day 7)
|
### Phase 4: ChromaDB Collection 정리 (Day 7)
|
||||||
**목표**: UUID 기반 일관된 명명 체계 적용
|
**목표**: 서비스별 prefix + UUID 기반 일관된 명명 체계 적용
|
||||||
|
|
||||||
#### 4.1 Collection 마이그레이션 스크립트
|
#### 4.1 Collection 마이그레이션 스크립트
|
||||||
```python
|
```python
|
||||||
@ -230,7 +230,9 @@ async def migrate_collections():
|
|||||||
user_uuid = await get_uuid_from_slack_id(slack_id)
|
user_uuid = await get_uuid_from_slack_id(slack_id)
|
||||||
|
|
||||||
if user_uuid:
|
if user_uuid:
|
||||||
new_name = f"user_{user_uuid}_emails"
|
# 서비스별 prefix 방식 (예: rb8001_{uuid}, skill_email_{uuid})
|
||||||
|
service_name = old_name.split("_")[0] if "_" in old_name else "rb8001"
|
||||||
|
new_name = f"{service_name}_{user_uuid}"
|
||||||
|
|
||||||
# 컬렉션 복사
|
# 컬렉션 복사
|
||||||
old_collection = client.get_collection(old_name)
|
old_collection = client.get_collection(old_name)
|
||||||
@ -305,8 +307,8 @@ async def test_full_flow():
|
|||||||
emails = await fetch_emails(user_uuid)
|
emails = await fetch_emails(user_uuid)
|
||||||
assert emails is not None
|
assert emails is not None
|
||||||
|
|
||||||
# 5. ChromaDB 컬렉션 확인
|
# 5. ChromaDB 컬렉션 확인 (서비스별 prefix)
|
||||||
collection_name = f"user_{user_uuid}_emails"
|
collection_name = f"skill_email_{user_uuid}"
|
||||||
collection = chromadb_client.get_collection(collection_name)
|
collection = chromadb_client.get_collection(collection_name)
|
||||||
assert collection is not None
|
assert collection is not None
|
||||||
|
|
||||||
@ -394,7 +396,7 @@ if not uuid_mapping:
|
|||||||
|
|
||||||
- ✅ 모든 서비스가 UUID를 primary key로 사용
|
- ✅ 모든 서비스가 UUID를 primary key로 사용
|
||||||
- ✅ Slack ID는 진입점에서만 UUID로 변환
|
- ✅ Slack ID는 진입점에서만 UUID로 변환
|
||||||
- ✅ ChromaDB 컬렉션명 통일 (user_{uuid}_*)
|
- ✅ ChromaDB 컬렉션명 통일 ({service}_{uuid} 형식)
|
||||||
- ✅ 서비스 간 통신 오류 0%
|
- ✅ 서비스 간 통신 오류 0%
|
||||||
- ✅ 기존 기능 100% 하위 호환성 유지
|
- ✅ 기존 기능 100% 하위 호환성 유지
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user