# ID 체계 표준화 및 사용자 설정 시스템 ## 작성일: 2025-08-26 22:00 ## 작성자: 51124 서버 담당 ## 상태: ✅ 모든 DB 작업 완료 / ✅ 코드 수정 완료 ## 영향: ID 일관성, 사용자 맞춤화 ## 최종 업데이트: 2025-08-27 00:10 --- ## 1. Slack ID 컬럼명 불일치 ✅ (완료) ### ~~현재 상태~~ 해결됨 | 테이블 | 이전 컬럼명 | 현재 컬럼명 | 타입 | |--------|------------|------------|------| | slack_user_mapping | slack_user_id | slack_user_id | VARCHAR(100) | | gmail_tokens | ~~slack_id~~ ❌ | **slack_user_id** ✅ | VARCHAR(100) | | conversation_logs | slack_user_id | 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; -- ✅ -- 인덱스도 생성됨 CREATE INDEX idx_gmail_tokens_slack_user_id ON gmail_tokens(slack_user_id); -- ✅ ``` #### ✅ 코드 수정 완료 (Git pull 확인) | 파일 경로 | 변경 내용 | 상태 | |-----------|----------|------| | auth-server/models.py | slack_id 사용 안함 | ✅ 해당없음 | | robeing-monitor/app/api/items.py | slack_user_id 사용 중 | ✅ 이미 적용 | | skill-email/services/db_credentials_provider.py | slack_user_id 사용 중 | ✅ 이미 적용 | | rb8001/app/skills/dm_skill.py | 내부 변수는 slack_id 사용, DB는 slack_user_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 VARCHAR(128)[], -- ✅ 배열 타입 적용됨 email_filter VARCHAR(128)[], -- ✅ 배열 타입 적용됨 briefing_enabled BOOLEAN DEFAULT true, briefing_time TIME DEFAULT '09:00', updated_at TIMESTAMP DEFAULT NOW() ); ``` ### ✅ rb8001 코드 수정 완료 (커밋: aed931e, 7103599) - dm_skill.py의 get_news_content() 메서드에서 사용자별 키워드 조회 구현 - _get_user_news_keywords() 메서드 추가 - user_preferences 테이블에서 조회, 없으면 기본값 사용 - send_daily_summary_dm()에서 사용자별 뉴스 제공 ### ⏳ 슬랙 명령어 설계 (추후 구현 예정) #### 일반 메시지 명령어 - **설정**: "@로빙 뉴스 키워드 설정: 삼성, 반도체, 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 구현 - **⚠️ 구조 불일치 문제 발견**: [상세 문서](/home/happybell/projects/ivada/DOCS/troubleshooting/250827_frontend_backend_user_preferences_mismatch.md) 참조 --- ## 3. 작업 완료 요약 ### ✅ 완료된 작업 1. **Slack ID 컬럼명 통일** (2025-08-27 DB 확인) - gmail_tokens.slack_id → slack_user_id 변경 완료 - 인덱스 idx_gmail_tokens_slack_user_id 생성됨 2. **user_preferences 테이블 생성** (2025-08-27 DB 확인) - 테이블 존재 확인됨 - news_keywords, email_filter 배열 타입 적용됨 3. **뉴스 키워드 하드코딩 제거** (2025-08-26 21:00) - rb8001/app/skills/dm_skill.py 수정 완료 - 사용자별 맞춤 키워드 설정 가능 - Git 커밋: aed931e (기능), 7103599 (프롬프트) - Gitea Actions 자동 배포 완료 ### ⏳ 보류/예정 작업 1. **슬랙 명령어 구현** - 사용자가 직접 키워드 설정 가능하도록 2. **프론트엔드 UI** - ActivityPanel에서 키워드 관리 --- *작성: 2025-08-26 22:00* *최종 업데이트: 2025-08-27 00:15* *코드 확인: Git pull로 모든 서비스 확인 완료*