rb_news DB 생성 및 저장 확인
This commit is contained in:
parent
4ee90ad304
commit
885663eb6e
71
troubleshooting/250920_news_db_persistence_implementation.md
Normal file
71
troubleshooting/250920_news_db_persistence_implementation.md
Normal file
@ -0,0 +1,71 @@
|
||||
# News 시스템 DB 영속화 구현 완료
|
||||
|
||||
## 개요
|
||||
- **일시**: 2025-09-20
|
||||
- **작업자**: Claude Code
|
||||
- **목표**: News 시스템에 DB 영속화 기능 구현 (Phase 3)
|
||||
- **결과**: ✅ 성공
|
||||
|
||||
## 구현 내용
|
||||
|
||||
### 1. rb_news 테이블 생성
|
||||
```sql
|
||||
CREATE TABLE IF NOT EXISTS rb_news (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
title TEXT NOT NULL,
|
||||
url TEXT NOT NULL UNIQUE,
|
||||
summary TEXT,
|
||||
slack_message_ts VARCHAR(100),
|
||||
slack_channel_id VARCHAR(100),
|
||||
is_published BOOLEAN DEFAULT FALSE,
|
||||
published_at TIMESTAMP WITH TIME ZONE,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
```
|
||||
|
||||
### 2. NewsPostingSkill 수정
|
||||
- `save_news_to_db()` 메소드 추가: 뉴스를 DB에 저장
|
||||
- `update_news_published_status()` 메소드 추가: 게시 완료시 상태 업데이트
|
||||
- PostgreSQL 연결 설정 추가
|
||||
|
||||
### 3. 테스트 엔드포인트 추가
|
||||
- `/api/schedule/test-news`: 뉴스 수집 및 DB 저장 테스트용
|
||||
|
||||
## 문제 해결 과정
|
||||
|
||||
### 문제 1: skill-news API 파라미터 오류
|
||||
- **증상**: "queries" 필드 사용으로 400 에러
|
||||
- **원인**: API가 "keywords" 필드를 요구
|
||||
- **해결**: rb8001 코드는 이미 올바른 "keywords" 사용 중
|
||||
|
||||
### 문제 2: 뉴스가 0개 반환
|
||||
- **증상**: skill-news가 뉴스를 찾았지만 "새 기사 0개" 반환
|
||||
- **원인**: companyx_news_posting.json에 이미 수집된 기사로 저장됨
|
||||
- **해결**: 캐시 파일 초기화
|
||||
- `/app/data/sent_news.json` 초기화
|
||||
- `/app/data/companyx_news_posting.json` 백업 후 초기화
|
||||
|
||||
## 테스트 결과
|
||||
```
|
||||
ID: 0727dbfe-b04b-4dfc-83d1-7adc74351608
|
||||
Title: 악어에듀, 2025 에듀테크 코리아서 글로벌혁신 부문 수상...
|
||||
URL: https://www.ajunews.com/view/20250919134944158
|
||||
Published: False, Channel: C09C98KK2TT
|
||||
Created: 2025-09-20 11:54:42.541580+09:00
|
||||
```
|
||||
|
||||
## 작동 흐름
|
||||
1. rb8001이 skill-news API 호출하여 뉴스 수집
|
||||
2. Slack 채널에 인터랙티브 메시지 게시
|
||||
3. 동시에 rb_news 테이블에 저장 (is_published=False)
|
||||
4. 사용자가 "게시하기" 버튼 클릭시 is_published=True로 업데이트
|
||||
|
||||
## 주의사항
|
||||
- DM으로 보내는 뉴스는 DB에 저장하지 않음 (채널 게시만 저장)
|
||||
- skill-news의 캐시로 인해 중복 뉴스는 반환되지 않음
|
||||
- 환경변수 COMPANY_X_NEWS_KEYWORDS는 쉼표로 구분된 키워드 사용
|
||||
|
||||
## 교훈
|
||||
- API 문서 없이 작업시 실제 엔드포인트 테스트로 파라미터 확인 필요
|
||||
- 캐시 시스템이 있는 경우 테스트시 캐시 초기화 고려
|
||||
- Docker 컨테이너 간 통신시 네트워크 설정 확인 필요
|
||||
Loading…
x
Reference in New Issue
Block a user