diff --git a/plans/250901_rb8001_chat_history_implementation_plan.md b/plans/250901_rb8001_chat_history_implementation_plan.md index bc0085a..79d5d95 100644 --- a/plans/250901_rb8001_chat_history_implementation_plan.md +++ b/plans/250901_rb8001_chat_history_implementation_plan.md @@ -3,6 +3,7 @@ ## 작성일: 2025-09-01 ## 대상: rb8001 (프로덕션 로빙) ## 참조: rb10508_micro 구현 코드 +## 수정: PostgreSQL 전용 히스토리 구현으로 변경 --- @@ -18,7 +19,9 @@ ### 백엔드 (rb8001) 1. `app/core/config.py` - 환경변수 추가 (MESSAGE_BATCH_SIZE=30, MAX_MESSAGES_IN_DOM=200) -2. `app/state/database.py` - get_paginated_conversations() 함수 추가 (기존 get_recent_conversations 참고) +2. `app/state/database.py` - get_paginated_conversations() 함수 추가 + - PostgreSQL conversation_logs 테이블에서만 조회 + - ChromaDB 사용하지 않음 (히스토리는 DB만) 3. `main.py` - @app.get() 직접 추가 (/api/config, /api/messages) 4. `.env` 파일 - 환경변수 설정 (docker-compose.yml 아님) @@ -36,11 +39,22 @@ // GET /api/messages?before={timestamp}&limit=30 { - messages: [...], + messages: [...], // PostgreSQL conversation_logs에서 조회 has_more: true } ``` +### PostgreSQL 쿼리 예시 +```sql +SELECT id, message, response, timestamp, user_id +FROM conversation_logs +WHERE user_id = $1 + AND robeing_id = 'rb8001' + AND timestamp < $2 +ORDER BY timestamp DESC +LIMIT 30; +``` + --- ## 데이터베이스 스키마 @@ -85,8 +99,9 @@ MAX_MESSAGES_IN_DOM: int = int(os.getenv("MAX_MESSAGES_IN_DOM", 200)) ### 구현 순서 1. 백엔드 API 추가 (1시간) - config.py 환경변수 추가 - - database.py에 get_paginated_conversations() 구현 + - database.py에 get_paginated_conversations() 구현 (PostgreSQL 전용) - main.py에 엔드포인트 직접 추가 + - 현재 대화는 save_conversation()으로 PostgreSQL에 저장 필수 2. 프론트엔드 통합 (1시간) - robeing-api.ts 함수 추가 - chat-interface.tsx 무한 스크롤 구현