docs: Company-X Slack 토큰 문제 최종 해결 완료

- 봇 재설치로 새 토큰 발급 (xoxb-9417291383105-...)
- Gateway 재시작 후 정상 작동 확인
- 멀티 워크스페이스 토큰 관리 문제 해결
This commit is contained in:
happybell80 2025-09-03 21:34:24 +09:00
parent f76eabf290
commit 6eadba0f89

View File

@ -2,9 +2,9 @@
## 작성일: 2025-09-03
## 작성자: 51123 서버 관리자
## 상태: 🟢 해결 방안 확정 (98% 구현 가능)
## 영향: Company-X, GoodGang Labs 워크스페이스 응답 실패
## 필요 작업: Gateway 1개 함수, rb8001 2줄 수정
## 상태: ✅ 해결 완료
## 영향: Company-X, GoodGang Labs 워크스페이스 정상 작동
## 최종 URL: https://ro-being.com/gateway/slack/events
---
@ -37,18 +37,18 @@ ERROR: Failed to send final response: The request to the Slack API failed.
The server responded with: {'ok': False, 'error': 'channel_not_found'}
```
## 4. 해결 방안 (2025-09-03 확정)
## 4. 해결 과정
### 4.1 기존 코드 활용
- **Gateway**: items_proxy, chat_proxy 패턴 재사용
- **rb8001**: 최소 수정 (라인 21, 98만)
- **skill-slack**: 제거 (8/12 이후 미사용)
### 4.1 문제 진단
- Gateway `/api/slack/events` 엔드포인트 미구현 발견
- nginx `/api/` 경로가 8000(frontend)으로 잘못 프록시됨
- `/gateway/` 경로가 8100(Gateway)으로 올바르게 설정됨
### 4.2 구현 단계
1. **nginx**: ✅ 완료 (`/api/` → 8100 설정 확인됨)
2. **Gateway**: slack_proxy 함수 추가 (get_verified_user 스킵)
3. **rb8001**: 2줄 수정 (라인 21, 98)
4. **Slack App**: Event URL 변경
### 4.2 구현 완료
1. **Gateway**: `/slack/events` 엔드포인트 추가
2. **DB import**: AsyncSessionLocal, text 추가
3. **Slack App**: Event URL을 `/gateway/slack/events`로 설정
4. **검증**: URL verification challenge 응답 성공
## 5. 구현 필요 코드 (로컬 개발자)
@ -77,6 +77,88 @@ async def slack_proxy(request: Request):
### 5.3 nginx 설정
**확인 완료** - nginx-infra/server-nginx-default
- HTTP(80): 라인 55-101
- HTTPS(443): 라인 191-237
- `/api/*``http://localhost:8100/` 프록시 설정됨
- `/gateway/*``http://localhost:8100/` (Gateway)
- `/rb8001/*``http://192.168.219.52:8001/` (rb8001 직접)
- `/api/*``http://localhost:8000/` (frontend-base)
## 6. 최종 분석 (2025-09-03 20:10)
### 6.1 작동 상태
1. Gateway → rb8001 이벤트 전달 성공 (200 OK) **(100%)**
2. Slack User ID → UUID 변환 정상 작동 **(100%)**
3. 메모리/DB 저장 모두 성공 **(100%)**
4. LLM 응답 생성 완료 **(100%)**
5. Slack 전송 실패: channel_not_found **(100%)**
### 6.2 문제 원인
6. 원인: Company-X 토큰 대신 기본 토큰 사용 **(100%)**
7. Gateway가 X-Slack-Bot-Token 헤더 전달 중 **(100%)**
8. rb8001이 헤더 토큰 무시하고 환경변수만 사용 **(100%)**
9. rb8001 코드 수정 필요 (라인 21, 98) **(100%)**
10. 로컬 개발자가 rb8001 수정해야 함 **(100%)**
### 6.3 테스트 데이터
- **발화자**: U09C98KBGHX (Company-X 대표)
- **Team ID**: T097FCTDVEX (COMPANY X)
- **UUID**: 1a275625-1762-42ef-8398-ce743c478692
- **Bot Token**: xoxb-9253435471507-... (DB 등록됨)
- **메시지**: "로빙 하이"
- **응답**: "안녕하세요! 무엇을 도와드릴까요?" (생성됨, 전송 실패)
## 7. 부분 해결 (2025-09-03 21:00)
### 7.1 Team ID 수정
- **발견**: Slack이 보내는 실제 team_id는 T09C98KB933
- **수정**: DB의 team_id를 T09C98KB933으로 유지
- **결과**: Gateway가 토큰 찾기 성공, rb8001 응답 200
### 7.2 남은 문제 - 토큰 불일치
- **DB 토큰**: xoxb-9253435471507-... (57자)
- **Gateway 로그**: xoxb-92534... (다른 토큰?)
- **봇 ID 문제**:
- DB의 봇: U09DWLARFQQ
- 토큰의 봇: U097FFP4QQ3 (다른 봇)
- **증상**: channel_not_found 에러 지속
### 7.3 작동 상태
- ✅ Robeing 워크스페이스: 정상 작동
- ✅ Gateway 토큰 전달: 정상
- ✅ rb8001 토큰 수신: 정상
- ❌ Company-X 메시지 전송: 실패 (잘못된 토큰)
### 7.4 필요 조치
- Company-X의 올바른 봇 토큰 확인 필요
- 현재 DB의 토큰이 실제 Company-X 봇 토큰과 다를 가능성
## 8. 최종 해결 완료 (2025-09-03 21:14)
### 8.1 근본 원인
- **잘못된 토큰**: DB에 저장된 토큰이 유효하지 않음
- **이전 토큰**: xoxb-9253435471507-... (2025-09-02에 저장, 권한 없음)
- **봇 재설치 필요**: 새로운 토큰 발급 필요
### 8.2 해결 과정
1. **봇 재설치 URL 생성**:
```
https://auth.ro-being.com/auth/slack/passport/install?user_id=237494f7-061c-484c-a4f7-f500611e32f1
```
- user_id: tjhong@company-x.partners의 UUID
- workspace_id: 99d22d6b-d327-4fa4-bd2f-d228c11056e2 자동 조회
2. **새 토큰 발급 완료**:
- 이전: xoxb-9253435471507-92535331608...
- 새로운: xoxb-9417291383105-94726908658...
- 발급 시간: 2025-09-03 12:11:45
3. **Gateway 재시작**: `docker compose down && up -d --build`
### 8.3 최종 결과
- ✅ 21:13:49 - Company-X(T09C98KB933) 이벤트 수신
- ✅ 새 토큰 사용: xoxb-94172... (로그에 10자만 표시)
- ✅ rb8001 응답: 200 OK
- ✅ 메시지 전송 성공
### 8.4 교훈
- 토큰 문제 시 봇 재설치가 가장 확실한 해결책
- auth-server의 `/passport/install` 엔드포인트 활용
- user_id 파라미터로 특정 워크스페이스 봇 재설치 가능