Skip to content

CatchPro 고도화 5: 자동확정 단순화와 현장 반응속도 개선

오늘 CatchPro 업데이트의 핵심은 기능을 더 많이 붙이는 것이 아니라, 실제 운행에서 가장 중요한 기본 기능을 더 빠르고 단순하게 만드는 것이었다.

CatchPro의 목표는 분명하다. 사용자의 현재 위치에서 가까운 오더를 빠르게 잡고, 시간당 매출 3만원 이상을 안정적으로 노리는 것이다. 그러려면 화려한 부가기능보다 먼저 오더 리스트에서 상세로 들어가는 속도, 상세 진입 후 조건 판단, 확정 버튼 클릭까지의 흐름이 가장 빨라야 한다.

오늘의 방향

오늘은 “꼭 필요한 오더를 가장 빠르게 잡는 기본 기능 강화”에 맞춰 구조를 정리했다.

  • 자동확정 흐름을 단순화했다.
  • 수동상세확정 개념을 제거했다.
  • 자동상세확정은 리스트에서 상세로 자동 진입하는 역할만 담당하게 정리했다.
  • 상세 진입 실패 시 보조 좌표 탭을 더 빠르게 실행하도록 개선했다.
  • 확정 버튼 클릭 실패 로그를 더 정확하게 남기도록 보강했다.
  • 상세주소 중복 저장 로그를 줄여 운행 분석 DB가 불필요하게 커지는 것을 막았다.

자동확정 구조 단순화

기존에는 자동확정, 자동상세확정, 수동상세확정이 나뉘어 있었다. 하지만 실제 운행 관점에서는 사용자가 직접 상세에 들어갔든 CatchPro가 자동으로 상세에 들어갔든, 조건이 맞으면 바로 확정되는 것이 더 자연스럽다.

그래서 오늘 구조를 이렇게 정리했다.

  • 자동확정: 인성 오더 상세화면이 열려 있고, 도착지 조건과 요금 조건이 맞으면 확정한다.
  • 자동상세확정: 오더 리스트에서 조건 후보를 자동으로 눌러 상세화면으로 진입한다.

즉, 자동확정은 “상세화면에서 확정 버튼을 누를지”를 담당하고, 자동상세확정은 “리스트에서 상세화면으로 들어갈지”만 담당한다. 수동상세확정은 현장 흐름상 따로 둘 필요가 없어 제거했다.

운행 오버레이 개선

운행 중에는 설정 탭을 찾아 들어가는 것보다 인성앱 화면 위에서 바로 상태를 확인하고 켜는 것이 중요하다. 그래서 인성앱 오버레이에서 자동확정과 자동상세 상태를 직접 확인하고 제어할 수 있게 했다.

특히 운행 켜기 버튼은 자동확정과 자동상세확정을 함께 켜도록 정리했다. 실제 운행 중에는 “잡을 준비가 되었는지”가 한눈에 보여야 하고, 켜는 동작도 한 번이면 충분해야 한다.

상세 진입 반응속도 개선

오늘 로그에서 중요한 문제가 보였다. 리스트 행 클릭은 성공으로 반환됐는데도 실제 상세화면이 열리지 않는 경우가 있었다. 접근성 ACTION_CLICK은 성공이라고 알려줬지만, 인성앱 화면은 그대로 리스트에 남아 있는 상황이다.

이 경우 기존에는 상세 진입 실패를 기다리는 시간이 길었다. 운행 중에는 1초도 체감이 크기 때문에 보조 좌표 탭을 더 빠르게 실행하도록 조정했다.

  • ACTION_CLICK 후 상세 미진입 보조 좌표 탭: 500ms 기준
  • 상세 미진입 최종 대기 시간: 900ms 기준

이 개선의 목적은 단순하다. 접근성 클릭이 성공했다고 해도 실제 상세가 열리지 않으면, 짧게 확인하고 바로 다음 보조 동작으로 넘어가게 만드는 것이다.

확정 버튼 실패 로그 보강

기존 로그는 확정 버튼 클릭이 실패했다는 사실은 남겼지만, 왜 실패했는지 분석하기에는 정보가 부족했다. 오늘은 확정 버튼 클릭 실패 시 버튼과 주변 클릭 가능한 노드의 정보를 함께 남기도록 개선했다.

앞으로 실패 로그에는 다음 정보가 같이 기록된다.

  • 버튼 텍스트
  • 클래스명
  • viewId
  • bounds 좌표
  • clickable 여부
  • enabled 여부
  • visible 여부
  • 클릭 가능한 부모 노드 정보

이제 운행 후 로그를 보면 “확정 버튼 클릭이 실패했다”에서 끝나지 않고, 버튼을 못 찾은 것인지, 찾았지만 클릭 불가였는지, 부모 노드를 눌러야 하는 구조였는지까지 추적할 수 있다.

주소 저장 로그 정리

상세주소 저장 로그가 같은 주소로 반복 저장되는 현상도 정리했다. 운행 분석에는 주소 저장 이력이 필요하지만, 같은 칸에 같은 주소가 계속 반복 저장되면 DB만 커지고 분석 품질은 좋아지지 않는다.

그래서 같은 슬롯과 같은 주소 조합은 중복 저장을 막고, 일정 시간 안의 반복 저장도 건너뛰도록 했다.

  • 같은 주소가 이미 저장되어 있으면 추가 저장 생략
  • 같은 슬롯과 주소 조합은 10분간 중복 로그 방지
  • 최근 중복 방지 기록은 제한된 개수만 유지

검증

오늘 변경 후 로컬 검증을 진행했다.

  • 단위 테스트 통과
  • 디버그 APK 빌드 통과
  • 운행용 휴대폰 업데이트 완료
  • 추가 휴대폰 업데이트 완료

다음 운행에서 볼 것

다음 운행에서는 아래 항목을 집중적으로 확인할 예정이다.

  • 오더 리스트 표시 후 상세 진입까지 걸린 시간
  • ACTION_CLICK 성공 후 실제 상세화면 미진입 빈도
  • 보조 좌표 탭이 상세 진입 성공률을 얼마나 올리는지
  • 확정 버튼 클릭 실패가 발생할 경우 정확한 원인
  • 도착지 조건과 요금 조건만 남긴 상태에서 확정 속도가 개선되는지

오늘 업데이트는 사용자 편의 기능을 늘리는 작업이라기보다, CatchPro가 왜 만들어졌는지에 더 가까운 작업이었다. 가까운 오더를 더 빨리 잡고, 실제 시간당 매출을 올리는 데 필요한 기본 동작을 단순하고 빠르게 만드는 것. 앞으로도 기본 기능을 약화시키는 방향의 기능 추가는 피하고, 현장에서 검증된 흐름만 남기는 쪽으로 고도화할 계획이다.