파트너 충전 입금자명 미스매칭 건수 감소
목차
버그 발견
파트너 충전 매칭 로직에서 입금자명 미스매칭이 늘고 있었음. 입금 알림 SMS 파싱 결과를 보니 입금자명 자리에 "잔액", "수수료", "농협" 같은 엉뚱한 토큰이 박혀 있었음. 매칭 실패 → 수동 처리 큐 적체 → CS 부담 증가의 깔끔한 도미노.
기존 로직 한계
파서가 "입금" 키워드 뒤 첫 토큰을 무조건 입금자명으로 가정하고 있었음. 결제대행사마다 SMS 포맷이 달라서, 안내 문구가 먼저 오는 케이스에서 그대로 박살남.
| 케이스 | 원문 일부 | 추출 결과 |
|---|---|---|
| 정상 | "입금자 홍길동 1,000원" | 홍길동 |
| 오탐 A | "입금 잔액 5,000원" | 잔액 |
| 오탐 B | "입금 수수료 차감 후" | 수수료 |
| 오탐 C | "농협 입금 ABC123" | 농협 |
처음엔 정규식이 잘못된 줄 알았는데, 까보니 토큰 분리는 정상이고 "어떤 토큰을 사람 이름으로 인정할 거냐" 판단부가 비어있던 거였음.
수정 내용
블랙리스트 키워드 셋을 도입함. 후보 토큰이 셋에 걸리면 다음 토큰으로 슬라이드.
EXCLUDE = {
"잔액", "수수료", "이체", "출금", "환불",
"농협", "국민", "신한", "우리", "하나", "기업"
}
추가 가드:
- 한 글자 토큰은 무조건 스킵 (조사/단음 노이즈)
- 숫자로만 이루어진 토큰 스킵
- 영문 6자 이상 코드성 문자열 스킵 (거래코드 오탐 방지)
회귀 방지
테스트 픽스처에 실제 결제대행사 4사 샘플 메시지 50여 건을 박아둠. 정상/오탐을 한꺼번에 돌려서, 새 포맷이 들어와도 어디가 깨지는지 바로 보이게 함.
- 정상 메시지: 입금자명이 정확히 추출되는지
- 오탐 케이스: 블랙리스트가 실제로 걸러내는지
- 엣지: 입금자명에 공백/특수문자가 섞인 경우
회고
블랙리스트 방식은 새 결제대행사가 붙거나 SMS 템플릿이 바뀌면 또 깨짐. 본질적으로는 "한글 2~5자 + 허용 영문 패턴" 같은 화이트리스트로 가는 게 맞음. 다만 화이트리스트는 외국인 입금자/법인명 케이스를 놓칠 수 있어서, 다음 사이클에 별도 분류기로 빼서 다듬을 예정. 이번 커밋은 급한 불 끄는 핫픽스 성격이고, 그래도 정량적으로 매칭 실패 건수가 눈에 띄게 줄어든 게 위안.
다음
댓글 0
첫 댓글 달아줘.