CatchPro는 배송 오더를 판단하는 보조 앱입니다. 배송 기사 업무에서 오더 상세 화면을 보고 도착지, 상차거리, 요금이 조건에 맞는지 확인한 뒤 잡아도 되는 오더인지 판단하는 것이 핵심입니다.
처음에는 자동화라고 하면 최대한 빠르게 잡는 것이 중요하다고 생각했습니다. 하지만 실제로 작업하면서 생각이 바뀌었습니다. 배송 오더 자동화에서는 속도보다 정확도가 먼저였습니다.
처음 만들고 싶었던 흐름
초기에는 인성 오더 리스트 화면을 OCR로 읽고, 조건에 맞아 보이는 후보 행을 자동으로 클릭하는 흐름을 생각했습니다.
- 리스트 화면에서 OCR로 도착지, 상차거리, 요금을 읽는다.
- 조건에 맞는 후보 오더를 찾는다.
- 해당 행을 자동으로 클릭한다.
- 상세 화면에서 다시 확인한다.
- 조건이 맞으면 자동확정한다.
겉으로 보기에는 좋은 구조였습니다. 리스트 단계에서 후보를 빠르게 찾을 수 있고, 사람이 직접 누르는 시간을 줄일 수 있기 때문입니다.
실제로 해보니 생긴 문제
하지만 실행 로그를 보면서 이 방식이 위험하다는 것을 알게 됐습니다.
- OCR이 도착지와 요금 컬럼을 섞어 읽을 수 있었습니다.
- 리스트가 갱신되면 클릭 좌표가 어긋날 수 있었습니다.
- OCR은 맞게 읽었는데 실제로는 다른 오더 상세가 열릴 수 있었습니다.
- 상세 화면 재검증은 확정 실수는 막을 수 있지만, 잘못 열린 상세 화면 자체는 막지 못했습니다.
이 문제를 보면서 알게 된 것은, 자동화에서 가장 위험한 순간은 “작동하지 않을 때”가 아니라 “작동하는 것처럼 보이지만 다른 대상을 처리할 때”라는 점이었습니다.
왜 수정이 필요했나
CatchPro의 목적은 많은 오더를 무작정 빠르게 잡는 것이 아닙니다. 조건에 맞는 오더만 안정적으로 판단하는 것입니다.
리스트 OCR 자동 클릭은 속도는 줄 수 있지만, 잘못된 상세 화면이 열릴 가능성을 남겼습니다. 한 번 잘못 잡으면 사용자가 직접 취소하거나 손해를 볼 수 있기 때문에 이 구조는 과감히 줄이는 것이 맞다고 판단했습니다.
수정한 방향
그래서 1차 자동오더에서 리스트 OCR 자동 클릭 흐름을 제거했습니다. 이제 사용자가 직접 인성 리스트에서 오더 상세 화면을 열고, CatchPro는 열린 상세 화면에서만 판단합니다.
수정 후 흐름은 이렇게 바뀌었습니다.
- 사용자가 오더 상세 화면을 직접 연다.
- CatchPro가 상세 화면의 도착지, 상차거리, 요금을 읽는다.
- 설정한 조건과 비교한다.
- 조건이 맞으면 확정 후보로 판단한다.
- 조건이 애매하면 수동 확인 또는 보조 판정으로 넘긴다.
수정 후 좋아진 점
- 잘못된 리스트 행을 자동 클릭할 위험이 줄었습니다.
- 판단 기준이 상세 화면 중심으로 단순해졌습니다.
- 오탐을 줄이는 방향으로 구조가 안정됐습니다.
- 로그를 봤을 때 문제 원인을 더 쉽게 추적할 수 있게 됐습니다.
다음 고도화 방향
다음 단계는 도착지 판단 정확도를 높이는 것입니다. 단순히 문자열이 포함되어 있는지 보는 방식으로는 부족합니다. 같은 동 이름이나 구 이름이 전국에 여러 곳 있기 때문입니다.
그래서 앞으로는 아래 방향으로 개선하려고 합니다.
- 시/도 → 시/군/구 → 동/읍/면 단위까지 행정구역을 구조화하기
- 부분 문자열 비교가 아니라 전체 행정구역 경로로 비교하기
- 명확한 경우는 로컬 규칙으로 빠르게 처리하기
- 주소가 애매한 경우에만 Gemini를 보조 판단기로 사용하기
이번 작업을 통해 배운 점은 분명합니다.
자동화는 빠르게 움직이는 것보다, 잘못 움직이지 않게 만드는 것이 먼저다.