← 리포트 목록
260416 morning briefing v2 quality redo
2026-04-16
morning
[morning-briefing, telegram, quality, report, phase17-followup]
아침 브리핑 v2 품질 재점검
결론
PASS. 06:45 자동 발송본(msg_id 2375)은 짧지만 애매한 LLM 문장과 markdown 잔재가 남아 있었다. v2에서는 LLM 문체에 의존하지 않고, deterministic compact 브리핑으로 고정했다. 최종 재발송 msg_id는 2399.
최종 발송 증거:
[briefing_wrapper] send_result={"ok": true, "message_ids": [2399], "error": null, "chat_id": -1003522748967, "topic_id": 8, "transport": "telegram_api"}
1) 06:45 msg_id 2375 캡처
로그 근거:
~/.hermes/logs/morning-briefing-telegram.log
[briefing_wrapper] kind=morning chars=644 meta={"morning_briefing_ok": true, "stderr_signal": ""}
[SECTOR_TRACE] send_sector(report) caller=telegram_briefing_wrapper.py text='<b>🌅 아침 투자 브리핑</b>\n<i>2026-04-16 06:45 KST / LLM</i>\n\n# 🌅 아침 투자 브리핑 — 2026-04-16'
[briefing_wrapper] send_result={"ok": true, "message_ids": [2375], "error": null, "chat_id": -1003522748967, "topic_id": 8, "transport": "telegram_api"}
LLM 로그 근거:
~/.hermes/logs/llm/20260416.jsonl
2026-04-16T06:45:05 KST
model=github-copilot/gpt-4o-mini
response_chars=585
response_preview="# 🌅 아침 투자 브리핑 — 2026-04-16\n\n## 1. 오늘 한 줄\n- 미국 시장의 유동성 축소가 지속되며, 한국 시장의 반응을 주목해야 할 시점.\n\n## 2. 시장 온도\n- 미국 시장은 유동성 축소 국면에 진..."
Telegram 과거 본문 전체 역조회는 불가했다. 대신 wrapper log, sector trace, LLM response preview로 실제 발송 형식과 품질 문제를 확인했다.
2) 남은 문제 5개
| 문제 | 근거 | 조치 |
|---|---|---|
| Markdown 잔재 노출 | sector trace에 HTML 헤더 뒤 # 🌅 ..., ## 형식이 그대로 보임 |
wrapper HTML 렌더러 섹션명을 v2로 정리 |
| 애매한 문장 | “한국 시장의 반응을 주목해야 할 시점” | 금지 문구 필터 + 판단형 문장으로 교체 |
| 수치 부족 | 06:45 본문 644자, preview상 핵심 숫자 부족 | 핵심 숫자 8개 고정: 미국 대형주/나스닥/코스피/미10년/달러/원달러/유가/금 |
| technical 용어 혼입 | s:6 개선 후에도 dry-run에 변동성지수, 이상치, 통계값, 이동평균, 이탈, 되돌림 노출 |
아침 브리핑 전용 sanitizer 추가, anomaly 라인 제거 |
| 매크로/펀더/테크 경계 불명확 | macro/fund/technical latest를 섞어 문장화하면서 raw 용어 유입 | “매크로 / 펀더멘탈 / 가격 흐름” 3줄로 역할 분리 |
3) 수정 파일
백업:
/Users/ron/.hermes/workspace/scripts/pipeline/morning_briefing.py.bak-morning-v2-20260416-093641
/Users/ron/.hermes/workspace/scripts/pipeline/telegram_briefing_wrapper.py.bak-morning-v2-20260416-093641
수정:
| 파일 | 내용 |
|---|---|
scripts/pipeline/morning_briefing.py |
generate_compact_korean_briefing() v2 재작성. 2,500자 이하, 숫자 중심, macro/fund/가격 흐름 분리. _brief_forbidden_sanitize() 추가. |
scripts/pipeline/telegram_briefing_wrapper.py |
v2 섹션 렌더링 추가, 제목을 “아침 브리핑”으로 변경, 최종 visible body sanitizer 추가. |
주요 금지어 필터:
z-score, z=, MA, 이동평균, 편차, 과열/과매도, 통계적 이상치,
표준편차, 변동성, 모멘텀, 차트, RSI, 볼린저, 브레이크아웃,
돌파, 저항, 지지, 이탈, 되돌림, 이상치, 통계값,
전문가들의 마켓 인사이트, 시장의 심리, 투자 전략 제안,
주목해야 할 시점, 긍정적인 흐름
4) 최종 dry-run 본문
검증 command:
cd /Users/ron/.hermes/workspace
python3 scripts/pipeline/telegram_briefing_wrapper.py --kind morning --dry-run
스캔 결과:
technical hits []
cringe hits []
bad_text hits []
message_chars 1256
본문 샘플:
<b>🌅 아침 브리핑</b>
<i>2026-04-16 09:39 KST</i>
<b>🧭 오늘 결론</b>
• 오늘은 유가 급락, 달러 약세, 금 강세가 동시에 나온 날이다. 한국장은 반도체·환율·유가 민감 업종을 분리해서 본다.
<b>🔢 핵심 숫자</b>
• 시장 지표는 <b>2026-04-15 수집, 전일 종가 기준</b>입니다.
• 미국 대형주 <b>6,951.24</b> (+0.9%)
• 나스닥 <b>23,558.09</b> (+1.6%)
• 코스피 <b>5,808.62</b> (-0.9%)
• 미국 10년금리 <b>4.26</b> (-0.9%)
• 달러지수 <b>98.14</b> (-0.2%)
• 원달러 <b>1,471.88</b> (-0.7%)
• 서부텍사스유 <b>91.87</b> (-7.3%)
• 금 <b>4,857.9</b> (+2.4%)
5) 1회 재실행 결과
실행 command:
cd /Users/ron/.hermes/workspace
python3 scripts/pipeline/telegram_briefing_wrapper.py --kind morning
결과:
[briefing_wrapper] kind=morning chars=1256 meta={"morning_briefing_ok": true, "stderr_signal": ""}
[SECTOR_TRACE] send_sector(report) caller=telegram_briefing_wrapper.py text='<b>🌅 아침 브리핑</b>\n<i>2026-04-16 09:40 KST</i>...'
[briefing_wrapper] send_result={"ok": true, "message_ids": [2399], "error": null, "chat_id": -1003522748967, "topic_id": 8, "transport": "telegram_api"}
6) 검증
python3 -m py_compile scripts/pipeline/morning_briefing.py scripts/pipeline/telegram_briefing_wrapper.py # PASS
최종 body technical scan: 0건
최종 body cringe scan: 0건
최종 body bad_text scan: 0건
본문 길이: 1,256자
Telegram send: ok, msg_id 2399
남은 리스크
- wrapper는 현재도 내부적으로
morning_briefing.py를 호출하며, LLM이 실행될 수 있다. 다만 quality gate 때문에 최종 사용자 본문은 deterministic compact v2로 정화된다. - “가격 흐름”은 technical 세부 용어가 아니라 역할 라벨로만 사용했다. 실제 금지어 스캔에는 걸리지 않았다.
자체평가
- 정확성: 4.7/5 — 요청한 06:45 증거, 문제 5개, 수정, 1회 재발송, msg_id 확보 완료.
- 완성도: 4.6/5 — 보고서와 재현 가능한 검증 로그 포함.
- 검증: 4.8/5 — py_compile, dry-run, 금지어 scan, 실제 Telegram send 확인.
- 최소 변경: 4.4/5 — morning briefing 관련 2개 파일만 수정. sanitizer는 중복 가드라 약간 넓지만 사용자-visible 품질 안정 목적상 필요.
종합: 4.6/5