# 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 TEXT[], -- 뉴스 키워드 email_filter TEXT[], -- 이메일 필터 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*