Seoul Bike2025
표만 봐서는 안 보이는 위험을, 지도와 대시보드로 시각화합니다. 어느 도로부터 손봐야 하는지를 사고 지점과 전용도로 위에서 바로 볼 수 있게 했습니다.

초점
어려운 건 사고 점을 찍는 일이 아닙니다. 전용도로 안과 밖을 가르고, 같은 도로에 반복되는 지점을 한 화면에 모으는 일입니다.
핵심 질문: 어느 도로부터 손봐야 하는가. 표만으로는 그 답이 안 나옵니다.
네 가지에 집중했습니다.
전용도로 안팎
OSM 자전거 도로와 사고 지점을 매칭해, 전용도로 위와 밖의 위험 차이를 같은 지표로 비교합니다.
반복되는 블랙스팟
구·도로 단위로 건수·치사율·심각률을 묶어, 한 번 일어난 사고가 아니라 반복되는 구간을 앞에 둡니다.
시간대가 보이는 차트
요일×시간 히트맵, 계절·월, 상대 연령. 새벽과 출퇴근이 같은 ‘사고’로 묶이지 않게 했습니다.
데이터 위의 AI
채팅은 추측하지 않습니다. 대시보드에 올라온 집계만 넣고, 대형차·고령·교차로처럼 손댈 곳을 묻습니다.
구성
화면
- 구·기간 KPI 대시보드
- 사고·전용도로 지도
- 블랙스팟 순위
- AI 개입 채팅
파이프라인
- TAAS 자전거 사고 수집
- 좌표 변환과 구 매칭
- 전용도로 폴리곤 생성
- 인사이트 JSON 발행
프론트
- Next.js App Router
- MapLibre 지도 레이어
- 기간·구 필터
- 차트와 히트맵
모델
- OpenRouter · Gemini
- 제공 집계만 근거
- 개입 방향 대화
- 참고 표와 같이 둠
데이터 파이프라인
TAAS API에서 원본을 받고, 좌표를 맞춘 뒤 구와 도로에 붙입니다. 전용도로 폴리곤과 겹치면 인사이트 JSON이 됩니다.
다이어그램은 영어입니다. Collect, Clean, Enrich, Publish. 노드를 누르면 펼쳐집니다.
시스템
클라이언트는 세 화면입니다. 대시보드는 집계, 지도는 지점과 도로, AI 인사이트는 그 숫자로 개입을 이야기합니다.
런타임 서버는 거의 없습니다. 파이썬이 JSON을 만들고 프론트가 읽습니다. LLM은 채팅 한 경로에만 붙어 있습니다. 다이어그램은 영어입니다. Clients, Pipeline, Data. 노드를 누르면 펼쳐집니다.
제품
기간과 구를 고르면 KPI, 도로 유형, 시간·계절, 블랙스팟이 같이 바뀝니다. 전용도로 안팎 비교가 한 화면에 있습니다.
지도사고 포인트와 전용도로를 겹칩니다. 호버하면 구·도로·심각도가 나오고, 사이드 필터로 레이어를 켭니다.
AI 인사이트대형차 사망 비중, 고령 사고, 교차로, 전용도로 밖처럼 손을 대는 질문을 던집니다. 답은 올려 둔 표 안에서만 나옵니다.
