docs: startup_news_skill.py 구현 방안으로 문서 수정
This commit is contained in:
parent
0fef5fe052
commit
2d84b87e8c
@ -22,15 +22,18 @@
|
|||||||
|
|
||||||
## 현재 상태 분석
|
## 현재 상태 분석
|
||||||
|
|
||||||
### 1. 헤드라인 처리 흐름 (파일 경로)
|
### 1. 수정 후 처리 흐름 (startup_news_skill.py 추가)
|
||||||
1. `rb8001/main.py:206` - APScheduler 스케줄 등록
|
1. `rb8001/main.py:206` - APScheduler 스케줄 등록
|
||||||
2. `rb8001/main.py:394` - _run_headlines_job() 실행
|
2. `rb8001/main.py:213` - run_headlines_job 호출 (import 변경)
|
||||||
3. `rb8001/app/commands/skill_commands.py:220` - fetch_naver_headlines() 호출
|
3. `rb8001/app/skills/startup_news_skill.py:run_headlines_job()` - 메인 실행
|
||||||
4. `skill_news/app/api/news_endpoints.py:46` - POST /naver/startup-headlines
|
4. `rb8001/app/skills/startup_news_skill.py:fetch_headlines()` - 내부 메서드
|
||||||
5. `skill_news/app/services/naver_startup_news_service.py:360` - fetch_headlines()
|
5. `rb8001/app/commands/skill_commands.py:220` - fetch_naver_headlines(json)
|
||||||
6. `skill_news/app/services/naver_startup_news_service.py:300` - format_startup_news_for_slack()
|
6. `skill_news/app/api/news_endpoints.py:46` - POST /naver/startup-headlines
|
||||||
7. `skill_news/app/data/slack_messages.md` - 템플릿 로드
|
7. `skill_news/app/services/naver_startup_news_service.py:360` - fetch_headlines()
|
||||||
8. `rb8001/main.py:427` - WebClient.chat_postMessage() 전송
|
8. `rb8001/app/skills/startup_news_skill.py:extract_terms()` - 용어 추출
|
||||||
|
9. `rb8001/app/llm/gemini_handler.py:215` - extract_keywords() 호출
|
||||||
|
10. `rb8001/app/skills/startup_news_skill.py:build_message()` - 메시지 조립
|
||||||
|
11. `rb8001/app/skills/startup_news_skill.py:send_to_slack()` - 자체 Slack 전송
|
||||||
|
|
||||||
### 2. 문제점 (구조적)
|
### 2. 문제점 (구조적)
|
||||||
- **main.py 과부하**: 스케줄/실행/전송 모두 담당 (732줄)
|
- **main.py 과부하**: 스케줄/실행/전송 모두 담당 (732줄)
|
||||||
@ -39,12 +42,12 @@
|
|||||||
- **왕복 낭비**: rb8001→skill-news(포맷)→rb8001(전송)
|
- **왕복 낭비**: rb8001→skill-news(포맷)→rb8001(전송)
|
||||||
- **용어 추출 불가**: 완성된 텍스트라 중간 삽입 어려움
|
- **용어 추출 불가**: 완성된 텍스트라 중간 삽입 어려움
|
||||||
|
|
||||||
## 구현 방안
|
## 구현 방안 (최종 선택)
|
||||||
|
|
||||||
### 방안 1: rb8001에서 처리 (선택)
|
### startup_news_skill.py 신규 생성
|
||||||
```python
|
```python
|
||||||
# main.py:_run_headlines_job() 수정
|
# rb8001/app/skills/startup_news_skill.py
|
||||||
async def _run_headlines_job(channel_id: str):
|
async def run_headlines_job(channel_id: str):
|
||||||
# 1. JSON 포맷으로 헤드라인 수집
|
# 1. JSON 포맷으로 헤드라인 수집
|
||||||
result = await sc.fetch_naver_headlines(fmt="json") # slack → json
|
result = await sc.fetch_naver_headlines(fmt="json") # slack → json
|
||||||
items = result.get("items", [])
|
items = result.get("items", [])
|
||||||
@ -101,8 +104,9 @@ async def _run_headlines_job(channel_id: str):
|
|||||||
lines[insert_idx:insert_idx] = terms_section
|
lines[insert_idx:insert_idx] = terms_section
|
||||||
text = "\n".join(lines)
|
text = "\n".join(lines)
|
||||||
|
|
||||||
# 5. Slack 전송
|
# 5. 자체 Slack 전송 (WebClient 직접 생성)
|
||||||
client.chat_postMessage(channel=channel_id, text=text)
|
slack_client = WebClient(token=os.getenv("SLACK_BOT_TOKEN"))
|
||||||
|
slack_client.chat_postMessage(channel=channel_id, text=text)
|
||||||
```
|
```
|
||||||
|
|
||||||
### 환경변수 추가
|
### 환경변수 추가
|
||||||
@ -136,8 +140,9 @@ HEADLINES_TERMS_SAMPLE_SIZE=20 # 분석할 헤드라인 개수
|
|||||||
```
|
```
|
||||||
|
|
||||||
## 구현 영향
|
## 구현 영향
|
||||||
- main.py: +30줄 (732 → 762줄)
|
- **main.py**: -50줄 삭제, +1줄 import (732 → 683줄)
|
||||||
- gemini_handler.py: +5줄 (프롬프트 수정)
|
- **startup_news_skill.py**: +150줄 신규 생성
|
||||||
|
- **gemini_handler.py**: 프롬프트 수정 불필요 (파라미터로 전달)
|
||||||
- 기존 extract_keywords() 함수 활용 (미사용 코드 재활용)
|
- 기존 extract_keywords() 함수 활용 (미사용 코드 재활용)
|
||||||
|
|
||||||
## 교훈
|
## 교훈
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user