docs: UUID 및 JWT 인증 체계 추가

- 모든 내부 처리는 UUID 형식 통일
- JWT 토큰의 user_id 사용 명시
- PostgreSQL UUID 타입 캐스팅 추가
- Frontend API 호출 예시 추가
This commit is contained in:
happybell80 2025-09-01 22:10:35 +09:00
parent 5e99456a76
commit 259b733708

View File

@ -15,6 +15,12 @@
- get_paginated_conversations() 함수 없음 (추가 필요) - get_paginated_conversations() 함수 없음 (추가 필요)
- main.py: @app.get() 직접 사용, router 분리 없음 - main.py: @app.get() 직접 사용, router 분리 없음
## UUID 및 인증 체계
- **내부 처리**: 모든 user_id는 UUID 형식으로 통일
- **JWT 토큰**: X-User-Id 헤더로 UUID 전달
- **Slack 사용자**: slack_user_mapping 테이블로 UUID 매핑
- **Frontend**: JWT에서 user_id(UUID) 추출하여 API 호출
## 수정 필요 파일 ## 수정 필요 파일
### 백엔드 (rb8001) ### 백엔드 (rb8001)
@ -46,15 +52,27 @@
### PostgreSQL 쿼리 예시 ### PostgreSQL 쿼리 예시
```sql ```sql
-- user_id는 항상 UUID 형식
SELECT id, message, response, timestamp, user_id SELECT id, message, response, timestamp, user_id
FROM conversation_logs FROM conversation_logs
WHERE user_id = $1 WHERE user_id = $1::uuid -- UUID 타입 캐스팅
AND robeing_id = 'rb8001' AND robeing_id = 'rb8001'
AND timestamp < $2 AND timestamp < $2
ORDER BY timestamp DESC ORDER BY timestamp DESC
LIMIT 30; LIMIT 30;
``` ```
### API 호출 예시
```javascript
// Frontend에서 JWT의 user_id 사용
const token = localStorage.getItem('token');
const decoded = jwt_decode(token);
const userId = decoded.user_id; // UUID 형식
// API 호출
await fetch(`/api/messages?user_id=${userId}&before=${timestamp}`);
```
--- ---
## 데이터베이스 스키마 ## 데이터베이스 스키마
@ -99,9 +117,9 @@ MAX_MESSAGES_IN_DOM: int = int(os.getenv("MAX_MESSAGES_IN_DOM", 200))
### 구현 순서 ### 구현 순서
1. 백엔드 API 추가 (1시간) 1. 백엔드 API 추가 (1시간)
- config.py 환경변수 추가 - config.py 환경변수 추가
- database.py에 get_paginated_conversations() 구현 (PostgreSQL 전용) - database.py에 get_paginated_conversations() 구현 (PostgreSQL 전용, UUID 처리)
- main.py에 엔드포인트 직접 추가 - main.py에 엔드포인트 직접 추가 (JWT 인증 확인)
- 현재 대화는 save_conversation()으로 PostgreSQL에 저장 필수 - 현재 대화는 save_conversation()으로 PostgreSQL에 저장 (UUID로 저장)
2. 프론트엔드 통합 (1시간) 2. 프론트엔드 통합 (1시간)
- robeing-api.ts 함수 추가 - robeing-api.ts 함수 추가
- chat-interface.tsx 무한 스크롤 구현 - chat-interface.tsx 무한 스크롤 구현