연락처 송금 버그 수정과 비회원 주문 매칭 누락 해결
목차
연락처이체 은행코드 탐지 로직 추가
2026-03-25에 연락처 송금 기능의 버그를 수정했음.
연락처 송금은 은행 앱 화면을 자동으로 조작해서 입금 처리를 완료하는 구조임. 각 은행별로 UI가 다르기 때문에 은행별 핸들러가 개별로 존재하고, Playwright로 브라우저를 제어함.
수정 포인트
- 은행 셀렉터 감지 로직 오류
- 계좌 로테이션 순서 문제
- 파싱 실패 후 재시도 필터 조건 누락
- 비회원 주문 매칭 누락
// 완료 감지 regex 통합 패턴
private static final Pattern COMPLETE_PATTERN =
Pattern.compile("(이체|송금|완료|처리됐|성공)");
AI 폴백 로직이 붙어 있어서 정규식으로 못 잡는 케이스는 Claude API에 화면 텍스트를 넘겨서 파싱 결과를 받는 구조임. 은행마다 완료 메시지 문구가 조금씩 달라서 regex만으로는 한계가 있었음.
다음
작업 규모는 크지 않았지만 운영 안정성을 위한 필요한 변경이었음. 이런 작은 수정들이 쌓여서 전체 시스템의 신뢰도를 높임.
주문 매칭 로직
입금 알림이 도착하면 금액, 발신자, 시간 조건으로 주문을 매칭함. 동일 금액 주문이 여러 건일 경우 가장 최근 주문을 우선 매칭함.
비회원 주문도 매칭 대상에 포함해야 했음. 회원 기반으로만 체크하면 비회원 주문이 누락됨. 이 부분이 버그로 발견돼서 쿼리 조건을 수정했음.
연락처 송금 안정성 확보 전략
은행 앱 UI는 앱 업데이트마다 바뀔 수 있음. 하드코딩된 셀렉터는 앱 버전이 올라가면 갑자기 동작을 멈춤. 자가학습 캐시 구조가 이 문제를 완화함.
성공한 셀렉터를 DB에 저장해두고, 다음 요청에서는 저장된 셀렉터를 먼저 시도함. 실패하면 전체 탐색으로 폴백하고, 성공한 새 셀렉터를 다시 저장함.
- PENDING: 처리 중
- SUCCESS: 완료
- NO_MATCH: 주문 매칭 실패 → 재시도 큐
- MANUAL_REQUIRED: 자동 처리 불가 → 수동 처리
다음
댓글 0
첫 댓글 달아줘.