docs: UUID 및 JWT 인증 체계 추가
- 모든 내부 처리는 UUID 형식 통일 - JWT 토큰의 user_id 사용 명시 - PostgreSQL UUID 타입 캐스팅 추가 - Frontend API 호출 예시 추가
This commit is contained in:
parent
5e99456a76
commit
259b733708
@ -15,6 +15,12 @@
|
||||
- get_paginated_conversations() 함수 없음 (추가 필요)
|
||||
- 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)
|
||||
@ -46,15 +52,27 @@
|
||||
|
||||
### PostgreSQL 쿼리 예시
|
||||
```sql
|
||||
-- user_id는 항상 UUID 형식
|
||||
SELECT id, message, response, timestamp, user_id
|
||||
FROM conversation_logs
|
||||
WHERE user_id = $1
|
||||
WHERE user_id = $1::uuid -- UUID 타입 캐스팅
|
||||
AND robeing_id = 'rb8001'
|
||||
AND timestamp < $2
|
||||
ORDER BY timestamp DESC
|
||||
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시간)
|
||||
- config.py 환경변수 추가
|
||||
- database.py에 get_paginated_conversations() 구현 (PostgreSQL 전용)
|
||||
- main.py에 엔드포인트 직접 추가
|
||||
- 현재 대화는 save_conversation()으로 PostgreSQL에 저장 필수
|
||||
- database.py에 get_paginated_conversations() 구현 (PostgreSQL 전용, UUID 처리)
|
||||
- main.py에 엔드포인트 직접 추가 (JWT 인증 확인)
|
||||
- 현재 대화는 save_conversation()으로 PostgreSQL에 저장 (UUID로 저장)
|
||||
2. 프론트엔드 통합 (1시간)
|
||||
- robeing-api.ts 함수 추가
|
||||
- chat-interface.tsx 무한 스크롤 구현
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user