diff --git a/troubleshooting/250805-06_happybell80_AI응답개선Phase1-5.md b/troubleshooting/250805-06_happybell80_AI응답개선Phase1-5.md index 103c24e..2a59dcf 100644 --- a/troubleshooting/250805-06_happybell80_AI응답개선Phase1-5.md +++ b/troubleshooting/250805-06_happybell80_AI응답개선Phase1-5.md @@ -282,4 +282,126 @@ if settings.USE_CONVERSATION_CACHE: ✅ **안전한 배포** - 기존 기능 무영향 - 메모리 사용량 오히려 감소 -- Phase 3 진행 준비 완료 \ No newline at end of file +- Phase 3 진행 준비 완료 + +--- + +# Phase 3: 지능형 캐시 저장 + TTL 관리 + +**날짜**: 2025-08-06 +**시작 시간**: 오전 10시 30분 + +## 오전 10시 30분 + +### Phase 3 구현 + +**목표**: 중복 방지, 사용자별 제한, TTL 관리 + +**구현 내용**: + +1. **메모리 카운터 시스템** + - 지연 로딩으로 성능 최적화 + - 사용자별 캐시 개수 실시간 추적 + +2. **store_conversation_cache 메서드** + ```python + # 중복 체크 (유사도 0.1 미만은 스킵) + if existing['distances'][0] and existing['distances'][0][0] < 0.1: + logger.debug(f"[CONV_CACHE] 중복 캐시 스킵: {message[:50]}...") + return + ``` + +3. **효율적 정리 메커니즘** + - 1000개 초과 시 오래된 200개 삭제 + - 800개 유지로 빈번한 정리 방지 + +4. **백그라운드 저장** + - brain.py에서 asyncio.create_task 활용 + - 응답 지연 없이 캐시 저장 + +5. **cleanup.py 스크립트** + - 크론잡용 독립 실행 파일 + - TTL 만료 캐시 자동 정리 + +## 오전 11시 19분 + +### Phase 3 캐시 테스트 중 Docker 및 환경변수 설정 오류 + +**작성자**: Claude (51124 서버) + +**발생한 실수들**: + +1. **Docker 전체 컨테이너 삭제** + ```bash + docker system prune -af # 치명적 실수! + ``` + - 모든 서비스 컨테이너 삭제됨 + - rb10508_micro, skill-embedding 등 전체 중단 + +2. **skill-embedding URL 오설정** + - httpbin.org로 변경하여 Phase 3 테스트 차단 + - 올바른 설정: `SKILL_EMBEDDING_URL=http://172.17.0.1:8015` + +3. **Docker 컨테이너 재생성 오류 반복** + ```bash + # 잘못된 방법 (여러 번 반복) + docker-compose up -d + # Error: container name already in use + ``` + - 중지된 컨테이너 제거 없이 재생성 시도 + +4. **환경변수 vs 코드 구분 착각** + - .env 파일을 코드로 착각 + - "코드를 수정할 수 없다"고 판단 + +**해결 과정**: + +1. skill-embedding 서비스 복구 +2. 올바른 Docker 재시작 절차 + ```bash + docker-compose down + docker-compose up -d + ``` +3. 환경변수 올바르게 설정 +4. Phase 3 캐시 기능 활성화 성공 + +**최종 테스트 결과**: +- API 응답 정상 ✅ +- memory_stored: true ✅ +- ChromaDB에 대화 저장됨 ✅ +- skill-embedding 연결 정상 ✅ +- 응답 시간: 1.44초 + +## Phase 3 교훈 + +1. **Docker 안전 규칙** + - `docker system prune -af`는 절대 금지 + - 컨테이너 재생성 시 반드시 down → up + - 개별 컨테이너만 조작하기 + +2. **환경설정 이해** + - .env 파일은 설정 파일 (코드 아님) + - 서버 클로드는 .env 수정 가능 + - 환경변수 변경 후 컨테이너 재시작 필수 + +3. **서비스 의존성** + - skill-embedding은 핵심 서비스 + - 잘못된 URL 설정 시 전체 기능 마비 + - 서비스 간 연결 확인 중요 + +## Phase 3 성과 + +✅ **캐시 저장 시스템 구축 완료** +- 중복 방지 메커니즘 작동 +- 사용자별 1000개 제한 구현 +- TTL 기반 자동 정리 준비 + +✅ **성능 최적화** +- 메모리 카운터로 빠른 조회 +- 백그라운드 저장으로 응답 지연 없음 +- 효율적 정리로 리소스 절약 + +✅ **운영 준비 완료** +- cleanup.py 크론잡 준비 +- 모니터링 로그 추가 +- 안전한 에러 처리 \ No newline at end of file