# Slack 멀티 워크스페이스 토큰 관리 문제 ## 작성일: 2025-09-03 ## 작성자: 51123 서버 관리자 ## 상태: 🔴 해결 필요 ## 영향: Company-X 워크스페이스 응답 실패 --- ## 1. 문제 상황 - **현상**: Company-X에서 메시지 수신은 정상, 응답 전송 실패 - **원인**: rb8001이 단일 SLACK_BOT_TOKEN 환경변수만 사용 - **에러**: `channel_not_found` - 잘못된 토큰으로 채널 접근 ## 2. 토큰 현황 (2025-09-03 DB 확인) - **디지털비잉_로빙**: xoxb-9073915808149-... (환경변수 SLACK_BOT_TOKEN) - **Company-X**: xoxb-9253435471507-... (slack_workspaces.bot_token) - **GoodGang Labs**: xoxb-3199535658754-... (slack_workspaces.bot_token) - **문제**: 환경변수 토큰만 사용, DB 토큰 미조회 ## 3. 상세 분석 ### 3.1 이벤트 수신 (✅ 정상) - U09BQSN72UT(김종태) 봇 멘션: `<@U09DWLARFQQ> 하이` - app_mention 이벤트 정상 수신 ### 3.2 처리 과정 (✅ 정상) - UUID 변환 성공 - 응답 생성 성공: "김종태님, 안녕하세요! 로빙입니다." - ChromaDB/PostgreSQL 저장 성공 ### 3.3 응답 전송 (❌ 실패) ``` ERROR: Failed to send final response: The request to the Slack API failed. The server responded with: {'ok': False, 'error': 'channel_not_found'} ``` ## 4. 해결 방안 ### 4.1 단기 해결 - team_id 기반 토큰 동적 선택 로직 구현 - slack_workspaces 테이블에서 bot_token 조회 ### 4.2 장기 해결 - auth-server의 중앙 라우터 활용 - `/slack/events/router`가 team_id별 컨테이너 라우팅 - 각 컨테이너는 해당 워크스페이스 토큰만 보유 ## 5. 구현 필요 코드 (로컬 개발자) ```python # rb8001에서 team_id로 토큰 조회 async def get_bot_token(team_id: str): # slack_workspaces 테이블에서 토큰 조회 result = await db.fetch_one( "SELECT bot_token FROM slack_workspaces WHERE team_id = :team_id", {"team_id": team_id} ) return result["bot_token"] if result else None ```