# Slack 로그인 시 Robeing 워크스페이스 미할당 문제 **작성일**: 2025-08-31 **작성자**: 51123 서버 관리자 **상태**: ✅ 해결 (2025-09-11) **영향**: Slack OAuth 로그인 사용자 모두 기본값(rb8001) 사용 --- ## 1. 문제 상황 Slack OAuth로 로그인한 사용자가 Robeing 워크스페이스에 자동 할당되지 않음 ### 테스트 케이스 - spaceboum (Google 로그인): workspace_member 없음 → 기본값 rb8001 - 홍태주 (Slack 로그인): workspace_member 없음 → 기본값 rb8001 --- ## 2. 현재 로직 분석 ### auth-server의 Slack 로그인 처리 (`app/providers/slack.py`) 1. **Slack 정보 수집**: ✅ - team_id (Slack 워크스페이스 ID) - slack_user_id (Slack 사용자 ID) - email, name, picture 2. **SlackWorkspace 조회**: ✅ - team_id로 SlackWorkspace 테이블 조회 - slack_user_mapping에서 기존 매핑 확인 3. **User 생성/조회**: ✅ - 매핑 있으면: 기존 User 사용 - 매핑 없으면: 새 User 생성 4. **workspace_member 추가**: ❌ **없음** - Robeing 워크스페이스 할당 로직 부재 - SlackWorkspace ≠ Robeing Workspace (별개 개념) --- ## 3. 데이터베이스 구조 분석 ### 핵심 개념: team_id = workspace_id - **Slack team_id**: Slack 워크스페이스의 고유 ID (T로 시작) - **workspace_member.workspace_id**: team_id를 저장하는 필드 - **즉, team_id가 그대로 workspace_id로 사용됨** #### slack_workspaces 테이블 - **용도**: Slack 앱 설치 정보 저장 - **주요 컬럼**: team_id (Slack ID), team_name, bot_token - **현재 데이터**: GoodGang Labs (T035VFRKCN6), test (T097FCTDVEX) #### workspace_member 테이블 - **용도**: 사용자와 Slack 워크스페이스 연결 - **주요 컬럼**: user_id, workspace_id (=team_id), robeing_id - **문제**: Slack 로그인 시 자동 추가 안 됨 ### 처리 흐름 | 테이블 | 용도 | 상태 | |--------|------|------| | users | 사용자 정보 | ✅ 생성됨 | | slack_user_mapping | Slack ID ↔ UUID | ✅ 생성됨 | | slack_workspaces | Slack 팀 정보 | ✅ 조회됨 | | workspace_member | **사용자-워크스페이스 멤버십** | ❌ 추가 안 됨 | --- ## 4. 영향 - 모든 Slack 로그인 사용자가 workspace_member 없음 - Gateway가 기본값(rb8001 또는 rb10508) 사용 - 사용자별 Robeing 할당 불가능 --- ## 5. 해결 방안 ### 수정 필요 코드 (`/home/admin/auth-server/app/providers/slack.py`) — 9/11 반영 완료 304번 줄 이후 추가: ```python # workspace_member 추가 (team_id = workspace_id) if team_id and user: db.execute(text(""" INSERT INTO workspace_member (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_member 추가 INSERT INTO workspace_member (user_id, workspace_id, robeing_id) VALUES ( '1e16e9d5-59f3-54da-a661-8abeabff4230', -- happybell80 user_id 'T035VFRKCN6', -- GoodGang Labs team_id 'rb8001' ); ```