RunBuddy 코칭 MVP 첫 실기 검증 — 시작 버튼·GPS 판정·코칭 간격 수정

RunBuddy러닝앱개발MVP검증GPS페이스음성코칭AI협업개발

오늘은 RunBuddy의 코칭 중심 MVP를 처음으로 실기 검증했다. 이번 MVP는 구간별 목표 페이스와 심박수를 입력하고, 실시간 데이터에 따라 판정과 음성 코칭을 제공하는 기능이다. 구현 완료 후 500m 실내 테스트를 진행했고, 두 가지 핵심 문제가 확인됐다.

첫 번째 문제 — 시작 버튼 무반응

시작 버튼을 눌러도 아무 반응이 없는 것처럼 보이는 현상이었다. 원인은 코드 버그가 아니라 UI 배치였다. 에러 메시지는 화면 상단에 있고 시작 버튼은 하단에 있어서, 버튼을 누르는 순간 사용자는 실제 에러 메시지를 보지 못했다. 기능이 멈춘 것이 아니라 에러가 보이지 않았던 것이다.

에러 메시지를 시작 버튼 바로 위로 이동하는 방식으로 수정했다.

두 번째 문제 — 음성 코칭과 실제 데이터 미매칭

빠르게 달리는데도 “좋습니다”가 반복 출력됐다. 원인은 세 가지가 겹쳐 있었다.

실내 환경에서 GPS 페이스 샘플이 잡히지 않아 avgPace가 0으로 남았고, 기존 로직은 이 값을 PACE_OK(적정)로 처리하고 있었다. GPS가 없으면 무조건 “좋습니다”가 나오는 구조였다.

페이스 입력 레이블이 “하한/상한”으로 되어 있어 사용자가 직관과 반대로 입력할 가능성도 있었다. 달리기에서 “하한”은 느린 쪽으로 느껴지지만 코드에서는 빠른 쪽(숫자 작음)이 하한이다. 역전 입력 시 판정이 통째로 뒤집힌다.

마지막으로 코칭 간격을 1km로 설정한 상태에서 500m 테스트를 하면 코칭이 한 번도 나오지 않는 구조였다.

수정 내용

GPS 기반 페이스가 없거나 이상값인 경우 PACE_OK 대신 PACE_UNSET으로 처리하도록 변경했다. GPS 신호가 약한 상황에서는 잘못된 “좋습니다” 대신 침묵 또는 신호 부족 안내가 나오도록 했다. 추가로 2:00/km 미만, 20:00/km 초과 값은 GPS 노이즈로 필터링해 판정이 흔들리지 않게 했다.

페이스 입력 레이블을 “빠른 쪽 페이스 / 느린 쪽 페이스”로 바꾸고 혼동 방지용 힌트 텍스트를 추가했다. 코칭 간격 설명도 “경고 시만”에서 “과부하·피로 경고만 발화”로 바꿔 의미를 명확히 했다.

오늘 확인한 것

기능 구현 자체보다 실제 사용 맥락에서의 진단과 검증이 훨씬 중요하다는 점이다. 특히 개발 AI에게 읽기 전용으로 진단만 지시했을 때, 임의 수정 없이 원인을 정확히 분리해냈다. 실내 테스트는 버튼 흐름과 코칭 UX 점검에는 유효했지만, GPS 기반 판정 검증은 실외 러닝으로 넘어가야 한다는 점도 분명해졌다.

다음 단계

내일 실외 러닝에서 오늘 수정본을 검증한다. 통과하면 목표 이탈 즉시 발화하는 실시간 코칭 트랙과, 500m/1km 단위 인터벌 요약 트랙을 분리하는 방향으로 다음 개선을 진행한다.