diff --git a/plans/250812_로컬개발자_Slack사용자매핑_구현계획.md b/plans/completed/250812_로컬개발자_Slack사용자매핑_구현계획.md similarity index 100% rename from plans/250812_로컬개발자_Slack사용자매핑_구현계획.md rename to plans/completed/250812_로컬개발자_Slack사용자매핑_구현계획.md diff --git a/troubleshooting/250812_slack_user_mapping_구현.md b/troubleshooting/250812_slack_user_mapping_구현.md new file mode 100644 index 0000000..07e8670 --- /dev/null +++ b/troubleshooting/250812_slack_user_mapping_구현.md @@ -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 저장소 (로컬 개발자 관리) \ No newline at end of file