해결 내용: - auth-server/app/providers/slack.py 수정 완료 - user.team_id로 workspace_id 조회하도록 변경 - ORM 사용으로 타입 안전성 확보 - 에러 처리 개선 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1.9 KiB
1.9 KiB
Slack 봇 설치 workspace_id 컬럼 오류
날짜: 2025-10-15
작성자: 51123 서버 관리자
상태: ✅ 해결 완료 (2025-10-16)
관련 파일: auth-server/app/providers/slack.py:414-419
문제 상황
Slack 연동 버튼 클릭 시 Internal Server Error:
column "workspace_id" does not exist
LINE 2: SELECT workspace_id
FROM workspace_member
에러 로그: auth-server 로그에서 sqlalchemy.exc.ProgrammingError 확인
원인 분석
DB 구조
- workspace_member 테이블: workspace_id 컬럼 없음 (id, user_id, role, is_active만 존재)
- slack.py에서 존재하지 않는 컬럼 조회 시도
실제 관계
- user.team_id → team.id
- Workspace = Team (workspace.py:113)
- user.team_id가 workspace_id 역할
해결 방안
수정 파일: auth-server/app/providers/slack.py
수정 내용 (slack.py:414-419):
# user_id로 workspace_id 조회
user = db.query(User).filter(User.id == user_id).first()
if not user or not user.team_id:
raise HTTPException(404, "User not found or has no team")
workspace_id = user.team_id
적용 결과:
- ✅ ORM 사용으로 타입 안전성 확보
- ✅ user.team_id로 workspace_id 정상 조회
- ✅ 에러 처리 개선 (user 없음 / team_id 없음 구분)
교훈
DB 스키마 검증 누락
- workspace_member.workspace_id 존재 가정, 실제 컬럼 없음
- tables.md 또는 psql \d 명령으로 테이블 구조 미확인
- 교훈: 쿼리 작성 전 tables.md 참조 또는 DB 직접 확인 필수
Raw SQL 사용 위험
- text() 쿼리 사용 시 컴파일 타임 타입 체크 불가
- 런타임에만 에러 발견
- 교훈: ORM (db.query(Model)) 사용으로 타입 안전성 확보
스키마 변경 추적 부족
- DB 스키마 변경 후 참조 코드 미검증
- 교훈: 스키마 변경 시 Grep으로 전체 참조 검색 후 일괄 수정