docs: workspace_id = team_id 관계 명확히 수정

- team_id가 그대로 workspace_id로 사용됨을 명시
- 해결 방안에 구체적인 코드 추가
- workspace_members 추가 SQL 예시 포함
This commit is contained in:
happybell80 2025-08-31 20:48:17 +09:00
parent 48b4b04086
commit 655252444d

View File

@ -40,21 +40,23 @@ Slack OAuth로 로그인한 사용자가 Robeing 워크스페이스에 자동
---
## 3. 데이터베이스 구조 문제
## 3. 데이터베이스 구조 분석
### 두 종류의 워크스페이스 테이블 (독립적)
### 핵심 개념: team_id = workspace_id
#### slack_workspaces (Slack 팀 정보)
- **Slack team_id**: Slack 워크스페이스의 고유 ID (T로 시작)
- **workspace_members.workspace_id**: team_id를 저장하는 필드
- **즉, team_id가 그대로 workspace_id로 사용됨**
#### slack_workspaces 테이블
- **용도**: Slack 앱 설치 정보 저장
- **주요 컬럼**: team_id (Slack ID), team_name, bot_token, company_id
- **주요 컬럼**: team_id (Slack ID), team_name, bot_token
- **현재 데이터**: GoodGang Labs (T035VFRKCN6), test (T097FCTDVEX)
#### workspaces (Robeing 서비스)
- **용도**: Robeing 서비스 할당
- **주요 컬럼**: name, subdomain, robeing_id, robeing_port, robeing_url
- **현재 데이터**: ivada-robeing (rb10508_micro, port 10508)
**문제점**: 두 테이블 간 연결 관계 없음 (Foreign Key 없음)
#### workspace_members 테이블
- **용도**: 사용자와 Slack 워크스페이스 연결
- **주요 컬럼**: user_id, workspace_id (=team_id), robeing_id
- **문제**: Slack 로그인 시 자동 추가 안 됨
### 처리 흐름
| 테이블 | 용도 | 상태 |
@ -62,8 +64,7 @@ Slack OAuth로 로그인한 사용자가 Robeing 워크스페이스에 자동
| users | 사용자 정보 | ✅ 생성됨 |
| slack_user_mapping | Slack ID ↔ UUID | ✅ 생성됨 |
| slack_workspaces | Slack 팀 정보 | ✅ 조회됨 |
| workspaces | **Robeing 워크스페이스** | ❌ 연결 안 됨 |
| workspace_members | **Robeing 멤버십** | ❌ 추가 안 됨 |
| workspace_members | **사용자-워크스페이스 멤버십** | ❌ 추가 안 됨 |
---
@ -77,5 +78,31 @@ Slack OAuth로 로그인한 사용자가 Robeing 워크스페이스에 자동
## 5. 해결 방안
1. **즉시 조치**: 수동으로 workspace_members 추가
2. **장기 개선**: Slack 로그인 시 자동 워크스페이스 할당 로직 구현
### 수정 필요 코드 (`/home/admin/auth-server/app/providers/slack.py`)
304번 줄 이후 추가:
```python
# workspace_members 추가 (team_id = workspace_id)
if team_id and user:
db.execute(text("""
INSERT INTO workspace_members (user_id, workspace_id, robeing_id)
VALUES (:user_id, :workspace_id, :robeing_id)
ON CONFLICT (user_id, workspace_id) DO UPDATE
SET robeing_id = :robeing_id
"""), {
"user_id": user.id,
"workspace_id": team_id, # team_id가 그대로 workspace_id
"robeing_id": "rb8001" # 또는 조건에 따라 rb10508
})
```
### 수동 해결 SQL
```sql
-- happybell80 사용자 workspace_members 추가
INSERT INTO workspace_members (user_id, workspace_id, robeing_id)
VALUES (
'1e16e9d5-59f3-54da-a661-8abeabff4230', -- happybell80 user_id
'T035VFRKCN6', -- GoodGang Labs team_id
'rb8001'
);
```