DELIVERY
My ETA
교통약자의 실제 보행속도로 도착시간을 다시 계산하는 배리어프리 내비게이션 — 하나금융×SKT Tech4Good 2026 해커톤
- 기간
- 2026 · 해커톤
- 역할
- 백엔드 전담 (FastAPI)
- 팀
- 7인 팀 (기획·리서치 3 · 프로덕트 개발 4) · 15조 피프틴피프틴
문제 1
지도 앱의 ETA는 표준 보행속도 기준이라 휠체어·노약자에게는 항상 틀린 값이 된다
해결
이동 유형·보조기구 프로필과 안내 중 수집한 유효 속도 표본으로 도보 구간 ETA를 보정하는 개인화 엔진을 FastAPI로 구현
결과
일반 ETA와 개인화 ETA를 함께 반환하는 경로 API 제공, 경사·보행환경 페널티 반영
문제 2
엘리베이터·저상버스 정보가 없을 때 "이용 가능"으로 단정하면 사용자를 계단 앞에 데려다 놓는다
해결
확인되지 않은 접근성 정보를 임의 생성하지 않고 UNKNOWN 상태로 명시하는 데이터 원칙을 API 계약에 반영
결과
실측·시간표·추정·미확인 데이터를 구분해 응답 — 없는 데이터를 지어내지 않는 설계
문제 3
대중교통을 놓치거나 경로를 이탈하면 기존 안내는 무용지물이 된다
해결
TMAP 경로·서울 버스/지하철 실시간 도착·엘리베이터 위치 등 외부 API 5종을 어댑터 계층으로 통합하고, 현재 위치 기준 재탐색 흐름 구현
결과
이탈·놓침 감지 시 현재 위치를 새 출발점으로 경로와 ETA 갱신, 위치 요청 지연 복구 처리
개인화 ETA — 평균이 아니라 그 사람의 속도
일반 지도 서비스는 모두에게 같은 보행속도를 적용합니다. My ETA는 이동 유형(휠체어·보행보조기·임산부 등)과 계단 회피, 엘리베이터·저상버스 필수 여부를 프로필로 받고, 안내 중 수집한 유효 속도 표본으로 그 사람의 도보 ETA를 보정합니다. 경사와 보행환경에는 구간 페널티를 적용합니다.
속도 학습은 이상치에 취약해서, 유효하지 않은 표본(정지·GPS 튐)을 걸러내는 방어 로직을 넣었습니다.
모르는 것을 모른다고 말하는 API
접근성 데이터는 갱신이 늦고 구멍이 많습니다. 공공데이터에 없는 구간의 보도 정보를 그럴듯하게 채우는 대신, UNKNOWN을 일급 상태로 두고 프론트가 "확인되지 않음"으로 표시하게 했습니다. 교통약자에게 잘못된 "이용 가능"은 불편이 아니라 사고이기 때문입니다.
외부 API 5종을 어댑터로
TMAP(대중교통·보행·자동차 경로), 서울 버스 도착·저상버스, 지하철 실시간 도착, 엘리베이터 위치, Kakao 장소 검색을 provider 어댑터 계층으로 분리했습니다. 서비스 보장 범위는 서울시이고, 다른 지역은 데이터 공급자를 어댑터로 추가하는 구조입니다. 원본 위치 좌표는 안내 중 계산에만 쓰고 영구 저장하지 않습니다.