---
tags: [naverworks, briefing, insight, llm, troubleshooting]
---

# NAVER WORKS 브리핑 인사이트 서두 문구 누출

## 관련 문서
- [NAVER WORKS 브리핑 인사이트 서두 누출 종료 리서치](../research/260311_naverworks_briefing_insight_preamble_leak_closure_research.md)
- [NAVER WORKS 브리핑 인사이트 서두 누출 수정 계획](../plans/260311_naverworks_briefing_insight_preamble_leak_fix_plan.md)
- [NAVER WORKS 브리핑 인사이트 서두 누출 수정 및 수동 배포 검증](../worklog/260311_naverworks_briefing_insight_preamble_leak_fix_and_manual_deploy.md)

**상태**: 종결 (2026-03-19)
**종결 근거**: 코드 반영(`FORBIDDEN_PREAMBLES`, `_strip_known_preamble`, `_validate_insight`), 테스트 13건 통과, 24 서버 배포 검증 완료. 상세는 [수정 및 배포 검증 워크로그](../worklog/260311_naverworks_briefing_insight_preamble_leak_fix_and_manual_deploy.md) 참조.

## 문제
- 2026-03-11 NAVER WORKS 일일 브리핑에서 인사이트 1줄 앞에 아래 같은 서두가 함께 출력됐습니다.
- `로빙입니다. 사용자님께서는 오늘 알아야 할 메일 핵심 내용을 1줄로 요약해 드리겠습니다.`

## 발생 시점
- 2026-03-11 09:00 KST NAVER WORKS 일일 브리핑 실행에서 확인됐습니다.
- 같은 실행 로그에서 아래 순서가 확인됐습니다.
  - `09:00:00` `Running job: NAVER WORKS Daily Briefing`
  - `09:00:02` `Generated insight: 로빙입니다...`
  - `09:00:04` `Briefing sent successfully: 14 emails`

## 기대 동작
- 인사이트는 바로 핵심 내용으로 시작해야 합니다.
- 예: `회신 필요 4건(오후 3시까지 1건 포함), 결제/청구 1건, 안내/공지 9건`

## 재현 조건
- `rb8001`의 NAVER WORKS 일일 브리핑 스케줄 또는 동일한 수동 실행 경로에서 재현 가능합니다.
- 메일 조회와 Slack 전송은 정상이어도, 인사이트 생성 결과에 서두가 포함되면 그대로 사용자에게 노출됩니다.

## 확인된 사실
- 인사이트 생성 프롬프트는 이미 `인사말, 서두 없이 바로 내용 시작`을 요구합니다.
- 관련 코드:
  - `rb8001/app/services/skills/naverworks_briefing.py`
  - `_call_llm_for_insight()` 프롬프트
  - `_format_slack_message()`의 `*{insight}*` 블록
- Slack 포맷터는 전달받은 `insight`를 그대로 출력하므로, 해당 문구는 포맷터가 아니라 LLM 출력에서 유입된 것입니다.
- `_generate_insight()`는 줄바꿈만 제거하고, 문장 시작 패턴에 대한 검증이나 정규화는 하지 않습니다.
- 테스트는 `회신 필요 1건, 결제 안내 1건, 일반 공지 4건` 같은 정상 출력만 검증하고, 금지 서두 누출 케이스는 다루지 않습니다.

## 원인
- 프롬프트 제약만 있고, 실제 출력값에 대한 강제 후처리가 없습니다.
- 그 결과 LLM이 프롬프트를 어겨도 서두 문구가 그대로 Slack에 노출됩니다.

## 영향
- 1줄 인사이트 UX 규칙이 깨집니다.
- 브리핑 첫 줄이 장황해져 핵심 전달력이 떨어집니다.
- 테스트는 정상 케이스만 검증하고 있어 이런 프리앰블 누출을 막지 못합니다.

## 권장 조치
1. `_generate_insight()` 또는 Slack 포맷 직전에 서두 제거 후처리를 추가합니다.
2. 프롬프트를 더 강하게 제한해 `회신 필요`, `결제/청구`, `안내/공지` 같은 분류어로 바로 시작하도록 고정합니다.
3. 테스트에 `로빙입니다`, `요약해 드리겠습니다`, `사용자님께서는` 같은 금지 서두 케이스를 추가합니다.

## 수정 후 검증 기준
- Slack 인사이트 첫 문장이 `회신 필요`, `결제/청구`, `안내/공지`, `오후 N시까지 회신 필요` 같은 핵심 분류 표현으로 바로 시작해야 합니다.
- `로빙입니다`, `사용자님께서는`, `요약해 드리겠습니다` 같은 서두 문구는 0건이어야 합니다.
- 스케줄 실행 로그에서 `Generated insight:` 값과 실제 Slack 노출 문구가 같은 기준으로 검증되어야 합니다.

## 한 줄 결론
- 현재 출력은 의도된 정상 동작이 아니라, NAVER WORKS 브리핑 인사이트에 LLM 서두 문구가 누출된 상태입니다.
