diff --git a/troubleshooting/250826_rb8001_conversation_storage_failure.md b/troubleshooting/250826_rb8001_conversation_storage_failure.md index 09028ed..e27a9d3 100644 --- a/troubleshooting/250826_rb8001_conversation_storage_failure.md +++ b/troubleshooting/250826_rb8001_conversation_storage_failure.md @@ -2,9 +2,9 @@ ## 작성일: 2025-08-26 ## 작성자: 51124 서버 담당 -## 상태: 부분 해결 (ChromaDB ✅, PostgreSQL ❌) -## 영향: PostgreSQL conversation_logs 저장 실패 (UUID 타입 불일치) -## 최종 업데이트: 2025-08-26 18:30 +## 상태: ✅ 완전 해결 (ChromaDB ✅, PostgreSQL ✅, Foreign key ✅) +## 영향: PostgreSQL conversation_logs 정상 저장 +## 최종 업데이트: 2025-08-26 19:30 --- @@ -215,9 +215,9 @@ print('Collections:', client.list_collections()) ## 10. 우선순위 **중간** - ChromaDB는 정상 작동하므로 기본 기능은 유지됨. PostgreSQL 저장만 실패 -## 11. 수정 후 상태 (2025-08-26 18:30 업데이트) +## 11. 수정 후 상태 (2025-08-26 19:00 업데이트) - **ChromaDB**: ✅ 정상 저장 및 조회 가능 -- **PostgreSQL**: ❌ UUID 타입 에러로 저장 실패 (수정 필요) +- **PostgreSQL**: ✅ UUID 변환 로직 추가로 정상 저장 --- @@ -249,7 +249,45 @@ print('Collections:', client.list_collections()) ### 12.4 핵심 문제 **51124 서버의 rb8001이 UUID 형식이 아닌 user_id를 보내서 PostgreSQL 저장 실패** -### 12.5 다음 단계 -1. rb8001 코드에 UUID 변환 로직 추가 필요 -2. slack_user_id 필드 활용하여 원본 ID 보존 -3. Gateway JWT 시크릿 키 동기화 확인 \ No newline at end of file +### 12.5 해결 과정 + +#### 1차 시도 (2025-08-26 19:00) - UUID 변환 +✅ **적용된 해결책** +- **router.py:309-378** UUID 변환 로직 추가 +- UUID가 아닌 경우 UUID5로 변환 +- **문제 발견**: Foreign key 제약 위반 (users 테이블에 없는 UUID) + +#### 2차 해결 (2025-08-26 19:30) - Foreign key 처리 +✅ **최종 해결책** +1. **router.py:344-391** users 테이블 확인 로직 추가 + - UUID 형식 & users 테이블 존재 → user_id에 저장 + - UUID 형식 & users 테이블 없음 → user_id는 NULL, slack_user_id에 저장 + - 비-UUID (Slack ID, 문자열) → user_id는 NULL, slack_user_id에 저장 + +2. **database.py:56** 스키마 수정 유지 + - slack_user_id 컬럼 (VARCHAR) - 원본 ID 보존 + - user_id (UUID/NULL) - Foreign key 제약 준수 + +3. **Git 커밋 및 배포** + - 1차 커밋: 84d124a (UUID 변환) + - 2차 커밋: 5a0af8a (Foreign key 해결) + - Gitea Actions 자동 배포 → 51124 서버 + +### 12.6 최종 처리 로직 +| 케이스 | users 테이블 | user_id 저장 | slack_user_id 저장 | +|--------|-------------|-------------|------------------| +| 등록된 UUID 사용자 | ✅ 존재 | UUID 값 | NULL | +| 미등록 UUID | ❌ 없음 | NULL | UUID 값 | +| Slack ID (U0925SXQFDK) | - | NULL | U0925SXQFDK | +| 문자열 (test_user) | - | NULL | test_user | +| happybell80 | - | NULL | happybell80 | + +### 12.7 검증된 장점 +- ✅ Foreign key 제약 유지 +- ✅ 모든 대화 저장 가능 +- ✅ users 테이블 오염 방지 +- ✅ slack_user_id로 사용자 추적 가능 +- ✅ 나중에 사용자 등록 시 매핑 가능 + +### 12.8 남은 작업 +⚠️ **Gateway JWT 에러**: "Signature verification failed" (별도 이슈로 처리) \ No newline at end of file