# 2026-08-06

## 신한카드 삼천리도시가스 분류 실패 — 원인 3겹 (코디 수정)

가스요금 14,000원 SMS가 structured 분류를 통과하지 못하고 raw 폴백 → **후잉에 거래가 아예 생성되지 않았다**(후잉 자체 파서도 이 형식을 못 읽음). 8/6 후잉 거래에 복권·톨비·쿠팡 3건만 있었음.

1. **파서 공백** — 신한카드 `자동납부` SMS는 기존 승인 SMS와 **금액/상호 순서가 반대**다.
   - 기존: `신한카드(6847)승인 방*원님 아파트 관리비  184,440원 정상승인 되었습니다.` (상호 → 금액)
   - 자동납부: `[신한카드] 자동납부 정상승인 방효원님 08/06 (일시불) 14,000원 삼천리도시가스` (금액 → 상호)

   `SHINHAN_APPROVE_RE`가 `[신한카드]`의 `]`에서 막혀 처음부터 한 번도 파싱된 적 없음(2026-05-07·08-06 두 건 전부 raw). `parsers.py`에 `SHINHAN_AUTOPAY_RE` 신설, `parse_shinhan_card`가 자동납부 → 일반 순으로 시도.
   ⚠️ `SHINHAN_APPROVE_RE`를 느슨하게 고치는 건 안 된다 — merchant 자리에 `08/06 (일시불)`이 잡힌다.

2. **계정 `주거,관리`는 후잉에 없다** — `삼천리도시가스` 매핑이 이 죽은 계정을 가리키고 있었다. 2026-06-30 `주택임대료`가 같은 계정으로 `left account does not exist at entry_date` 실패한 그 계정. **`주거,통신` / item `공과금`으로 확정**(2026-05-07 실제 입력분·`도시가스` 기본 매핑·주택임대료 정정 선례와 동일). 2026-05-07 메모의 `주거,관리` 지시는 그 메모에 정정 표기함.

3. **`state/whooing_accounts.json`이 stale**(updated_at 2026-04-23) — `whooing_manual.py`의 차트 검증이 이 파일을 보는데 죽은 계정 `주거,관리`·`카뱅지금통`(실제는 `카뱅저금통`)을 싣고 있어 로컬 검증만 통과하고 후잉에서 터졌다. 라이브 `accounts.json`으로 전체 동기화(자산 +7/−1, 부채 +2, 비용 −1, updated_at 2026-08-06). 매핑 계정을 늘릴 때는 이 스냅샷이 최신인지 먼저 확인할 것.

누락분 14,000원은 `whooing_manual.py`로 보정 입력 완료(`20260806 / 공과금 / 주거,통신 ← 신한신용(효원)`).

## ⚠️ raw 폴백 200은 "후잉에 기록됨"이 아니다

후잉 raw 엔드포인트는 **자기 파서가 실패해도 200을 준다**. `✅ [raw] … 200` 로그와 `sent_raw` 카운트는 "접수됨"일 뿐이라, 이번 누락이 5월부터 안 보인 이유다. raw 폴백 알림을 받으면 **후잉에 실제로 줄이 생겼는지 `entries.json`으로 확인**해야 한다. (`imsg send`의 rc=0이 발송 성공이 아닌 것과 같은 함정.)

## 범위 밖 (관리자님 판단 대기)

- **현대카드 자동납부도 같은 파서 공백** — `[현대카드] 자동납부 승인 방*원님 라이나생명 31,100원`(2026-05-17 raw). 다만 `whooing_sync.py`의 잔액차 기반 월 1회 자동보정 + `_should_skip_hyundai_insurance_duplicate`가 이미 커버해 실질 누락 없음. 미수정.
- raw 폴백분이 후잉에 실제 반영됐는지 자동 검출하는 장치는 붙이지 않았다.
