docs: 뉴스 시스템 통합 계획 업데이트 - companyx-search 엔드포인트 추가

This commit is contained in:
happybell80 2025-09-07 00:40:46 +09:00
parent 742cc48642
commit 0aa1393058

View File

@ -31,11 +31,11 @@
### 2.1 뉴스 수집 및 채널 전송
```
APScheduler → skill-news:8505/api/news/search
APScheduler → skill-news:8505/api/news/google/companyx-search
→ rb8001/app/skills/news_posting_skill.py
→ Slack 채널 전송
```
**참고**: 고급 검색 기능 company-x_hompage에 구현됨
**구현**: companyx_news_collector.py (OR 연산자, 제외 키워드 적용)
### 2.2 사용자 인터랙션 (목표)
```
@ -54,10 +54,18 @@ rb8001 → POST skill-publish:8511/publish
## 3. 필요 구현 사항
### 3.0 컴퍼니엑스 전용 검색 (skill-news)
**파일**: app/services/companyx_news_collector.py (신규)
**엔드포인트**: /api/news/google/companyx-search (news_endpoints.py:63)
**검색식**: `"컴퍼니엑스" OR "Company X" -광고 -채용 -구인`
**환경변수**: COMPANY_X_NEWS_KEYWORDS (기본값 내장)
### 3.1 Slack Block Kit 메시지 (rb8001)
**위치**: app/skills/news_posting_skill.py (신규)
**함수**: send_news_for_posting(), create_news_blocks()
**참고**: naver_startup_news_service.py
**위치**: app/skills/news_posting_skill.py (신규 생성)
**함수**:
- `send_news_for_posting()`: 채널에 뉴스 전송
- `create_news_blocks()`: Block Kit 메시지 생성
- `process_news_batch()`: APScheduler에서 호출
```python
blocks = [
{
@ -72,20 +80,18 @@ blocks = [
}
]
```
**확인됨**: Block Kit 구조 (250828_slack_message_formatting_guide.md 참조)
**참고**: naver_startup_news_service.py, dm_skill.py:384 (DM 전송 로직)
### 3.2 Interactive Endpoint (rb8001)
**위치**: main.py 또는 slack_endpoint.py
**위치**: main.py:248 (slack_events 아래 추가)
```python
@app.post("/slack/interactive")
async def handle_interaction(request: Request):
# payload 파싱
# action_id 확인 (publish_news_*)
# skill-publish 호출
# 결과 응답
@app.post("/api/slack/interactive")
async def slack_interactive(request: Request):
return await handle_interactive(request) # slack_handler.py
```
**구현 필요**: 엔드포인트 없음 (새로 구현 필요)
**확인 필요**: Slack App 설정의 Interactive URL
**핸들러**: slack_handler.py에 handle_interactive() 추가
**구현 방식**: 기존 handle() 패턴 따라 payload 파싱, action_id 확인
**URL 설정**: Slack App에 https://ro-being.com/api/slack/interactive 등록
### 3.3 skill-publish 연동 (rb8001)
**위치**: news_posting_skill.py 내부 함수
@ -97,6 +103,7 @@ async def publish_to_squarespace(news_data):
json=news_data
)
```
**호출 위치**: slack_handler.handle_interactive() → publish_to_squarespace()
**결정**: localhost 사용 (rb8001이 모든 스킬을 localhost로 호출 중)
### 3.4 데이터 저장 전략
@ -109,9 +116,10 @@ async def publish_to_squarespace(news_data):
### rb8001 (.env)
```bash
COMPANY_X_NEWS_CHANNEL_ID=C09CP4MDX71
COMPANY_X_NEWS_KEYWORDS=컴퍼니엑스,COMPANY X,Company-X
COMPANY_X_NEWS_KEYWORDS=컴퍼니엑스,컴퍼니 엑스,Company X
COMPANY_X_NEWS_SCHEDULE=0 10 * * 1-5 # cron
SKILL_PUBLISH_URL=http://localhost:8511
SKILL_NEWS_URL=http://localhost:8505
```
### skill-publish (.env)