DOCS/journey/troubleshooting/250812_slack_user_mapping_구현.md
happybell80 0252dd1a7f fix: 51123 서버 IP 주소 업데이트 (성수 이전)
192.168.219.45 → 192.168.0.100 일괄 변경

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 11:52:26 +09:00

3.3 KiB

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 테이블 설계 및 생성

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_workspace(id),
    user_id UUID REFERENCES user(id) NOT NULL,
    workspace_member_id UUID REFERENCES workspace_member(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.0.100:9000

발생한 문제들

1. PostgreSQL 권한 문제

문제: permission denied for table slack_user_mapping 원인:

  • Auth 서버는 robeings 사용자 사용
  • 권한을 잘못된 auth 사용자에게 부여

해결:

GRANT ALL PRIVILEGES ON TABLE slack_user_mapping TO robeings;
GRANT SELECT ON users, workspace_member 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.0.100: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 저장소 (로컬 개발자 관리)