Week 09 · Civic data
예우 지도
흩어진 병역이행자 혜택을 내 주변의 실제 장소로 바꾸는 공개데이터 지도
병무청 나라사랑가게 데이터에 담긴 할인·면제 혜택을 지역, 업종, 대상과 증빙 조건으로 다시 정리했습니다. 전국 가게를 픽셀 지도에 올리고 국가보훈부 현충시설과 독립유공자 공훈록까지 연결해, ‘누가 어디에서 어떤 예우를 받을 수 있는가’를 출처와 함께 탐색하는 시민 프로젝트입니다.
- 2,654
- 나라사랑가게 병무청 상세 데이터
- 2,373
- 지도화 현충시설 국가보훈부 공개데이터
- 3축
- 혜택 필터 업종 × 대상 × 혜택
Problem
해결하려는 문제
혜택은 존재하지만 발견하기 어려웠습니다.
나라사랑가게는 현역병뿐 아니라 예비역·동원훈련 이수자·사회복무요원·병역명문가 등에게 할인과 면제를 제공합니다. 하지만 목록은 지역별로 흩어져 있고, 사용자는 현재 위치 주변에서 본인이 받을 수 있는 혜택을 빠르게 비교하기 어려웠습니다.
원본 OpenAPI만으로는 지도를 만들 수 없었습니다.
초기 OpenAPI가 제공한 것은 가게명, 주소, 전화번호와 우대유형 정도였습니다. 좌표, 할인율, 공식 업종, 대상과 증빙 조건이 없어 지도와 정밀 필터를 만들려면 공식 상세 화면의 데이터까지 별도로 수집하고 정규화해야 했습니다.
Sources
데이터와 출처
서비스 화면의 수치와 결과가 어디에서 왔는지 사용자가 다시 확인할 수 있도록, 원천 데이터와 가공 결과를 분리해서 관리합니다.
병무청 나라사랑가게
공공데이터포털 OpenAPI와 병무청 공식 상세 페이지가 사용하는 공개 JSONP 응답을 결합했습니다. 상세 데이터에서 좌표, 할인내용, 우대대상, 증빙자료, 공식 업종과 협약기간을 수집했습니다.
공공데이터포털 원천 보기 ↗국가보훈부 현충시설정보
국가수호와 독립운동 관련 현충시설의 이름, 위치, 유형과 설명을 정규화했습니다. 원천 2,380건 중 좌표 확인이 가능한 2,373건을 지도에 반영했습니다.
현충시설 원천 API ↗독립유공자 공훈록
국가보훈부가 공개한 독립유공자 공훈록을 운동계열, 훈격, 출신지역과 포상연도로 정리해 사람과 장소를 함께 탐색할 수 있도록 확장했습니다.
독립유공자 공훈록 ↗Build
직접 구현한 기술적 차별점
공식 상세 2,654건을 재현 가능한 정적 데이터로
수집 스크립트가 병무청 상세 코드를 순회하고, 가공 스크립트가 가게·지역·업종·대상·혜택 버킷을 생성합니다. 런타임에는 API 키 없이 검증된 정적 캐시를 사용해 속도와 재현성을 확보했습니다.
자유텍스트를 3축 필터로 정규화
할인 설명과 우대대상 문구를 업종 × 대상 × 혜택으로 분리했습니다. ‘무료피팅’을 무료 혜택으로 잘못 읽는 문제처럼 부분문자열이 만드는 오류를 전수 감사하고, 퍼센트 우선 판정과 문맥 기반 대상 분류로 수정했습니다.
밀도와 후함을 분리한 픽셀 지도
가게 수가 많은 지역과 평균 할인율이 높은 지역은 같지 않습니다. 지도는 밀도와 평균 할인율을 별도 색 기준으로 전환하며, 가게 하나를 하나의 픽셀로 보여줘 데이터의 분포와 공백을 동시에 드러냅니다.
AI가 UI를 직접 조작하는 예우 비서
자연어 질문을 단순 텍스트 답변으로 끝내지 않고 공개데이터 검색 결과와 지도 상태로 연결합니다. 추천이나 순위를 임의로 만들지 않고, 조건에 맞는 가게·시설·인물과 출처를 반환하도록 경계를 고정했습니다.
How to use
사용 방법
- 01
내 주변 또는 지역으로 진입합니다.
위치 권한을 사용하지 않아도 시도·시군구 검색으로 이용할 수 있으며, 동의한 경우에는 가까운 가게부터 확인합니다.
- 02
본인에게 맞는 조건을 고릅니다.
현역병, 예비역·동원, 사회복무, 병역명문가 등 대상과 업종, 5%·10%·20% 이상·정액·면제 같은 혜택을 조합합니다.
- 03
가게 상세에서 원문 조건을 확인합니다.
할인 내용, 우대대상, 필요한 증빙, 전화번호와 협약기간을 확인한 뒤 지도 서비스로 이동합니다.
- 04
현충시설과 독립유공자를 함께 탐색합니다.
현충시설 화면에서는 주제와 종류로 장소를 찾고, 공훈록에서는 운동계열·훈격·지역을 기준으로 인물을 탐색합니다.
- 05
AI 비서에게 조건을 말합니다.
‘서울에서 예비역이 받을 수 있는 음식점 혜택’처럼 질문하면 공개데이터에 근거한 후보와 출처를 돌려받습니다.
Product
실제 화면


Process
제작 과정과 결과
- 01
OpenAPI 한계 확인
2,361건의 OpenAPI 응답을 분석해 좌표·할인율·대상·업종이 없다는 사실을 확인했습니다. 가정한 스키마가 아니라 실제 응답을 기준으로 제품 범위를 다시 잡았습니다.
- 02
공식 상세 데이터 보강
병무청 상세 화면의 공개 응답을 전수 수집해 2,654건으로 확장하고 좌표, 혜택 원문, 대상, 증빙과 협약기간을 확보했습니다.
- 03
분류 오류 전수 감사
지역, 대상, 혜택, 업종과 좌표를 병렬로 감사해 광역시 자치구 누락, 무료 부분문자열 오인식, 모호한 ‘복무중’ 중복과 좌표 오류를 수정했습니다.
- 04
웹과 Apps in Toss 배포
Next.js 웹 지도에 현충시설·공훈록·AI 비서를 순차 연결하고, 정적 축약 데이터를 사용하는 Apps in Toss 미니앱으로도 확장했습니다.
Result
2,654개 혜택을 조건별로 찾을 수 있는 지도
전국 가게가 좌표와 혜택 원문을 가진 탐색 가능한 데이터가 됐습니다. 단순 목록 대신 업종·대상·혜택의 조합으로 본인에게 필요한 장소를 좁힐 수 있습니다.
Result
데이터의 오류와 한계를 함께 공개
밀도 지수의 인구 근사값, 퍼센트 할인만을 이용한 평균, 자유텍스트 파싱과 의심 좌표를 문서에 기록했습니다. 지도 팝업의 원문을 최종 판단 기준으로 유지합니다.
/ Live product
설명보다 직접 사용해 보세요.
이 페이지는 제작 배경과 데이터 출처를 설명합니다. 실제 기능과 최신 데이터는 라이브 서비스에서 확인할 수 있습니다.
nara.n2f.site서비스 열기 ↗