docs: workspace_id = team_id 관계 명확히 수정
- team_id가 그대로 workspace_id로 사용됨을 명시 - 해결 방안에 구체적인 코드 추가 - workspace_members 추가 SQL 예시 포함
This commit is contained in:
parent
48b4b04086
commit
655252444d
@ -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'
|
||||
);
|
||||
```
|
||||
Loading…
x
Reference in New Issue
Block a user