diff --git a/troubleshooting/250924_happybell80_UUID_체계_전환_및_대화저장_오류.md b/troubleshooting/250924_happybell80_UUID_체계_전환_및_대화저장_오류.md index 7489b6c..3e6bd81 100644 --- a/troubleshooting/250924_happybell80_UUID_체계_전환_및_대화저장_오류.md +++ b/troubleshooting/250924_happybell80_UUID_체계_전환_및_대화저장_오류.md @@ -72,32 +72,45 @@ --- -## 2025-09-24 추가 수정: Slack UUID 변환 실패 시 에러 처리 +## 2025-09-24 Gateway UUID 변환 실패 시 403 차단 -### 문제 상황 -- Gateway에서 Slack ID를 UUID로 변환 실패 시 경고만 출력하고 요청 계속 진행 -- rb8001에서 X-User-Id 헤더 없을 때 Slack ID를 UUID로 저장 시도하여 타입 오류 발생 +### 구현 방안: 라우터 분리 -### 해결 방안 +#### 파일 구조 +``` +robeing-gateway/app/ +├── routers/slack.py # Slack 엔드포인트 +├── services/slack_proxy.py # UUID 변환 및 포워딩 +└── exceptions.py # UserNotRegisteredError +``` -#### 1. /home/admin/robeing-gateway/app/main.py 수정 +#### 핵심 로직 +- **url_verification**: 항상 200 반환 (UUID 체크 제외) +- **이벤트/인터랙티브**: UUID 변환 실패 시 403 반환 +- **X-User-Id 헤더**: UUID 변환 성공 시에만 추가 -**라인 526-532** - `/slack/events` 엔드포인트: -- 현재: 경고만 출력 -- 수정: UUID 없으면 403 에러 반환 +### 영향 범위 +- **변경 없음**: nginx, Slack 앱 설정, rb8001 +- **필수 작업**: user 테이블에 oauth_id 사전 등록 -**라인 583-585** - `/slack/interactive` 엔드포인트: -- 동일하게 UUID 변환 실패 시 403 에러 반환 +--- -#### 2. /home/admin/robeing-gateway/app/database.py 수정 (선택사항) +## 2025-09-24 UUID 중심 원칙 확립 -**라인 376-381** - `slack_user_to_uuid` 함수: -- 현재: None 반환 -- 선택적 수정: ValueError 예외 발생 +### 원칙 +- 모든 내부 로직은 UUID만 사용 +- Gateway가 UUID 변환 책임 +- UUID 없으면 403 차단 -### 기대 효과 -- Slack 사용자가 시스템에 등록되지 않은 경우 명확한 에러 메시지 반환 -- 잘못된 UUID로 인한 데이터 오염 방지 +### 영향받는 서비스 +- **rb8001:8001**: X-User-Id 헤더 필수 +- **Slack 인터랙티브**: UUID 없으면 버튼 액션 실패 +- **예외**: url_verification은 200 반환 필수 + +### 필수 작업 +1. Gateway에서 UUID 변환 실패 시 403 반환 +2. user 테이블에 Slack 사용자 사전 등록 +3. ChromaDB 검색 시 UUID만 사용 - 디버깅 시간 단축 (명확한 에러로 원인 파악 용이) ### 관련 문제