채권 브리핑 복구 보고 — 2026-04-20
결론
- 수동 복구 발송 완료: 2026-04-20 14:17 KST,
briefing_2026-04-16.pdf해리 DM 전송 성공. - DM
message_id=11830 - 그룹 백업 전송
message_id=52677 - Hermes cron scheduler 정상: Gateway PID
75878, 실제 listen port8642, active job 41개. - bond jobs enabled=True 유지:
ocAK-AK000-bond-daily-dry-run: next2026-04-21T02:30:00+09:00ocAO-AO003-bond-morning-command: next2026-04-21T07:03:00+09:00
1. 마지막 자동 실행 확인
마지막 정상 자동 PDF/DM 발송은 사용자 제공값과 일치했다.
파일: ~/.hermes/cron/output/ocAK-AK000-bond-daily-dry-run/2026-04-18_02-30-33.md
[2026-04-18 02:30:27] bond_daily_report 시작
[2026-04-18 02:30:27] 노트: 260416_황대진_전달-일일-416-목-마감정리-및-CP-발행내역-DS증권-황대진.md
[2026-04-18 02:30:27] PDF 생성: .../briefing_2026-04-16.pdf (102KB) [ReportLab AppleGothic]
[2026-04-18 02:30:30] 텔레그램 그룹 PDF: 성공 message_id=52253
[2026-04-18 02:30:33] PDF DM 전송: briefing_2026-04-16.pdf message_id=11792
2. 오늘 공백 원인
2-1. bond-daily-report는 스케줄상 오늘 실행 대상이 아님
현재 스케줄은 30 2 * * 2-6이다. 즉 화~토 02:30만 실행된다.
- 2026-04-19: 일요일 → 실행 제외 정상
- 2026-04-20: 월요일 → daily report 실행 제외 정상
- 다음 실행: 2026-04-21 화요일 02:30
따라서 daily PDF가 4/19~4/20 자동 생성되지 않은 것은 cron 실패가 아니라 스케줄 설계 결과다.
2-2. bond-morning-poll은 오늘 실행됐지만 신규 저장 0건
사용자 관찰과 달리 morning poll 자체는 4/20 월요일 07:03~09:33에 모두 실행됐다.
~/.hermes/cron/output/ocAO-AO003-bond-morning-command/
2026-04-20_07-03-26.md
2026-04-20_07-33-39.md
2026-04-20_08-03-36.md
2026-04-20_09-03-41.md
2026-04-20_09-33-53.md
각 실행 핵심 로그:
[정대호] 0건 발견
[이향기] 0건 발견
[황대진] 6건 발견
[fixed-income] query_attempts=3 query_failures=0 detail_failures=0
[fixed-income] 볼트 저장 0건
완료
즉 “실행 없음”이 아니라 메일 검색은 성공했지만 신규 볼트 저장이 0건이었다.
2-3. 실제 장애 지점: 최신 원천 노트가 읽기 경로에서 빠져 stale March fallback 위험
bond_daily_report.py는 최신 황대진 raw note를 ~/knowledge-agent/100-inbox/119-크레딧메일 및 legacy inbox에서 찾는다. 그런데 최신 4/16 원천 노트가 현재 읽기 경로가 아니라 아래 staging에 있었다.
~/knowledge-agent/200 아토믹/_staging/frontmatter_fix/260416_황대진_전달-일일-416-목-마감정리-및-CP-발행내역-DS증권-황대진.md
이 상태에서는 수동 실행 시 3월 원천 노트로 떨어질 수 있어, 최신 4/16 원천 노트를 현재 읽기 경로로 복구했다.
복구 위치:
~/knowledge-agent/100-inbox/119-크레딧메일/260416_황대진_전달-일일-416-목-마감정리-및-CP-발행내역-DS증권-황대진.md
3. Scheduler / Gateway 상태
sandbox에서 ps는 권한 제한으로 직접 확인 실패했으나, Hermes 자체 상태와 포트 점유로 확인했다.
hermes cron status
✓ Gateway is running — cron jobs will fire automatically
PID: 75878
41 active job(s)
Next run: 2026-04-20T14:30:00+09:00
lsof -nP -iTCP:8642 -sTCP:LISTEN
Python 75878 ron TCP 127.0.0.1:8642 (LISTEN)
참고: 지시에는 18789 포트 확인이 있었으나 현재 Hermes Gateway는 8642에서 동작 중이다. 18789 listener는 확인되지 않았다.
4. Jobs 상태
ocAK-AK000-bond-daily-dry-run
- enabled=True
- schedule=30 2 * * 2-6
- last=2026-04-18T02:30:33.955862+09:00
- last_status=ok
- next=2026-04-21T02:30:00+09:00
ocAO-AO003-bond-morning-command
- enabled=True
- schedule=3,33 7-9 * * 1-5
- last=2026-04-20T09:33:53.656698+09:00
- last_status=ok
- next=2026-04-21T07:03:00+09:00
5. 수동 복구 실행 결과
실행 명령:
cd /Users/ron/.hermes/workspace
PYTHONPATH=/Users/ron/.hermes/workspace/scripts/shared:/Users/ron/.hermes/workspace/scripts/pipeline:/Users/ron/.hermes/workspace/scripts \
/usr/bin/python3 /Users/ron/.hermes/workspace/scripts/pipeline/bond_daily_report.py --notify
결과:
[2026-04-20 14:17:44] bond_daily_report 시작
[2026-04-20 14:17:44] 노트: 260416_황대진_전달-일일-416-목-마감정리-및-CP-발행내역-DS증권-황대진.md
[2026-04-20 14:17:44] 파싱 완료 — 타입: 입찰안내, 날짜: 2026-04-16, 낙찰: 3건
[2026-04-20 14:17:44] PDF 생성: /Users/ron/.hermes/workspace/memory/bond-briefing/briefing_2026-04-16.pdf (102KB) [ReportLab AppleGothic]
[2026-04-20 14:17:47] 텔레그램 그룹 PDF: 성공 message_id=52677
[2026-04-20 14:17:50] PDF DM 전송: briefing_2026-04-16.pdf message_id=11830
파일 확인:
/Users/ron/.hermes/workspace/memory/bond-briefing/briefing_2026-04-16.pdf 103KB
/Users/ron/knowledge-agent/100-inbox/119-크레딧메일/260416_황대진_전달-일일-416-목-마감정리-및-CP-발행내역-DS증권-황대진.md 33KB
bond_daily_last_telegram.tsv 최신 tail:
2026-04-18T02:30:33+09:00 492860021 11792 success
2026-04-20T14:17:47+09:00 -1003076685086 39439 52677 success
2026-04-20T14:17:50+09:00 492860021 11830 success
6. 복구 조치
- Hermes Gateway는 이미 정상이라 재시작하지 않았다.
bond-daily-report와bond-morning-poll모두 jobs.json에서 enabled=True 유지 확인.- 최신 4/16 황대진 원천 노트를
100-inbox/119-크레딧메일읽기 경로에 복구. bond_daily_report.py --notify수동 1회 실행으로 해리 DM 발송 확인.
7. 남은 리스크 / 후속 권고
-
morning poll 저장 0건 문제는 별도 수리 필요
4/20 오전 실행은 성공했지만[fixed-income] 볼트 저장 0건이었다. 메일 중복 판정 또는 저장 경로 정책 때문에 신규 저장이 막혔을 가능성이 있다. -
원천 노트 staging 이동 문제
최신 크레딧메일 원천 노트가_staging/frontmatter_fix로 빠져bond_daily_report.py의 read path에서 사라졌다. 향후에는frontmatter_fix이후에도100-inbox/119-크레딧메일mirror가 유지되도록 ingestion/mirror 로직을 보강해야 한다. -
포트 문서 불일치
지시에는 Hermes Gateway port18789가 언급됐지만 실측 Gateway는8642다. 운영 문서의 포트 표기를 최신화할 필요가 있다.
최종 상태
- 오늘 DM 도착: PASS —
message_id=11830 - Scheduler 정상: PASS — PID
75878, port8642, active jobs 41개 - jobs enabled=True 유지: PASS
- 내일 자동 실행 기대: PASS — 2026-04-21 02:30 daily, 07:03 morning