그럴듯한 화면과 옳은 계산은
다른 문제입니다

엔진이 지켜야 할 성질을 실제 데이터로 걸어 본 결과입니다. 통과한 것만 골라 싣지 않습니다. 실패가 있으면 실패로 적습니다. 같은 자료로 다시 돌리면 같은 결과가 나옵니다 — 무작위가 섞이지 않습니다.

20
통과
전체 23건 = 불변식 16 + 역검증 2(참고) + 성능 3 + 신선도 2(참고)
0
실패
없음
2026-08-29 00:46
실행 시각
소요 3.6초
43,728
검사 대상
도로 링크 · 노드 34,598

불변식

어떤 입력에도 성립해야 하는 성질. 하나라도 깨지면 그 답은 못 믿는다

같은 입력에 같은 답
출발지 6곳 재계산 — 일치 6곳 · 최대 차이 0.000000초
무작위가 섞이면 보고서와 화면이 다른 값을 낼 수 있고, 재현·감사가 불가능해진다
위험가중을 켜면 위험 노출이 늘지 않는다
표본 4건 모두 성립
비용함수가 위험을 제대로 벌하고 있는지를 직접 확인한다
통제 구간을 지나는 경로가 하나도 없다
통제 2개소(엣지 14) · 경로 24건 검사 · 위반 0건
통제된 지하차도로 안내하면 이 서비스는 존재 이유를 잃는다
견딜 수 없는 침수 구간으로 안내하지 않는다
경로 26건 검사 · 위반 0건
휠체어 이용자에게 허용치를 넘는 구간을 안내하면 그 안내는 위험 그 자체가 된다
표고모델이 해상하는 급경사로는 안내하지 않는다
경로 26건 중 경사 상한이 걸린 11건 검사 · 90m 이상 구간 위반 0건
휠체어 이용자에게 5%를 넘는 비탈을 안내하면 그 경로는 존재하지 않는 경로다
갈 수 없는 거리의 대피소를 권하지 않는다
답 29건 검사 · 상한 초과 0건
고령자에게 1.2km 를 넘는 곳을 권하면 그 안내는 실행되지 않는다
취약지 격자와 상황판이 같은 답을 낸다
표본 3칸 모두 일치
예방 지도와 대응 화면이 다른 규칙으로 계산되면 둘 중 하나는 반드시 틀린 것이다
대피 주체에 맞는 사람을 센다
65세 이상 38,557명 (공표 40,848명 대비 5.6%) · 심한장애 4,216명 (공표 4,315명 대비 2.3%)
고령자 조건으로 계산하고 전 주민을 세면 숫자는 그럴듯해도 가리키는 대상이 다르다
재난 신호가 없으면 아무 곳도 닫지 않는다
평시 상황 통제 0개소
무차별로 닫는 규칙은 규칙이 아니다. 닫지 않는 경우가 있어야 판정이라 부를 수 있다
차량이 출발하지 못하는 지점이 없다
도로 200m 이내 표본 1,536개 · 차량 출발 불가 0개
보행로 노드에 붙으면 차량은 한 발도 못 나가 전 후보가 경로 없음이 된다. 차가 갈 곳이 없다는 뜻이 아니라 엔진이 못 찾는 것이다
가정 시나리오가 이 지역 관측소를 가리킨다
수계 묶음 4개 · 관측소 6개소 전부 그래프에 있고 빠진 관측소 없음 · 프리셋 4개 묶음 참조 정상
묶음이 다른 지역 관측소 코드를 들고 있으면 프리셋을 눌러도 아무 단계가 만들어지지 않는다. 화면은 오류 없이 「위험 신호 없음」을 낸다
모든 관측소가 판정 기준을 가진다
관측소 6개소 전부 임계 보유(잠정치 포함)
임계가 없는 관측소는 수위가 아무리 올라도 단계가 만들어지지 않는다. 화면에는 관측소로 보이지만 판정에는 참여하지 않는 상태다
관측 연계 없는·임계 없는 구간이 위험 0으로 취급되지 않는다
관측 연계 없는 지상 도로 31,823개 · 임계 없는 관측소 연계 0개(전 관측소 임계 보유) — 가정 호우에서 각각 위험>0 14,882개(46.8%) · 0개(0.0%) · 통제 0개
기준 관측소가 없거나 임계수위가 미확보라고 안전하다는 뜻이 아니다. 지형과 강우로라도 위험을 잡아야 하고, 반대로 그 어떤 구간도 근거 없이 통제되어서는 안 된다
상황보고서 읍면동 표가 실제로 채워진다
읍면동 18개 — 인구 18 · 자력대피불가 18 · 대피소 배정 합계 122(선언 122)
인구·대피소·도달불가가 각각 다른 파일에서 온다. 하나라도 이름이 어긋나면 표는 빈 칸으로 인쇄되고, 그 표가 조치 대상을 고르는 근거다
대피소 선언 통계는 목록에서 다시 센 값과 같다
선언 122개소 · 19,565명 — 재계산 122개소 · 19,565명 · 수용률 8.6%
생산자와 소비자의 세는 규칙이 어긋나면 폐쇄된 시설을 쓰는 셈이다
통제 대상 지하차도가 등록대장과 같은 개수다
그래프 2개소(장평지하차도, 코아루앞지하차도) · 국토교통 등록 2개소
남의 시군 것이 섞이거나 관내 것이 빠지면 통제 판정의 전제가 통째로 흔들린다

역검증

과거에 실제로 있었던 재난에 규칙을 그대로 걸어 본 결과

·
사건마다 다르게 반응한다
사례 1건 · 도달 단계 종류 1종 (심각) — 관측소 6개소가 2026-02 신설이라 그 이전 사건은 재현할 자료가 없음(판정 보류)
모든 사건에서 똑같이 반응하면 그것은 판정이 아니라 상수다
2026.8 거제 극한호우 — 독봉교 심각단계 도달을 실측으로 재현
고현천 독봉교 2026.08.17 01시 심각 도달 · 첨두(17일 02시, 3.83m) 1시간 전
공표 기준수위가 없는 지역에서도 이력 기반 잠정치로 같은 판정 구조가 동작함을 확인한다

성능

계산 자체에 걸리는 시간. 검사를 돌린 기기 기준이며 서버 응답시간과는 다르다

경로 1건 계산 시간
표본 72건 · 중앙값 0.0ms · p95 0.1ms
재난 상황에서 몇 초씩 기다리는 화면은 쓰이지 않는다
대피 계획 1회(후보 전수 + 대조군)
19ms — 후보마다 최소위험경로와 최단경로를 각각 계산한 값
화면이 한 번에 내놓는 답 전체를 만드는 데 걸리는 시간
도달권 1회(역방향 전수 탐색)
3ms · 대피소 12개소 기준
취약지 지도를 다시 만드는 데 드는 비용. 사전 계산이라 화면에서는 기다리지 않는다

신선도

어느 시점 자료로 계산한 결과인가

·
표고모델이 해상하지 못한 급구간을 감추지 않는다
경사 상한이 있는 경로 11건 중 6건이 90m 미만 급구간을 지난다 · 그중 최대 경사 14% — 통제 대신 통행시간을 늘려 반영하고 현장 확인 대상으로 표시함
90m 격자는 그보다 짧은 길의 경사를 담지 못한다. 막지 않기로 한 이상, 몇 건인지는 밝혀야 한다
·
계산에 쓴 자료의 생성 시점
도로망 그래프 2026-08-28 · 대피시설 2026-08-28 · 기준수위 2026-08-28 · 주민등록 인구 2026-08-26 · 행정경계 2026-08-28 · 취약지 격자 2026-08-28
언제 자료로 계산한 결과인지 모르면 그 숫자는 근거가 되지 못한다

역검증 상세

같은 규칙을 실제 재난의 실측값에 그대로 걸었을 때 그날 무엇이 나왔는가

재난수위 첨두통제 판정확보한 선행시간
2026.8 거제 극한호우2026081702 · 3.83m장평 · 코아루앞장평 3시간 · 코아루앞 3시간

거제시의 통제 대상 지하차도는 장평동의 장평지하차도·코아루앞지하차도 2개소입니다. 둘 다 OSM 에는 지하차도로 태깅되어 있지 않아, 국토교통부 등록대장 폴리곤과 도로망을 대조해 잡았습니다. 수위 관측소 6개소는 2026년 2월 신설이라 그 이전 사건은 재현할 수 없고, 대조군은 같은 해의 평시 구간입니다. 규칙이 비만 오면 닫는 것이 아니라는 것을 보이려면 닫히지 않는 사례가 있어야 합니다. 선행시간의 기준은 실제 침수 시각이 공개된 경우 그 시각, 아니면 그 관측소의 수위 첨두입니다.

운영에 드는 비용

현재 구성 그대로의 값. 모르는 것은 모른다고 적습니다

호스팅Vercel현재 이용량에서는 무료 구간실측
하천 수위·강우WAMIS공개 조회. 호출 비용 0원실측
기준수위(잠정)WAMIS 시수위 이력 재산출공표 기준수위 미확보 — 백분위 파생. 비용 0원파생
대피시설·인구행정안전부 공공데이터생활안전지도·주민등록 통계. 비용 0원실측
도로망·행정경계OpenStreetMap · 행정안전부 admdongkor출처 표기 조건. 비용 0원실측
경사(링크)국토지리정보원 수치표고모델 DEM 90m공표 수치지형자료 — 보행 경사 상한 판정. 비용 0원실측
표고·저지대Copernicus DEM GLO-30공개 라이선스. 저지대지수 파생에 사용. 비용 0원파생
지도 표시카카오맵무료 사용량 범위 내. 초과하면 유료 전환 필요확인 필요
AI 브리핑DeepSeek상황 1건당 약 1,000토큰. AI 가 멈춰도 규칙 기반으로 같은 브리핑이 나옴실측

수위·강우·기준수위처럼 판단을 좌우하는 신호는 모두 공개 자료로 확보합니다. 외부 계약이 끊겨 서비스가 멈추는 구조가 아닙니다.

다음 사람이 이어받을 수 있는가

한 사람만 아는 절차가 남아 있으면 그것은 제품이 아닙니다

데이터 적재8단계 자동 처리수집부터 도로망 구축까지 사람 손이 들어가는 단계가 없습니다
다른 도시 적용대피시설·관측소 자료 교체같은 절차를 그대로 돌리면 그 도시의 취약지 격자가 만들어집니다
검증배포 전 자동 검사이 페이지의 숫자를 만드는 검사입니다. 하나라도 실패하면 배포가 멈춥니다
사건 추가실측 이력 등록관측 이력이 있는 재난은 한 건 등록으로 사례가 늘어납니다
판정 규칙한 곳에서만 정합니다통제 구간과 구간 위험도의 기준이 한 곳에 있어, 화면·보고서·격자가 같은 답을 냅니다

이 검사가 실제로 잡아낸 것

「갈 수 없는 거리의 대피소를 권하지 않는다」 검사가 처음 실행에서 실패했습니다. 대피소 후보를 직선거리로 골라 놓고 실제 보행거리는 확인하지 않아, 「최대 이동거리 2,500m」 라고 적어 두고 2,795m 를 걷게 하는 안내가 나오고 있었습니다. 같은 이유로 예방 화면의 취약지 격자와 대응 화면의 판정이 한 칸에서 어긋났습니다. 경로 탐색에 이동거리 상한을 넣어 두 화면이 같은 규칙을 쓰도록 고쳤고, 지금은 두 검사 모두 통과합니다.

화면만 보고는 알 수 없는 종류의 결함입니다. 검사를 만들지 않았다면 그대로 남았을 것입니다.

통과한 검사만 골라 싣지 않는다. 실패가 있으면 실패로 적고 그대로 공개한다. 성능은 이 스크립트를 돌린 기기 기준이며 서버 응답시간과는 다르다. 검사 표본 출발지 — 거제시청(고현동) · 옥포2동(산사태 발생지 인근) · 장평동(장평지하차도·고현천변) · 연초면 오비리(고립 구조 지점) · 둔덕면(서부 농촌) · 하청면 칠천도(연륙 부속섬).