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건)
**실제 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 | 354 | SELECT token_data FROM gmail_tokens WHERE user_id = $1 |
| auth-server/app/providers/gmail_passport.py | 370 | DELETE FROM gmail_tokens WHERE user_id = $1 |
| auth-server/app/providers/gmail_passport.py | 193 | INSERT INTO gmail_token (단수) |
| auth-server/app/providers/gmail_passport.py | 264, 313, 354, 370 | gmail_token (단수) 사용 |
| 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 | 163-177 | UPDATE 쿼리 |
| skill-email/services/db_credentials_provider.py | 231-235 | COUNT 쿼리 |

View File

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