# 동남아 뉴스 수집 복구 및 메시지 로그 개선 계획

**날짜**: 2026-02-02  
**작성자**: Claude  
**관련 파일**: `rb8001/app/services/skills/startup_news_skill.py`, `skill_news/app/services/sea_news_collector.py`

---

## 1. 문제 상황
- **수집 실패**: Google News HTML 구조 변경으로 인해 동남아 뉴스 수집량이 0건으로 떨어짐.
- **추적 불가**: 뉴스 브리핑 송출 시 Slack 메시지의 타임스탬프(ts)를 로그에 남기지 않아, 잘못된 메시지 삭제 등 사후 처리가 어려움.

## 2. 해결 단계 (Phase)

### Phase 1: 송출 로그 개선 (로그에 ts 포함)
- **목표**: 뉴스 브리핑 전송 성공 시 Slack이 반환하는 `ts`를 반드시 로그에 기록.
- **작업**: `startup_news_skill.py`의 `slack_client.chat_postMessage` 호출 결과에서 `ts`를 추출하여 `logger.info`로 출력.
- **기대효과**: 문제 발생 시 로그만 보고도 해당 메시지를 식별하여 삭제 가능.

### Phase 2: 수집기 셀렉터 복구
- **목표**: 변경된 Google News 구조에 맞춰 뉴스 제목과 링크를 다시 수집.
- **작업**: `sea_news_collector.py`의 셀렉터를 `article`에서 `a[class*="JtKRv"]` 기반으로 업데이트.
- **기대효과**: 24시간 이내의 정확한 동남아 스타트업 뉴스 수집 재개.

### Phase 2.5: 동남아 뉴스 형식 검증
- **목표**: 수집된 뉴스가 Slack 표시 형식에 맞는지 확인.
- **형식**: `01. <url|제목>`, `02. <url|제목>`, `03. <url|제목>` (한국어 번역된 제목, 링크 포함).
- **검증**: `sea_news_service.py`의 `format_sea_news_for_slack` 결과에 URL·제목이 정상 포함되는지 확인.

### Phase 3: 수집 안정성 강화 (RSS 폴백)
- **목표**: Google News 스크래핑 실패 시에도 최소한의 뉴스를 보장.
- **작업**: `ASEAN UP` 등 RSS 피드를 보조 수집원으로 추가. 0건일 경우 RSS에서 가져와 LLM 필터링 후 제공.
- **기대효과**: 스크래핑 엔진이 깨져도 브리핑 섹션이 비어 나가는 현상 방지.

## 3. 삭제 및 재전송 절차
- **대상 메시지**: ts=`1769991030.415619`, 채널=`C09C98KK2TT` (Slack URL: `.../C09C98KK2TT/p1769991030415619`).
- **삭제**: `chat.delete` API 호출 (`channel=C09C98KK2TT`, `ts=1769991030.415619`). **토큰**: `COMPANYX_SLACK_BOT_TOKEN` 사용 (startup_news_skill과 동일, 참조: `troubleshooting/250915_happybell80_Slack_메시징_운영_런북.md`).
- **재전송**: `run_headlines_job("C09C98KK2TT")` 수동 호출 또는 스케줄러 엔드포인트 `POST /api/schedule/run/daily_headlines` 실행.
- **순서**: Phase 1~2 완료 후 → 삭제 → 재전송.

## 4. 남은 작업
- [ ] `startup_news_skill.py` 수정 (로그 추가)
- [ ] `sea_news_collector.py` 수정 (셀렉터 업데이트)
- [ ] 동남아 뉴스 형식 검증 (`format_sea_news_for_slack`)
- [ ] 기존 메시지 삭제 후 재전송
