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 스케줄 등록
|
||||
2. `rb8001/main.py:394` - _run_headlines_job() 실행
|
||||
3. `rb8001/app/commands/skill_commands.py:220` - fetch_naver_headlines() 호출
|
||||
4. `skill_news/app/api/news_endpoints.py:46` - POST /naver/startup-headlines
|
||||
5. `skill_news/app/services/naver_startup_news_service.py:360` - fetch_headlines()
|
||||
6. `skill_news/app/services/naver_startup_news_service.py:300` - format_startup_news_for_slack()
|
||||
7. `skill_news/app/data/slack_messages.md` - 템플릿 로드
|
||||
8. `rb8001/main.py:427` - WebClient.chat_postMessage() 전송
|
||||
2. `rb8001/main.py:213` - run_headlines_job 호출 (import 변경)
|
||||
3. `rb8001/app/skills/startup_news_skill.py:run_headlines_job()` - 메인 실행
|
||||
4. `rb8001/app/skills/startup_news_skill.py:fetch_headlines()` - 내부 메서드
|
||||
5. `rb8001/app/commands/skill_commands.py:220` - fetch_naver_headlines(json)
|
||||
6. `skill_news/app/api/news_endpoints.py:46` - POST /naver/startup-headlines
|
||||
7. `skill_news/app/services/naver_startup_news_service.py:360` - fetch_headlines()
|
||||
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. 문제점 (구조적)
|
||||
- **main.py 과부하**: 스케줄/실행/전송 모두 담당 (732줄)
|
||||
@ -39,12 +42,12 @@
|
||||
- **왕복 낭비**: rb8001→skill-news(포맷)→rb8001(전송)
|
||||
- **용어 추출 불가**: 완성된 텍스트라 중간 삽입 어려움
|
||||
|
||||
## 구현 방안
|
||||
## 구현 방안 (최종 선택)
|
||||
|
||||
### 방안 1: rb8001에서 처리 (선택)
|
||||
### startup_news_skill.py 신규 생성
|
||||
```python
|
||||
# main.py:_run_headlines_job() 수정
|
||||
async def _run_headlines_job(channel_id: str):
|
||||
# rb8001/app/skills/startup_news_skill.py
|
||||
async def run_headlines_job(channel_id: str):
|
||||
# 1. JSON 포맷으로 헤드라인 수집
|
||||
result = await sc.fetch_naver_headlines(fmt="json") # slack → json
|
||||
items = result.get("items", [])
|
||||
@ -101,8 +104,9 @@ async def _run_headlines_job(channel_id: str):
|
||||
lines[insert_idx:insert_idx] = terms_section
|
||||
text = "\n".join(lines)
|
||||
|
||||
# 5. Slack 전송
|
||||
client.chat_postMessage(channel=channel_id, text=text)
|
||||
# 5. 자체 Slack 전송 (WebClient 직접 생성)
|
||||
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줄)
|
||||
- gemini_handler.py: +5줄 (프롬프트 수정)
|
||||
- **main.py**: -50줄 삭제, +1줄 import (732 → 683줄)
|
||||
- **startup_news_skill.py**: +150줄 신규 생성
|
||||
- **gemini_handler.py**: 프롬프트 수정 불필요 (파라미터로 전달)
|
||||
- 기존 extract_keywords() 함수 활용 (미사용 코드 재활용)
|
||||
|
||||
## 교훈
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user