- slack_workspaces vs workspaces 테이블 차이점 명시 - 각 테이블의 컬럼 구조 및 용도 설명 - 두 테이블 간 연결 관계 없음 강조 - 실제 데이터 예시 포함
2.5 KiB
2.5 KiB
Slack 로그인 시 Robeing 워크스페이스 미할당 문제
작성일: 2025-08-31
작성자: 51123 서버 관리자
상태: 🔴 미해결
영향: Slack OAuth 로그인 사용자 모두 기본값(rb8001) 사용
1. 문제 상황
Slack OAuth로 로그인한 사용자가 Robeing 워크스페이스에 자동 할당되지 않음
테스트 케이스
- spaceboum (Google 로그인): workspace_members 없음 → 기본값 rb8001
- 홍태주 (Slack 로그인): workspace_members 없음 → 기본값 rb8001
2. 현재 로직 분석
auth-server의 Slack 로그인 처리 (app/providers/slack.py)
-
Slack 정보 수집: ✅
- team_id (Slack 워크스페이스 ID)
- slack_user_id (Slack 사용자 ID)
- email, name, picture
-
SlackWorkspace 조회: ✅
- team_id로 SlackWorkspace 테이블 조회
- slack_user_mapping에서 기존 매핑 확인
-
User 생성/조회: ✅
- 매핑 있으면: 기존 User 사용
- 매핑 없으면: 새 User 생성
-
workspace_members 추가: ❌ 없음
- Robeing 워크스페이스 할당 로직 부재
- SlackWorkspace ≠ Robeing Workspace (별개 개념)
3. 데이터베이스 구조 문제
두 종류의 워크스페이스 테이블 (독립적)
slack_workspaces (Slack 팀 정보)
- 용도: Slack 앱 설치 정보 저장
- 주요 컬럼: team_id (Slack ID), team_name, bot_token, company_id
- 현재 데이터: GoodGang Labs (T035VFRKCN6), test (T097FCTDVEX)
workspaces (Robeing 서비스)
- 용도: Robeing 서비스 할당
- 주요 컬럼: name, subdomain, robeing_id, robeing_port, robeing_url
- 현재 데이터: ivada-robeing (rb10508_micro, port 10508)
문제점: 두 테이블 간 연결 관계 없음 (Foreign Key 없음)
처리 흐름
| 테이블 | 용도 | 상태 |
|---|---|---|
| users | 사용자 정보 | ✅ 생성됨 |
| slack_user_mapping | Slack ID ↔ UUID | ✅ 생성됨 |
| slack_workspaces | Slack 팀 정보 | ✅ 조회됨 |
| workspaces | Robeing 워크스페이스 | ❌ 연결 안 됨 |
| workspace_members | Robeing 멤버십 | ❌ 추가 안 됨 |
4. 영향
- 모든 Slack 로그인 사용자가 workspace_members 없음
- Gateway가 기본값(rb8001 또는 rb10508) 사용
- 사용자별 Robeing 할당 불가능
5. 해결 방안
- 즉시 조치: 수동으로 workspace_members 추가
- 장기 개선: Slack 로그인 시 자동 워크스페이스 할당 로직 구현