docs: DB 테이블명 현황 정확히 수정

- gmail_token은 단수형이 맞음 (DB와 일치)
- auth-server가 gmail_tokens/gmail_token 혼용 중
- Email 문제는 데이터 부재가 원인 (테이블명 아님)

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
happybell80 2025-09-13 11:53:49 +09:00
parent 5963fc0d62
commit ac5c1a6b94
2 changed files with 13 additions and 15 deletions

View File

@ -90,13 +90,13 @@
### 2.6 gmail_token 테이블 (실제 DB: gmail_token, 0건) ### 2.6 gmail_token 테이블 (실제 DB: gmail_token, 0건)
**실제 DB 컬럼**: user_id(FK), token_data(jsonb), oauth_config(jsonb), created_at, updated_at **실제 DB 컬럼**: user_id(FK), token_data(jsonb), oauth_config(jsonb), created_at, updated_at
**코드 모델**: gmail_tokens 참조 (복수형 차이), 추가 컬럼 사 **코드 혼용**: auth-server는 gmail_tokens(복수)와 gmail_token(단수) 혼
| 파일 경로 | 라인 번호 | 작업 내용 | | 파일 경로 | 라인 번호 | 작업 내용 |
|-----------|-----------|-----------| |-----------|-----------|-----------|
| auth-server/app/providers/gmail_passport.py | 193-198 | INSERT INTO gmail_tokens ... DO UPDATE SET | | auth-server/app/providers/gmail_passport.py | 193 | INSERT INTO gmail_token (단수) |
| auth-server/app/providers/gmail_passport.py | 354 | SELECT token_data FROM gmail_tokens WHERE user_id = $1 | | auth-server/app/providers/gmail_passport.py | 264, 313, 354, 370 | gmail_token (단수) 사용 |
| auth-server/app/providers/gmail_passport.py | 370 | DELETE FROM gmail_tokens WHERE user_id = $1 | | auth-server/app/api/gmail_refresh.py | 36, 43, 115, 124, 173, 179 | gmail_tokens (복수) 사용 |
| skill-email/services/db_credentials_provider.py | 60-70 | SELECT 쿼리 (is_equipped 필터) | | skill-email/services/db_credentials_provider.py | 60-70 | SELECT 쿼리 (is_equipped 필터) |
| skill-email/services/db_credentials_provider.py | 163-177 | UPDATE 쿼리 | | skill-email/services/db_credentials_provider.py | 163-177 | UPDATE 쿼리 |
| skill-email/services/db_credentials_provider.py | 231-235 | COUNT 쿼리 | | skill-email/services/db_credentials_provider.py | 231-235 | COUNT 쿼리 |

View File

@ -28,13 +28,13 @@
if creds_result is None: if creds_result is None:
return Err(EmailError(f"No credentials found for user: {user_id}")) return Err(EmailError(f"No credentials found for user: {user_id}"))
# skill-email/services/db_credentials_provider.py:63 # skill-email/services/db_credentials_provider.py:67
SELECT token_data->>'refresh_token' as refresh_token SELECT token_data->>'refresh_token' as refresh_token
FROM gmail_token # 테이블명 문제: 실제 DB는 gmail_tokens (복수형) FROM gmail_token # 테이블명 맞음: 실제 DB도 gmail_token (단수형)
WHERE slack_user_id = %s AND is_equipped = true WHERE slack_user_id = %s AND is_equipped = true
``` ```
1. **테이블명 불일치**: 코드는 `gmail_token`, DB는 `gmail_tokens` 1. **테이블명 일치 확인**: 코드와 DB 모두 `gmail_token` (250911 문서 확인)
2. **토큰 데이터 구조**: token_data JSONB 내부에 저장 (250909 문서 확인) 2. **토큰 데이터 구조**: token_data JSONB 내부에 저장 (250909 문서 확인)
3. **is_equipped 조건**: 토큰이 있어도 장착되지 않으면 조회 실패 3. **is_equipped 조건**: 토큰이 있어도 장착되지 않으면 조회 실패
@ -61,10 +61,8 @@ if auth_header != f"Bearer {expected_token}":
### 즉시 조치 (로컬 개발자) ### 즉시 조치 (로컬 개발자)
```python ```python
# 1. skill-email 테이블명 수정 # 1. 테이블명은 이미 맞음 (gmail_token 단수형)
# services/db_credentials_provider.py:67 # 실제 문제: 데이터가 없거나 is_equipped=false
- FROM gmail_token
+ FROM gmail_tokens # 복수형으로 수정
# 2. Cron 인증 강화 # 2. Cron 인증 강화
# rb8001/main.py:560 # rb8001/main.py:560
@ -88,7 +86,7 @@ WHERE slack_user_id IN ('0914eagle', 'happybell80', 'cdctfm');
## 5. 교훈 ## 5. 교훈
1. **테이블명 일관성**: 단수/복수형 통일 필요 (250911 문서 참조) 1. **DB 현황**: gmail_token 테이블 0건, 데이터 없음
2. **보안 우선**: 인증 실패시 반드시 요청 차단 2. **auth-server**: gmail_tokens와 gmail_token 혼용 (gmail_refresh.py는 복수, gmail_passport.py는 단수)
3. **환경변수 사용**: 하드코딩 대신 .env 파일 활용 3. **skill-email**: gmail_token 단수형 사용 (정상)
4. **토큰 관리**: JSONB 구조로 일원화 완료, 테이블명만 수정 필요 4. **실제 원인**: 데이터 부재가 문제 (테이블명 아님)