docs: UUID vs username 문제 완전 해결 - COMPLETED 상태로 업데이트
- Gateway UUID 조회 구현 완료 - happybell80 → rb8001 라우팅 정상화 - 시스템 전체 UUID 체계 통일 완료
This commit is contained in:
parent
c78826ef4a
commit
ce07864236
@ -2,19 +2,20 @@
|
||||
|
||||
## 작성일: 2025-08-27
|
||||
## 작성자: 51123 서버 관리자
|
||||
## 상태: 🔴 INCOMPLETE - 2025-08-27 16:50 Gateway UUID 조회 미구현
|
||||
## 상태: ✅ COMPLETED - 2025-08-27 17:30 모든 UUID 문제 해결 완료
|
||||
## 영향 범위: 전체 시스템 (Auth, Gateway, Frontend, rb8001, DB)
|
||||
## 위험 수준: ~~매우 높음~~ → 해결됨
|
||||
## 위험 수준: ~~매우 높음~~ → ✅ 완전 해결
|
||||
|
||||
---
|
||||
|
||||
## 1. 문제 요약
|
||||
|
||||
### ~~🚨 핵심 문제~~ ✅ 해결 완료
|
||||
**~~시스템 전체가 UUID와 username을 구분하지 못해 데이터 무결성 파괴~~**
|
||||
- ~~JWT `sub` 클레임에 UUID 대신 username 저장~~ → ✅ UUID 사용으로 수정
|
||||
- ~~Frontend가 하드코딩된 문자열 사용~~ → ✅ UUID 저장 및 전송
|
||||
- ~~DB에 UUID 대신 username/slack_id 저장~~ → ✅ UUID 정상 처리
|
||||
### ✅ 모든 핵심 문제 해결 완료
|
||||
**시스템 전체 UUID 체계로 통일 완료**
|
||||
- ✅ JWT `sub` 클레임: UUID 사용으로 수정 완료
|
||||
- ✅ Frontend: localStorage에 UUID 저장 및 전송
|
||||
- ✅ DB: UUID 기반 조회로 전환 완료
|
||||
- ✅ Gateway: UUID로 사용자 조회 및 라우팅
|
||||
|
||||
### 실제 사례
|
||||
- User: happybell80
|
||||
@ -214,20 +215,20 @@ SELECT id, username FROM users WHERE username='happybell80';
|
||||
|
||||
## 8. 결론
|
||||
|
||||
**🔴 UUID vs username 혼용 문제 미완료 - Gateway 수정 필수**
|
||||
**✅ UUID vs username 혼용 문제 완전 해결 - 시스템 전체 UUID 통일**
|
||||
|
||||
### 적용된 해결책:
|
||||
### 완료된 해결책:
|
||||
1. auth-server: JWT `sub`에 UUID 사용 ✅
|
||||
2. Frontend: localStorage에 UUID 저장 ✅
|
||||
3. rb8001: UUID와 username 구분 처리 ✅
|
||||
4. Gateway: JWT에서 UUID 추출 ✅, DB 조회 실패 ❌ (username으로 조회 시도)
|
||||
4. Gateway: JWT에서 UUID 추출 ✅, DB UUID 조회 ✅
|
||||
|
||||
### 실패 원인:
|
||||
- JWT/Frontend/rb8001은 UUID로 변경했으나
|
||||
- **Gateway DB 조회 로직은 여전히 username 기반**
|
||||
- 시스템 전체가 UUID로 통일되지 않음
|
||||
### 해결 확인:
|
||||
- 시스템 전체가 UUID를 primary identifier로 사용
|
||||
- happybell80 → rb8001 (포트 8001) 정상 라우팅
|
||||
- 데이터 무결성 완전 복구
|
||||
|
||||
## 9. 해결 과정 (2025-08-27 15:45 ~ 16:45)
|
||||
## 9. 해결 과정 (2025-08-27 15:45 ~ 17:30)
|
||||
|
||||
### 완료된 작업
|
||||
|
||||
@ -252,19 +253,33 @@ SELECT id, username FROM users WHERE username='happybell80';
|
||||
- Gateway 인증: UUID 사용 확인 ✅
|
||||
- Frontend: UUID 전송 확인 ✅
|
||||
|
||||
### 핵심 미해결 문제 (16:50)
|
||||
- **Gateway `get_robeing_info(username: str)` 함수 설계 오류**
|
||||
- 현재: JWT sub(UUID) → `username` 파라미터로 전달
|
||||
- DB 쿼리: `WHERE u.username = :username`
|
||||
- UUID를 username으로 조회 → 실패 → default robeing(10508) 사용
|
||||
- **근본 원인**: Gateway가 UUID 시대로 업데이트 안 됨
|
||||
### ✅ Gateway UUID 조회 해결 완료 (17:30)
|
||||
- **Gateway `get_robeing_info(user_id: str)` 함수 수정 완료**
|
||||
- 변경: JWT sub(UUID) → `user_id` 파라미터로 전달
|
||||
- DB 쿼리: `WHERE u.id::text = :user_id` (UUID 조회)
|
||||
- happybell80: rb8001 (포트 8001) 정상 라우팅 확인
|
||||
- **해결**: Gateway가 UUID 체계로 완전 전환
|
||||
|
||||
### 해결 방안 (정확한 방향)
|
||||
1. **필수**: database.py `get_robeing_info()` UUID 조회로 수정
|
||||
- 파라미터명: `username` → `user_id`
|
||||
- 쿼리: `WHERE u.id::text = :user_id`
|
||||
2. **주의**: username으로 회귀하면 안 됨 (UUID가 primary identifier)
|
||||
### ✅ 적용된 해결책 (17:30 완료)
|
||||
1. **완료**: database.py `get_robeing_info()` UUID 조회로 수정
|
||||
- 파라미터명: `username` → `user_id` ✅
|
||||
- 쿼리: `WHERE u.id::text = :user_id` ✅
|
||||
2. **확인**: UUID가 primary identifier로 작동 중 ✅
|
||||
|
||||
---
|
||||
|
||||
*작성 완료: 2025-08-27 15:45*
|
||||
### Phase 5: Gateway UUID 조회 수정 (17:00)
|
||||
- database.py `get_robeing_info()` 파라미터: `username` → `user_id`
|
||||
- DB 쿼리: `WHERE u.username = :username` → `WHERE u.id::text = :user_id`
|
||||
- Docker 컨테이너 재빌드: `docker compose down && docker compose up -d --build`
|
||||
- ✅ 51123 배포 완료
|
||||
|
||||
### Phase 6: 최종 검증 (17:30)
|
||||
- happybell80 라우팅: 10508 → 8001 변경 확인
|
||||
- Gateway 로그: "Proxying stats request to: http://192.168.219.52:8001/stats"
|
||||
- UUID 체계 전체 시스템 적용 확인
|
||||
- ✅ 모든 문제 해결 완료
|
||||
|
||||
---
|
||||
|
||||
*작성 완료: 2025-08-27 17:30*
|
||||
Loading…
x
Reference in New Issue
Block a user