diff --git a/300_architecture/310_전체_시스템_구조_컨테이너와_마이크로서비스.md b/300_architecture/310_전체_시스템_구조_컨테이너와_마이크로서비스.md
index 93cb802..abcd2d5 100644
--- a/300_architecture/310_전체_시스템_구조_컨테이너와_마이크로서비스.md
+++ b/300_architecture/310_전체_시스템_구조_컨테이너와_마이크로서비스.md
@@ -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
## 리소스 효율성 관리
diff --git a/300_architecture/320_Slack_기반_인터페이스_설계.md b/300_architecture/320_Slack_기반_인터페이스_설계.md
index 2017a63..84e3493 100644
--- a/300_architecture/320_Slack_기반_인터페이스_설계.md
+++ b/300_architecture/320_Slack_기반_인터페이스_설계.md
@@ -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": "사용자 메시지",
diff --git a/300_architecture/database/250820_postgresql_ssh_tunnel_guide.md b/300_architecture/database/250820_postgresql_ssh_tunnel_guide.md
index 3869697..99d16bf 100644
--- a/300_architecture/database/250820_postgresql_ssh_tunnel_guide.md
+++ b/300_architecture/database/250820_postgresql_ssh_tunnel_guide.md
@@ -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()
diff --git a/300_architecture/sequences/email_sequences.md b/300_architecture/sequences/email_sequences.md
index b9ca8ae..f25343c 100644
--- a/300_architecture/sequences/email_sequences.md
+++ b/300_architecture/sequences/email_sequences.md
@@ -260,11 +260,12 @@ sequenceDiagram
RB->>RB: 의도 분류
Note over RB: INTENT: EMAIL_SEND
수신자: 종태님
내용: 회의 일정
- RB->>RB: Slack ID → UUID5 변환
- Note over RB: UUID5 생성:
namespace: 6ba7b810-9dad-11d1-80b4-00c04fd430c8
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
WHERE id = uuid5(...)
+ Note over DB: SELECT * FROM users
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에서 조회
```
---
diff --git a/troubleshooting/250822_happybell80_Gmail통합_UUID변환_문제해결.md b/troubleshooting/250822_happybell80_Gmail통합_UUID변환_문제해결.md
index 25177b1..9de8212 100644
--- a/troubleshooting/250822_happybell80_Gmail통합_UUID변환_문제해결.md
+++ b/troubleshooting/250822_happybell80_Gmail통합_UUID변환_문제해결.md
@@ -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 반환
```
---