Slack 사용자 매핑 트러블슈팅 문서 작성 및 완료된 계획 이동
This commit is contained in:
parent
05ad602b86
commit
cd0f9f5648
113
troubleshooting/250812_slack_user_mapping_구현.md
Normal file
113
troubleshooting/250812_slack_user_mapping_구현.md
Normal file
@ -0,0 +1,113 @@
|
||||
# Slack 사용자 매핑 시스템 구현 트러블슈팅
|
||||
|
||||
## 일시
|
||||
2025년 8월 12일
|
||||
|
||||
## 문제 상황
|
||||
- Slack 메시지가 모든 사용자 것이 하나의 ChromaDB 컬렉션에 섞임
|
||||
- 사용자별 개인화된 AI 응답 불가능
|
||||
|
||||
## 해결 과정
|
||||
|
||||
### Phase 1: 임시 하드코딩 (완료)
|
||||
1. **빠른 검증을 위한 하드코딩**
|
||||
- rb10508_micro에 3명 사용자 매핑 하드코딩
|
||||
- U0925SXQFDK → happybell80
|
||||
- U092BSXQGGC → jongtae
|
||||
- U092QLZV5TW → goeun
|
||||
|
||||
2. **검증 결과**
|
||||
- ChromaDB 컬렉션 분리 성공
|
||||
- 사용자별 메모리 격리 확인
|
||||
|
||||
### Phase 2: DB 기반 영구 솔루션 (완료)
|
||||
|
||||
#### 1. DB 테이블 설계 및 생성
|
||||
```sql
|
||||
CREATE TABLE slack_user_mapping (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
slack_user_id VARCHAR(100) NOT NULL,
|
||||
slack_workspace_id UUID REFERENCES slack_workspaces(id),
|
||||
user_id UUID REFERENCES users(id) NOT NULL,
|
||||
workspace_member_id UUID REFERENCES workspace_members(id),
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
UNIQUE(slack_user_id, slack_workspace_id)
|
||||
);
|
||||
```
|
||||
|
||||
#### 2. Auth 서버 API 개발
|
||||
- 엔드포인트: `/api/slack/mapping/{slack_user_id}`
|
||||
- 순수 함수형 구현
|
||||
- 기본값 반환 메커니즘
|
||||
|
||||
#### 3. rb10508_micro 통합
|
||||
- Auth API 호출 구현
|
||||
- 5분 캐싱 추가
|
||||
- 환경변수: `AUTH_SERVER_URL=http://192.168.219.45:9000`
|
||||
|
||||
### 발생한 문제들
|
||||
|
||||
#### 1. PostgreSQL 권한 문제
|
||||
**문제**: `permission denied for table slack_user_mapping`
|
||||
**원인**:
|
||||
- Auth 서버는 `robeings` 사용자 사용
|
||||
- 권한을 잘못된 `auth` 사용자에게 부여
|
||||
|
||||
**해결**:
|
||||
```sql
|
||||
GRANT ALL PRIVILEGES ON TABLE slack_user_mapping TO robeings;
|
||||
GRANT SELECT ON users, workspace_members TO robeings;
|
||||
ALTER TABLE slack_user_mapping OWNER TO robeings;
|
||||
```
|
||||
|
||||
#### 2. 환경변수 설정 오류
|
||||
**문제**: rb10508_micro가 잘못된 Auth 서버 주소 사용
|
||||
**원인**: `AUTH_SERVER_URL=http://localhost:8001` (구버전)
|
||||
**해결**: `AUTH_SERVER_URL=http://192.168.219.45:9000`
|
||||
|
||||
#### 3. 서버 역할 혼동
|
||||
**문제**: 51124 서버에 코드 수정 지시
|
||||
**원인**: 서버 역할 이해 부족
|
||||
**해결**: CLAUDE.md에 명확한 역할 구분 추가
|
||||
|
||||
### 협업 구조
|
||||
```
|
||||
51123 서버 (시스템 관리자)
|
||||
├── Auth 서버 관리
|
||||
├── DB 테이블 생성
|
||||
└── 인프라 설정
|
||||
|
||||
로컬 개발자
|
||||
├── rb10508_micro 코드 수정
|
||||
├── Slack API 통합 구현
|
||||
└── git push로 배포
|
||||
|
||||
51124 서버 (서비스 운영)
|
||||
├── Docker 컨테이너 실행
|
||||
├── 환경변수 설정
|
||||
└── 배포 확인
|
||||
```
|
||||
|
||||
## 최종 결과
|
||||
|
||||
### 달성 사항
|
||||
- ✅ DB 기반 사용자 매핑 완료
|
||||
- ✅ 사용자별 ChromaDB 컬렉션 분리
|
||||
- ✅ 5분 캐싱으로 성능 최적화
|
||||
- ✅ 함수형 프로그래밍 원칙 준수
|
||||
|
||||
### 남은 이슈
|
||||
- "김종태야님" 호칭 문제 (별도 해결 필요)
|
||||
- 추가 사용자 매핑 등록 필요
|
||||
|
||||
## 교훈
|
||||
1. DB 사용자 권한은 .env 파일 확인 필수
|
||||
2. 서버별 역할 명확히 구분
|
||||
3. Phase 방식으로 빠른 검증 후 본격 구현
|
||||
4. PostgreSQL 테이블 소유자 통일 중요
|
||||
|
||||
## 관련 파일
|
||||
- `/home/admin/auth-server/app/api/slack_router.py`
|
||||
- `/home/admin/DOCS/plans/250812_slack_user_mapping_계획.md`
|
||||
- rb10508_micro 저장소 (로컬 개발자 관리)
|
||||
Loading…
x
Reference in New Issue
Block a user