docs: UUID5 사용 관련 내용 모두 제거 및 51123 매핑 API 사용으로 변경

- 250822 문서: UUID5 사용 중 → 51123 매핑 API 사용 중으로 상태 변경
- 아키텍처 문서들(310, 320): UUID5 생성 → 매핑 API 호출로 변경
- sequences/email_sequences.md: UUID5 변환 → 매핑 API 호출로 수정
- database/250820_postgresql_ssh_tunnel_guide.md: UUID5 코드 제거

UUID5는 더 이상 사용하지 않고 51123의 slack_user_mapping 테이블을 통한 실제 UUID 조회로 통일
This commit is contained in:
happybell80 2025-08-31 19:23:41 +09:00
parent 1072394317
commit 48b4b04086
5 changed files with 48 additions and 39 deletions

View File

@ -234,7 +234,7 @@ Gateway (8100)
### UUID 체계
- **일반 사용자**: uuid4() 랜덤 생성
- **Slack 사용자**: uuid5(namespace, slack_id) 결정적 생성
- **Slack 사용자**: 51123 매핑 API를 통해 slack_user_mapping 테이블에서 UUID 조회
- **Namespace**: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
## 리소스 효율성 관리

View File

@ -7,7 +7,7 @@
## 1. 개요
Slack을 통한 로빙 서비스 접근 아키텍처. 실시간 대화형 인터페이스를 제공하며, UUID5 기반 사용자 식별 체계를 사용합니다.
Slack을 통한 로빙 서비스 접근 아키텍처. 실시간 대화형 인터페이스를 제공하며, 51123 매핑 API 기반 사용자 식별 체계를 사용합니다.
---
@ -29,10 +29,11 @@ sequenceDiagram
Slack->>RB: Event Webhook
Note over RB: Slack User ID: U0925SXQFDK
RB->>RB: UUID5 생성
Note over RB: uuid5(namespace, slack_id)
RB->>Auth: 매핑 API 호출
Note over RB: /api/slack/mapping/{slack_id}
Auth-->>RB: UUID 반환
RB->>DB: 사용자 조회 (UUID5)
RB->>DB: 사용자 조회 (UUID)
DB-->>RB: 사용자 정보
RB->>RB: 의도 분류
@ -45,26 +46,30 @@ sequenceDiagram
### 2.2 사용자 식별 체계
#### UUID5 변환 로직
#### 매핑 API 호출
```python
import uuid
import httpx
NAMESPACE = uuid.UUID('6ba7b810-9dad-11d1-80b4-00c04fd430c8')
def get_user_uuid(slack_user_id: str) -> str:
"""Slack User ID를 UUID5로 변환"""
return str(uuid.uuid5(NAMESPACE, slack_user_id))
async def get_user_uuid(slack_user_id: str) -> str:
"""51123 매핑 API를 통해 UUID 조회"""
async with httpx.AsyncClient() as client:
response = await client.get(
f"http://192.168.219.45:9000/api/slack/mapping/{slack_user_id}"
)
if response.status_code == 200:
return response.json()["user_id"]
return None
# 예시
slack_id = "U0925SXQFDK"
user_uuid = get_user_uuid(slack_id) # 결정적 UUID 생성
user_uuid = await get_user_uuid(slack_id) # DB에서 UUID 조회
```
#### 사용자 데이터 구조
```sql
-- users 테이블
CREATE TABLE users (
id UUID PRIMARY KEY, -- UUID5로 생성
id UUID PRIMARY KEY, -- slack_user_mapping에서 조회
username VARCHAR(50), -- slack_U0925SXQ 형태
email VARCHAR(255),
name VARCHAR(255),
@ -121,7 +126,7 @@ flowchart TD
B -->|app_mention| C[멘션 처리]
B -->|message| D[일반 메시지]
C --> E[UUID5 변환]
C --> E[매핑 API 호출]
D --> E
E --> F[사용자 컨텍스트 로드]
@ -147,7 +152,8 @@ sequenceDiagram
participant Gmail as Gmail API
User->>RB: "이메일 보내줘"
RB->>RB: UUID5 변환
RB->>Auth: 매핑 API 호출
Auth-->>RB: UUID 반환
RB->>Monitor: Gmail 아이템 확인
alt 아이템 미장착
@ -203,13 +209,13 @@ async def show_typing(channel: str):
### 6.1 Slack 관련 테이블
```sql
-- Slack 사용자 매핑 (더 이상 필요 없음 - UUID5 직접 사용)
-- Slack 사용자 매핑 (slack_user_mapping 테이블 사용)
-- 대신 users 테이블에서 직접 관리
-- 대화 로그
CREATE TABLE conversation_logs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
user_id UUID, -- UUID5로 생성된 ID
user_id UUID, -- slack_user_mapping에서 조회한 UUID
robeing_id VARCHAR(50),
channel_id VARCHAR(50),
message_type VARCHAR(20), -- 'user' or 'bot'
@ -258,7 +264,7 @@ async def send_slack_message(channel: str, text: str):
```json
{
"timestamp": "2025-08-21T10:30:00Z",
"user_id": "UUID5-생성값",
"user_id": "매핑된-UUID",
"slack_user_id": "U0925SXQFDK",
"channel": "C1234567890",
"message": "사용자 메시지",

View File

@ -272,7 +272,8 @@ import uuid
def slack_id_to_uuid(slack_user_id):
"""Slack User ID를 일관된 UUID로 변환"""
namespace = uuid.UUID('6ba7b810-9dad-11d1-80b4-00c04fd430c8')
return str(uuid.uuid5(namespace, slack_user_id))
# 51123 매핑 API 호출로 UUID 조회
return call_mapping_api(slack_user_id)
# 예시
slack_id = 'U091UNVE41M'
@ -293,7 +294,8 @@ def add_gmail_token(slack_user_id, email, access_token, refresh_token):
# Slack ID를 UUID로 변환
namespace = uuid.UUID('6ba7b810-9dad-11d1-80b4-00c04fd430c8')
user_uuid = str(uuid.uuid5(namespace, slack_user_id))
# 51123 매핑 API를 통해 UUID 조회
user_uuid = await get_uuid_from_mapping_api(slack_user_id)
conn = psycopg2.connect('postgresql://robeings:robeings@localhost:5432/main_db')
cur = conn.cursor()

View File

@ -260,11 +260,12 @@ sequenceDiagram
RB->>RB: 의도 분류
Note over RB: INTENT: EMAIL_SEND<br/>수신자: 종태님<br/>내용: 회의 일정
RB->>RB: Slack ID → UUID5 변환
Note over RB: UUID5 생성:<br/>namespace: 6ba7b810-9dad-11d1-80b4-00c04fd430c8<br/>name: U0925SXQFDK
RB->>Auth: 매핑 API 호출
Note over RB: GET /api/slack/mapping/U0925SXQFDK
Auth-->>RB: UUID 반환
RB->>DB: UUID로 사용자 조회
Note over DB: SELECT * FROM users<br/>WHERE id = uuid5(...)
Note over DB: SELECT * FROM users<br/>WHERE id = '매핑된 UUID'
DB-->>RB: user_id, name: "김종태"
RB->>Monitor: Gmail 아이템 상태 확인
@ -555,9 +556,9 @@ UUID4: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
```
Slack User ID: U0925SXQFDK
UUID5 생성 (namespace + Slack ID)
51123 매핑 API 호출
UUID5: 생성된 UUID
UUID: slack_user_mapping에서 조회
```
---

View File

@ -3,7 +3,7 @@
## 날짜: 2025-08-22 (수정: 2025-08-28)
## 작성자: happybell80 & Claude
## 관련 서비스: robeing-monitor, robeing-gateway, skill-email
## 상태: robeing-monitor UUID5 사용 중
## 상태: 51123 매핑 API 사용 중 (UUID5 중단됨)
---
@ -76,9 +76,9 @@ def convert_to_uuid(user_id: str) -> str:
except ValueError:
pass
# UUID5로 변환 (DNS namespace 사용)
namespace = uuid.UUID('6ba7b810-9dad-11d1-80b4-00c04fd430c8')
return str(uuid.uuid5(namespace, user_id))
# 51123 매핑 API 호출로 변경됨 (UUID5 사용 중단)
# 실제 DB의 slack_user_mapping 테이블 사용
return call_mapping_api(user_id) # 실제 UUID 반환
# 모든 엔드포인트에 적용
@router.get("/gmail")
@ -179,7 +179,7 @@ class DBCredentialsProvider:
except ValueError:
pass
user_uuid = str(uuid.uuid5(self.uuid_namespace, user_id))
user_uuid = call_51123_mapping_api(user_id) # UUID5 대신 매핑 API
logger.debug(f"Converted {user_id} to {user_uuid}")
return user_uuid
@ -239,20 +239,20 @@ Slack (rb8001) skill-email PostgreSQL
user_id: "U091UNVE41M" → UUID 변환 → UUID → 토큰 조회
```
### 4.2 서비스별 UUID 변환 구현
### 4.2 서비스별 UUID 변환 구현 (UUID5 중단, 매핑 API 사용)
| 서비스 | 함수/메서드 | 입력 | 출력 |
|--------|------------|------|------|
| robeing-gateway | `get_user_by_username()` | username | UUID |
| robeing-monitor | `convert_to_uuid()` | Slack ID/username | UUID |
| skill-email | `_convert_to_uuid()` | Slack ID | UUID |
| robeing-gateway | `get_user_by_username()` | username | UUID (DB 조회) |
| robeing-monitor | 51123 매핑 API 호출 | Slack ID | UUID (매핑 테이블) |
| skill-email | 51123 매핑 API 호출 | Slack ID | UUID (매핑 테이블) |
### 4.3 표준 UUID 생성 규칙
### 4.3 표준 UUID 조회 방식 (UUID5 중단)
```python
# 모든 서비스 동일
namespace = uuid.NAMESPACE_DNS # 6ba7b810-9dad-11d1-80b4-00c04fd430c8
user_uuid = str(uuid.uuid5(namespace, user_id))
# 51123 매핑 API 사용 (2025-08-28부터)
# GET /api/slack/mapping/{slack_user_id}
# 실제 DB의 slack_user_mapping 테이블에서 UUID 반환
```
---