# rb8001 ChromaDB 메타데이터 손상 문제

## 배경
- **날짜**: 2025-09-16
- **작성자**: happybell80
- **문제**: ChromaDB 메타데이터 BLOB/INTEGER 타입 불일치로 서비스 전면 마비

## 문제 상황

### 핵심 문제
- **증상**: 10:22부터 모든 사용자 요청에서 ChromaDB 오류 발생
- **오류**: `BLOB column can't be cast to INTEGER (u64)`
- **영향**: 대화 맥락 유지 및 개인화 기능 전면 마비

### 오류 메시지
```
chromadb.errors.InvalidCollectionException:
Collection with name rb8001_rag already exists
```

### 근본 원인
- ChromaDB 버전 업그레이드 시 스키마 변경 (0.5.x 이상)
- seq_id 타입: BLOB → INTEGER(u64) 변경 (성능 최적화)
- ChromaDB 1.0.21이 구 스키마 자동 마이그레이션 실패
- 기존 컬렉션의 메타데이터 테이블 손상

## 부가 문제

### 1. 스케줄러 user_id 처리
- 시스템 작업 시 더미 user_id 필요
- 현재 스케줄러가 user_id 없이 호출하여 오류 발생

### 2. 파일 중복 체크
- 해시 기반 중복 검사 로직은 정상 작동 중
- ChromaDB 문제와는 별개

### 3. 이메일 서비스 불안정
- skill_email 서비스 헬스체크는 정상
- 실제 이메일 API 호출 시 500 에러 발생

## 현재 상태
- **해결됨** (2025-09-16 23:23)
- ChromaDB 초기화 완료
- 백업: chroma_backup_20250916_232341
- rb8001: 정상 작동 (healthy)
- 모든 기능 정상화

## 해결 과정

### 실행한 해결책: ChromaDB 초기화 (임베디드 모드로 실행)
```bash
# 1. 백업 생성
mv /code/chroma_db /code/chroma_db_backup_20250916_232341

# 2. 새 디렉토리 생성
mkdir -p /code/chroma_db

# 3. rb8001 재시작
docker restart rb8001
```

### 결과
- 모든 컬렉션 삭제되어 깨끗한 상태로 초기화
- 새 대화 시작 시 자동으로 새 컬렉션 생성
- INTEGER(u64) 스키마로 정상 작동

## 영향 범위
- 모든 사용자 대화 영향
- 10:22부터 23:23까지 약 13시간 지속
- skill-rag-file 등 연계 서비스도 영향 받음

## 교훈
- ChromaDB 버전 업그레이드 전 스키마 호환성 검증 필수
- ChromaDB 1.0.x는 구버전 스키마 자동 마이그레이션 실패 가능
- 백업 없이 마이그레이션 진행 금지
- 스키마 손상 시 초기화가 가장 확실한 해결책