DOCS/journey/troubleshooting/250828_ChromaDB_metadata_None_error.md
Claude-51124 22557e7132 docs: 오래된 트러블슈팅 아카이브 및 구조 정리
- 7-8월 초기 구축 문서 12개를 _archive/troubleshooting/2025_07-08_initial_setup/로 이동
- book/300_architecture/390_human_in_the_loop_intent_learning.md를 journey/research/intent_classification/로 이동 (개발 여정 문서)
- 빈 폴더 제거 (journey/assets/*)
2025-11-17 14:06:05 +09:00

1.6 KiB

ChromaDB metadata None 값 에러

날짜: 2025-08-28
서비스: rb8001
상태: 해결 완료

문제

  • Frontend 접속 시 ChromaDB 저장 실패
  • 에러: "Expected metadata value to be a str, int, float or bool, got None which is a NoneType"
  • PostgreSQL은 None 허용하여 정상 저장됨

확인된 원인

# rb8001/app/router/router.py:358-364
metadata = {
    "user_id": user_id,               # UUID (정상)
    "slack_user_id": slack_user_id,   # Frontend일 때 None ✅ 확인됨
    "channel": channel,                # Frontend일 때 None 가능성
    "intent": intent                   # None 가능성
}

해결책

# None 값 필터링 추가
metadata = {
    k: v for k, v in {
        "user_id": user_id,
        "slack_user_id": slack_user_id,
        "channel": channel,
        "intent": intent
    }.items() if v is not None
}

수정 위치

  • 파일: rb8001/app/router/router.py
  • 라인: 358-364
  • 메소드: store_conversation()

검증 데이터

  • 51124 로그: ChromaDB 에러 메시지 확인됨
  • PostgreSQL: slack_user_id=None 저장 확인됨
  • 사용자: happybell80 (UUID: 1e16e9d5-59f3-54da-a661-8abeabff4230)

테스트 결과

  1. Frontend 대화 → ChromaDB 저장 성공 (컬렉션: rb8001_1e16e9d5-59f3-54da-a661-8abeabff4230)
  2. PostgreSQL → 정상 저장 확인
  3. None 값 필터링 → 정상 작동
  4. 메모리 ID: 7c751907f061cb588b95b1ec6cae7b78 생성 확인

해결 완료

  • 수정 커밋: 454fddf
  • 배포: Gitea Actions 자동 배포 완료
  • 검증: "Conversation saved to both storages" 확인