diff --git a/agents/budget/workspace/memory/2026-06-20.md b/agents/budget/workspace/memory/2026-06-20.md
new file mode 100644
index 0000000..90f4421
--- /dev/null
+++ b/agents/budget/workspace/memory/2026-06-20.md
@@ -0,0 +1,4 @@
+# 2026-06-20
+
+- 신한은행 잔액 불일치 `144원`은 관리자님 확인으로 은행이자였다. 후잉에 `신한은행(효원) ← 기타수익`, item `이자`, memo `은행이자`, 금액 `144원`, 날짜 `2026-06-20`로 수동 등록했고, 후잉 잔액이 SMS 잔액 `307,004원`과 일치함을 검증했다. `state/whooing_balance_alerts.json`의 신한은행 정합성 상태도 diff `0`으로 정리했다.
+- 관리자님 지시로 신한은행도 잔액 불일치 자동 이자 보정 대상에 추가했다. `whooing_sync.py` 정합성 체크에서 자산 계정이고 후잉 잔액이 SMS보다 부족하며 차이가 `5,000원` 이하이면 카카오뱅크와 동일하게 `{은행계정} ← 기타수익`, item `이자`, memo `은행이자`로 자동 분개한다.
diff --git a/agents/budget/workspace/skills/whooing-sync/scripts/whooing_sync.py b/agents/budget/workspace/skills/whooing-sync/scripts/whooing_sync.py
index 30d4a13..54550af 100755
--- a/agents/budget/workspace/skills/whooing-sync/scripts/whooing_sync.py
+++ b/agents/budget/workspace/skills/whooing-sync/scripts/whooing_sync.py
@@ -935,13 +935,13 @@ def main():
prev = carriers_state.get(carrier, {})
prev_diff = prev.get("last_diff")
- # 카뱅 자동 이자/캐시백 보정: 자산 + 후잉이 SMS보다 적고(deposit 누락), 차이 ≤ 5,000원.
+ # 은행 자동 이자/캐시백 보정: 자산 + 후잉이 SMS보다 적고(deposit 누락), 차이 ≤ 5,000원.
# 횟수·날짜 제한 없이 매번 자동 분개. 매 발화마다 텔레그램 알림으로 누적 가시성 확보.
# 정상 SMS가 와서 deposit이 후잉에 들어가면 diff>=0이 되어 안전하게 미발화.
cur_month = datetime.now(KST).strftime("%Y-%m")
if (
info.get("side") == "asset"
- and carrier == "kakaobank"
+ and carrier in {"kakaobank", "shinhan_bank"}
and diff < 0
and abs(diff) <= 5000
):
@@ -957,7 +957,7 @@ def main():
ok, status, body = post_to_whooing(webhook_url, interest_payload, dry_run=False)
if ok:
notify.send(
- f"💰 카뱅 은행이자 자동 분개\n"
+ f"💰 {notify.escape_html(info['label'])} 은행이자 자동 분개\n"
f"+{interest_amount:,}원 ({notify.escape_html(info['account'])} ← 기타수익)"
)
carriers_state[carrier] = {
diff --git a/workspace/memory/2026-06-20.md b/workspace/memory/2026-06-20.md
new file mode 100644
index 0000000..9db21d6
--- /dev/null
+++ b/workspace/memory/2026-06-20.md
@@ -0,0 +1,3 @@
+# 2026-06-20
+
+- 오전 브리핑 HTML 조립 로직 변경: 오선(@futuresnow) 또는 비하이브 장전 시황 요약이 없으면 메일 하단에 `오선 요약 없음`, `비하이브 요약 없음`을 짧게 표시하도록 `scripts/briefing_mail.py`에 footer note를 추가했다.
diff --git a/workspace/scripts/briefing_mail.py b/workspace/scripts/briefing_mail.py
index 94a8df9..dc1f5fd 100755
--- a/workspace/scripts/briefing_mail.py
+++ b/workspace/scripts/briefing_mail.py
@@ -1106,6 +1106,37 @@ def _article_card(a: dict) -> str:
return '\n'.join(parts)
+def _briefing_footer_note(lines: list[str]) -> str:
+ if not lines:
+ return ''
+ S = HTML_STYLES
+ body = '
'.join(html_escape(line) for line in lines if str(line).strip())
+ if not body:
+ return ''
+ return (
+ f'