67 lines
1.7 KiB
Markdown
67 lines
1.7 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) |
|
|
|
|
### 해결 방안
|
|
```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;
|
|
```
|
|
|
|
---
|
|
|
|
## 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 TEXT[], -- 뉴스 키워드
|
|
email_filter TEXT[], -- 이메일 필터
|
|
briefing_enabled BOOLEAN DEFAULT true,
|
|
briefing_time TIME DEFAULT '09:00',
|
|
updated_at TIMESTAMP DEFAULT NOW()
|
|
);
|
|
```
|
|
|
|
```python
|
|
# rb8001/dm_skill.py 수정
|
|
async def get_user_keywords(slack_user_id: str) -> List[str]:
|
|
db = SessionLocal()
|
|
result = db.execute(
|
|
text("SELECT news_keywords FROM user_preferences WHERE slack_user_id = :sid"),
|
|
{"sid": slack_user_id}
|
|
).fetchone()
|
|
return result[0] if result else ["AI", "기술", "IT"]
|
|
```
|
|
|
|
### 프론트엔드 연동
|
|
- ActivityPanel 설정 UI 활용 (250825 문서 참조)
|
|
- Gateway API로 user_preferences CRUD 구현
|
|
|
|
---
|
|
|
|
*작성: 2025-08-26 22:00* |