DOCS/troubleshooting/250826_slack_id_column_standardization.md
happybell80 29d10943c4 user_preferences 테이블 스키마 수정
- news_keywords: TEXT[] → VARCHAR(128)[]
- email_filter: TEXT[] → VARCHAR(128)[]
- 배열 요소 크기 제한으로 성능 최적화
2025-08-26 23:55:54 +09:00

88 lines
2.6 KiB
Markdown

# ID 체계 표준화 및 사용자 설정 시스템
## 작성일: 2025-08-26 22:00
## 작성자: 51124 서버 담당
## 상태: 작업 필요
## 영향: ID 일관성, 사용자 맞춤화
---
## 1. Slack ID 컬럼명 불일치
### 현재 상태
| 테이블 | 컬럼명 | 타입 |
|--------|--------|------|
| slack_user_mapping | slack_user_id | VARCHAR(100) |
| gmail_tokens | **slack_id** ❌ | VARCHAR(100) |
| conversation_logs | slack_user_id | VARCHAR(100) |
### 해결 방안
#### DB 스키마 변경
```sql
-- gmail_tokens 컬럼명 변경
ALTER TABLE gmail_tokens ADD COLUMN slack_user_id VARCHAR(100);
UPDATE gmail_tokens SET slack_user_id = slack_id;
ALTER TABLE gmail_tokens DROP COLUMN slack_id;
```
#### 코드 수정 필요
| 파일 경로 | 변경 내용 |
|-----------|----------|
| auth-server/models.py | slack_id → slack_user_id |
| robeing-monitor/database.py | slack_id → slack_user_id |
| skill-email/db_client.py | slack_id → slack_user_id |
| rb8001/app/brain/state_client.py | gmail_tokens 조회 시 컬럼명 |
---
## 2. 뉴스 키워드 하드코딩 문제
### 현재 상태
- rb8001이 `["AI", "기술", "IT"]`만 사용 (dm_skill.py:309)
- 매일 같은 뉴스 반복
### 해결 방안: user_preferences 테이블
```sql
CREATE TABLE user_preferences (
id SERIAL PRIMARY KEY,
user_id UUID REFERENCES users(id),
slack_user_id VARCHAR(100),
news_keywords VARCHAR(128)[], -- 뉴스 키워드
email_filter VARCHAR(128)[], -- 이메일 필터
briefing_enabled BOOLEAN DEFAULT true,
briefing_time TIME DEFAULT '09:00',
updated_at TIMESTAMP DEFAULT NOW()
);
```
### rb8001 코드 수정
- dm_skill.py의 get_news_content() 메서드에서 사용자별 키워드 조회
- 하드코딩된 ["AI", "기술", "IT"] 대신 user_preferences 테이블에서 조회
- 없으면 기본값 사용
### 슬랙 명령어 설계
#### 일반 메시지 명령어
- **설정**: "@로빙 뉴스 키워드 설정: 삼성, 반도체, AI"
- **확인**: "@로빙 내 뉴스 키워드"
- **초기화**: "@로빙 뉴스 키워드 초기화"
#### 슬래시 명령어 (대안)
- **/news-keywords set** 삼성, 반도체, AI
- **/news-keywords list**
- **/news-keywords reset**
#### 구현 방법
1. rb8001이 메시지에서 "뉴스 키워드 설정:" 패턴 감지
2. user_preferences 테이블에 키워드 저장 (INSERT ON CONFLICT UPDATE)
3. 다음 브리핑부터 해당 키워드로 뉴스 검색
### 프론트엔드 연동
- ActivityPanel 설정 UI에서도 동일하게 user_preferences 수정
- Gateway API 엔드포인트로 CRUD 구현
---
*작성: 2025-08-26 22:00*