대표 사례 / FILE 02
탈 수 있을까?
양주에서 서울로 출근하는 광역버스 승객에게 버스가 내 정류장에 도착할 때 자리가 있을지 예보하는 서비스. 5인 팀에서 데이터 수집과 예보 API, 모바일 웹 조회 흐름을 맡고 기획 논의에 참여함.
- 문제
- 지금 보이는 잔여석으로는 내 정류장에서 탈 수 있을지 알기 어려움. 공공 API의 빈 좌석 슬롯이 기본값 0으로 들어와 '정보 없음'이 '만석'으로 보임
- 본인 판단
- 실제 차량이 보고한 0만 만석으로 처리하고 정보 없음과 빈 슬롯은 따로 구분. 근거가 부족한 예측 확률은 null로 둠
- 역할·기간
- 5인 팀 '타고가조', 데이터 수집과 예보 API, 모바일 웹 조회 흐름 담당, 기획 논의 참여 · 2026.09.23–10.17
- 인정
- 2026 양주시 미래인재 AI 공모전 최우수상 (팀 수상, 제2026-126호, 2026.10.17) · 로컬 API 코드와 테스트는 AI 협업, 응답 기준과 검수는 본인
01 · 배경
'언제 올까'에서 '탈 수 있을까'로
옥정에서 좌석이 소진돼 고읍과 삼숭에서 타기 어렵다는 시민 건의가 있었고, 양주시는 2026년 2월 G1300과 1306을 증회함. 기획안에 쓴 STCIS 자료(2026.9.8–21 평일)에서 G1300 덕현초교 06시대 혼잡도는 97%, 관측일 10일 중 9일 혼잡.
기존 안내는 도착 예정 시간과 현재 잔여석까지만 보여 줌. 팀은 질문을 '내 정류장에 오면 탈 수 있을까'로 바꾸고 도착 시 만차 확률, 유사 운행 사례, 다음 버스 비교를 함께 주는 방향으로 정리함. 팀 설문 기준으로 '만차로 다음 버스를 기다렸다'는 응답은 42.8%.

시범 범위는 덕현초교 출발 G1300과 1306 두 노선, 평일 05:45–09:00 만차 예측.
02 · 문제 정의
빈칸이 0석으로 들어오는 데이터
2026.10.03 덕정역 도착 API를 한 번 조회해 좌석 값을 확인. 정규화한 슬롯 56개 중 쓸 수 있는 좌석 값은 2행뿐임.
- 빈 슬롯 37, 좌석 공란이나 숫자 해석 불가 28, 음수나 미제공 8 (한 행에 여러 표시가 겹쳐 합계는 56을 넘음)
- 빈 슬롯이 기본값 0으로 들어와, 그대로 쓰면 '정보 없음'이 '만석'으로 보임
단일 조회 결과 · 본인 로컬 검증 문서 기준
03 · 판단 기준과 결정
모르는 값은 모른다고 응답
근거가 없으면 숫자 대신 이유를 보냄.
이 기준으로 수집과 예보 API의 응답 규칙을 아래처럼 정함.
예보 갱신 시점을 '도착 15·10·5분 전'에서 '3·2·1정거장 전'으로 바꾼 것은 팀 결정으로, 2026.10.15 최종 발표자료에 반영됨.
04 · 결과물
예보 화면과 예측 보류 구조
팀 최종 발표자료(2026.10.15)의 서비스 화면. 예보 카드에 무좌석 위험과 함께 근거가 된 유사 운행 횟수를 같이 표시함.



본인 산출물. 로컬 FastAPI 예보 API 0.1.0(경로 10개)과 GBIS 좌석 수집기, 검증 문서. 첫 공식 조회 3회 모두 정상 응답, 차량 슬롯 72행 중 유효 좌석 17행 확인. 팀 저장소와 통합 전 로컬 구현이며, Azure 서버는 생성과 관리까지 담당.
최우수상. 2026 양주시 미래인재 AI 공모전 최우수상, 양주시장 명의, 팀 수상.
AI 협업 범위. API 명세 초안, 코드, 테스트는 AI 협업. 좌석 상태 구분과 확률 공개 조건, 결과 검수는 본인.
05 · 정리
본인 작업과 팀 작업의 범위
실제 조회에서 빈칸이 0으로 들어오는 것을 먼저 확인한 뒤 0석과 정보 없음을 나누는 기준을 문서로 작성.
근거가 부족할 때 숫자를 내지 않는 원칙은 팀 구조의 '검증 미통과 시 예측 보류'와 같은 방향. 본인 산출물은 로컬 구현, 화면과 발표자료는 팀 공동 작업.