# 캡스톤 — 생활안전 미대응 지도

중급 본과정을 일찍 끝낸 팀을 위한 확장 과제입니다. 남은 시간이 짧으면
Step 1~4까지만 하고 발표해도 완결됩니다.

## 1. 무엇을 만드나

> **우리 지역에서 수요와 대응이 어긋난 곳을 찾고, 곳마다 무엇을 해야 하는지 정해 예산으로 옮긴다.**

과제의 핵심은 "시설이 없는 곳 찾기"가 **아닙니다.** 시설이 없는 것은 아래 다섯 경우 중 하나일 뿐입니다.

### 다섯 가지 경우 — 이 표가 캡스톤의 전부입니다

| | 상황 | 데이터에서 어떻게 아나 | 해야 할 일 | 단가 |
|---|---|---|---|---|
| **①** | 위험한데 아무것도 없다 | 반경 내 시설 0 + 사고 이력 | 신설 | 350만원 |
| **②** | 있긴 한데 딴 데를 본다 | 시설은 있으나 목적 불일치 또는 노후 | 개선 | 120만원 |
| **③** | 시설도 맞는데 사고가 계속 | 쓸 수 있는 시설이 있는데 사고 반복 | 운영·인력 | 180만원 |
| **④** | 시설 없지만 위험도 낮다 | 아동 인구 적고 사고 0건 | 이번엔 안 한다 | — |
| **⑤** | 위험 없는데 시설이 몰렸다 | 수요 낮은데 쓸 수 있는 시설 2개소 이상 | 다음에 재배치 | — |

학교에 소화기가 30개 있어도, 급식실 층에 없거나(①) 2014년에 넣어 두고 안 봤거나(②)
배선이 낡아 계속 불이 난다면(③) "충분하다"가 아닙니다. ①만 보고 "없으니 놓자"로 가면
예산의 절반을 잘못 씁니다.

산출물 세 가지.

| 산출물 | 형식 | 판단 기준 |
|---|---|---|
| 미대응 지도 웹앱 | 단일 HTML 1개 | CSV를 올리면 지점마다 조치 유형이 붙는다 |
| 1페이지 보고서 | md 또는 docx | 유형별 조치와 결정 요청 한 문장이 있다 |
| Final Audit | md | 화면 숫자와 원본 재계산값이 일치한다 |

## 2. 미션 선택 (팀당 1개)

| 미션 | 수요지점 | 시설(공급) | 사건·수요 신호 |
|---|---|---|---|
| **A. 어린이 보행안전** (모범답안 기준) | 어린이보호구역 | 방범·어린이보호 CCTV | 어린이 보행사고 |
| **B. 생활폐기물 배출거점** | 원룸·상가 밀집지 | 재활용센터·분리수거함 | 무단투기 민원 |
| **C. 우리 부서 업무** | 팀이 정의 | 팀이 정의 | 팀이 정의 |

미션 C를 고르면 데이터 조달에 시간이 더 걸립니다. 남은 시간이 짧으면 A 또는 B를 권장합니다.

## 3. 데이터 조달 — 두 경로

### Track A · 실제 공개데이터 (인터넷 가능할 때, 권장)

| 용도 | 데이터셋 | 주소 |
|---|---|---|
| 수요지점 | 전국어린이보호구역표준데이터 | https://www.data.go.kr/data/15012891/standard.do |
| 시설 | 전국CCTV표준데이터 | https://www.data.go.kr/data/15013094/standard.do |
| 시설(대안) | 전국재활용센터표준데이터 | https://www.data.go.kr/data/15021108/standard.do |
| 시설(대안) | 전국도시공원정보표준데이터 | https://www.data.go.kr/data/15012890/standard.do |
| 수요지점(대안) | 전국초중등학교위치표준데이터 | https://www.data.go.kr/data/15021148/standard.do |
| 인구 | 행정안전부 지역별(행정동) 성별 연령별 주민등록 인구수 | https://www.data.go.kr/data/15097972/fileData.do |
| 인구(웹) | 행정동별 주민등록 인구 및 세대현황 | https://jumin.mois.go.kr/statMonth.do |
| 인허가·업소 | LOCALDATA 지방행정 인허가데이터개방 | https://www.localdata.go.kr/ |
| 서울 한정 | 서울 열린데이터광장 | https://data.seoul.go.kr/ |

**주의 세 가지**

1. **컬럼명이 기관·연도마다 다릅니다.** 어떤 파일은 `위도`, 어떤 파일은 `WGS84위도`, 어떤 파일은 `Y좌표`입니다.
   그래서 Step 1이 "헤더를 읽고 매핑표를 만든다"입니다. 컬럼명을 가정하고 코드를 짜면 반드시 깨집니다.
2. **인코딩**이 CP949(euc-kr)인 파일이 아직 많습니다. 열었을 때 글자가 깨지면 인코딩부터 확인합니다.
3. **전국 데이터는 큽니다.** 반드시 관할 시군구로 먼저 필터링한 뒤 작업합니다.

### Track B · 오프라인 스냅샷 (내부망·시간 부족)

`input/` 폴더의 네 파일을 그대로 씁니다. 실제 표준데이터의 컬럼 표기를 모사한 합성 데이터이고,
좌표는 가상입니다. Track A로 갈아탈 때 프롬프트는 그대로 두고 파일만 바꾸면 됩니다.

## 4. 진행 순서

| 단계 | 하는 일 | 산출물 |
|---|---|---|
| Step 1 | 데이터 조달·헤더 매핑 | 매핑표 |
| Step 2 | 조치 유형 판정 규칙 확정 | 규칙표(반경·목적·노후·수요·긴급도) |
| Step 3 | 웹앱 PRD 작성·생성 | gapmap.html 1차 |
| Step 4 | 개선 — 예산 패널·Audit·내보내기 | gapmap.html 2차 |
| Step 5 | 예산 배정·Red Team | 포트폴리오 3안 |
| Step 6 | 보고서·Final Audit | 1페이지 + 검산표 |
| 마무리 | 팀별 발표와 질의 | — |

**역할 분담(4인 기준)** · 데이터 담당 1 / 유형·규칙 담당 1 / 앱 담당 1 / 보고·검산 담당 1.
앱 담당이 생성하는 동안 나머지는 규칙표와 보고서 뼈대를 씁니다.

## 5. 채점 루브릭 (100점)

| 항목 | 배점 | 만점 기준 |
|---|---:|---|
| 조치 유형 판정 | 25 | 다섯 유형을 숫자 규칙으로 나누고 지점마다 유형이 붙었다 |
| 지도 웹앱 | 25 | CSV 교체만으로 다시 돌고, 점의 색이 곧 조치 유형이다 |
| 예산 현실성 | 20 | 유형별 단가를 반영하고 ②개선·③운영·인력이 포함됐다 |
| 긴급도 논리 | 15 | 단순 건수가 아니라 사건 이력과 노출 규모로 순위를 냈다 |
| 매핑 · 검증 · 개인정보 | 15 | 헤더에서 매핑(5) · Final Audit 표(5) · 식별정보 없음(5) |

**감점** · 시설 신설로만 결론(−15) · 커버 반경 근거 없음(−5) · 목적·노후 미반영(−10) ·
총액 초과(−10) · 좌표 결측 건수 미공개(−5)

> **가장 큰 감점은 "미대응 19곳 → CCTV 19대"입니다.** 미대응은 신설이 필요하다는 뜻이 아니라
> 지금 대응이 없다는 뜻입니다. 무엇으로 대응할지는 유형이 정합니다.

## 6. 흔한 실패

- **"없으니 놓자"로 직행한다.** 가장 흔하고 가장 비싼 실패입니다. ②개선(120만원)과 ③운영·인력(180만원)을
  놓치고 ①신설(350만원)만 쌓으면 같은 예산으로 훨씬 적은 곳을 고칩니다.
- **컬럼명을 가정한다.** 실제 파일을 열어 보기 전에 코드를 짜면 첫 실행에서 멈춥니다.
- **반경을 정하지 않고 시작한다.** 100m인지 300m인지에 따라 결론이 뒤집힙니다. 먼저 정하고 근거를 적습니다.
- **시설 목적과 노후를 안 거른다.** 교통단속 카메라와 2014년 41만 화소 카메라를 커버로 세면
  미대응이 19곳에서 11곳으로 줄어듭니다.
- **건수만 본다.** 아동이 610명인 동과 4,400명인 동의 한 곳은 무게가 다릅니다.
- **지도를 예쁘게 만드는 데 시간을 다 쓴다.** 심사는 지도의 미관이 아니라 판정 근거를 봅니다.
