# 260305 아침브리핑 형식혼선·동남아영어노출 원인확정 리서치 ## 1) 목적 - 대상 문제 2개만 원인 확정: 1. 아침 브리핑/뉴스 표시 형식 혼선 2. 동남아 소식 영어 노출 - 목표: 원인 정확도 100% 기준으로, 수정 포인트를 단일 경로로 좁힌다. ## 2) 범위 / 비범위 - 범위: `rb8001`, `skill-news`, `robeing-gateway` - 비범위: 다른 프로젝트(StarsAndI, GooseFarm 등), 다른 기능 이슈 ## 3) 사실(Facts) ### 3-1. 실행 버전/경로 - `rb8001` 현재 커밋: `e9dcd1d` - `skill-news` 현재 커밋: `d8a7c5b` - 컨테이너: - `rb8001` 생성시각: `2026-03-04T15:02:26Z` - `robeing-skill-news` 생성시각: `2026-03-03T18:10:57Z` ### 3-2. 아침 뉴스 브리핑 실행 사실 (2026-03-05) - `09:10:00` daily_headlines 시작 - `09:10:07` naver items 22 - `09:10:25` sea headlines 3 - `09:10:31` formatted text length 3213, Slack 전송 성공 - 근거 로그: `rb8001` 컨테이너 로그 (`daily_headlines`, `naver items`, `sea headlines`, `formatted text length`) ### 3-3. 동남아 영어 노출 직전 사실 - `skill-news` 로그에 아래 2개 경고가 같은 실행 구간에서 확인됨: 1. `LLM 적합도 실패 ... 404 models/gemini-2.0-flash-exp is not found ...` 2. `제목 번역 실패, 원문 유지 ... 404 models/gemini-2.0-flash-exp is not found ...` - 근거 로그: `robeing-skill-news` 2026-03-05 09:10 실행 구간 ### 3-4. 관련 코드 사실 (정확 위치) - 번역 모델 기본값: - `skill-news/app/services/sea_news_filter.py:53` - `os.getenv("GEMINI_MODEL", "gemini-2.0-flash-exp")` - 번역 실패 시 원문 유지: - `skill-news/app/services/sea_news_filter.py:159` - `return list(articles)` - 동남아 제목 번역 호출 경로: - `skill-news/app/api/news_endpoints.py:66` (`translate_titles_to_korean`) - rb8001이 해당 endpoint를 호출: - `rb8001/app/commands/skill_commands.py:252-278` - `POST /api/news/sea/headlines` ### 3-5. 형식 관련 코드 사실 (정확 위치) - 네이버 뉴스 본문 형식 생성: - `skill-news/app/services/naver_startup_news_service.py:314-367` - 오프닝/클로징/명언 일자 로테이션: - `skill-news/app/services/naver_startup_news_service.py:95-123` - rb8001에서 동남아 섹션/키워드 섹션 추가 삽입: - `rb8001/app/services/workflows/headlines_workflow.py:40-83` - `rb8001/app/services/workflows/headlines_workflow.py:163-173` - 아침 브리핑(네이버웍스) 구조 변경 이력: - 커밋 `3afb9c9` (중요메일 섹션 제거, 1줄 인사이트 구조 전환) - 현재 코드: `rb8001/app/services/skills/naverworks_briefing.py:59-73, 261-319` ### 3-6. 게이트웨이 영향 사실 - daily_headlines는 rb8001 내부 스케줄러가 직접 Slack 전송: - `rb8001/app/services/workflows/headlines_workflow.py:180-189` - 본 경로는 gateway 프록시 경유가 아님. ## 4) 해석(Interpretation) ### 4-1. 동남아 영어 노출 원인 (확정) - `GEMINI_MODEL` 미지정 상태에서 기본값 `gemini-2.0-flash-exp` 사용 - 해당 모델 호출이 404로 실패 - 번역 실패 폴백이 "원문 유지"로 설계되어 영어가 그대로 노출 ### 4-2. 형식 혼선 원인 (확정) - 형식 생성 책임이 2개 서비스로 분산됨: 1. `skill-news`가 기본 포맷 생성 2. `rb8001`이 동남아/키워드 섹션을 후삽입 - 네이버웍스 아침 브리핑은 별도 경로에서 이미 구조가 변경된 상태(커밋 `3afb9c9`) - 사용자 입장에서는 "아침 브리핑" 범주 안에서 서로 다른 형식 경로가 동시에 존재 ## 5) 결론(Conclusion) ### 결론 A: 동남아 영어 노출 - 확정 원인: `skill-news` 번역 모델 설정 불일치 + 원문 유지 폴백 - 단일 수정 포인트: 1. `skill-news` 실행 환경 `GEMINI_MODEL` 2. `skill-news/app/services/sea_news_filter.py` 번역 실패 처리 정책 ### 결론 B: 형식 혼선 - 확정 원인: 아침 메시지 형식 책임 분산 + 브리핑 경로별 구조 차이 - 단일 수정 포인트: 1. 뉴스 형식 최종 조립 책임을 한 경로로 고정 (`skill-news` 또는 `rb8001` 중 1곳) 2. 네이버웍스/뉴스를 "아침 브리핑 패밀리" 공통 템플릿 기준으로 정렬 ## 6) 비영향 범위 (영향 0 기준 분리) - 본 문제와 무관: - `StarsAndI` 프로젝트 - `GooseFarm` 프로젝트 - gateway의 일반 API 프록시 경로 - 근거: 해당 문제 실행 경로가 `rb8001 scheduler -> skill-news -> slack`로 닫혀 있음.