DOCS/journey/research/260305_아침브리핑_형식혼선_동남아영어노출_원인확정_리서치.md

4.4 KiB

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로 닫혀 있음.