Files
GhiVideo/docs/history/2026-06-30_1610_KMZ필수화-CSV폴백제거-누락경고.md
b23042andClaude Opus 4.8 e0ff5dd6d0 feat: 지도 나침반(OSM/위성) 추가 + 측점 검색·마커 정확도 개선 + POI/영상 수정
- 지도 기반 나침반(노스업, 현재위치, 시야 역삼각형): 호버 확대·휠 줌·클릭 위성전환, OSM/Esri 타일 서버 프록시(/api/tile)
- 스테이션 검색: 실제 측점(chain) 기준 이동, 없으면 '측점 없음' 안내
- 역 마커: 직교 투영 측점 일치 시에만 표시, 미도착 종점은 추가 방식
- POI 팝업 겹침/재등장·라벨 정합 수정
- 영상 fps 데이터 기반 자동 산출
- 기술/발표/쉬운설명 문서 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 18:03:30 +09:00

2.6 KiB

KMZ 필수화 — building POI/구조물 CSV 폴백 제거 + 누락 경고

배경 / 결정

  • 정책: KMZ는 항상 필수. 없으면 "데이터 누락"으로 보고 재구축해서 KMZ를 전달받음.
  • 기존 코드는 KMZ 없으면 조용히 building CSV로 폴백 → 불완전 데이터가 에러 없이 통과(정책과 상충).
  • 사용자 선택: "경고만 표시" (앱은 계속 동작, CSV POI/구조물 폴백 제거, 측점은 유지).

변경 내용

1. geoData.ts — 죽은 파서 제거 + KMZ 단일 소스화

  • 삭제: parsePois, parseStructures, parseHistoricStations, parseAccessDoors + 전용 헬퍼 rowProps, cleanHeader
  • loadFolderGeoData:
    • Promise.all에서 위 4개 파서 호출 제거(헛수고 파싱 제거)
    • useKmz 분기 → kmzMissing 판정으로 교체: !kmz || (pois==0 && structures==0)
    • KMZ 누락 시 console.warn, 정상 시 console.log
    • pois = kmz?.pois ?? [], baseStructures = kmz?.structures ?? []
    • structures에서 historicStations concat 제거 → 역사 중복 위험 제거(역사는 KMZ KAKAO_RAIL에서만 생성)
    • 반환값에 kmzMissing 추가
  • 유지: parseStations(측점), parseDroneFrames, parseKmz, mergeStructures, parseRouteMeta, parsePoiOverrides, buildCenterlineFromStations 및 공용 헬퍼(makeFieldIndexer/cell/readCsv/findBuildingFile/mmssToSeconds 등)

2. 타입/스토어 (kmzMissing 전파)

3. UI 경고

  • VideoPlayer.tsx handleSelectFolder: 로드 후 kmzMissing && (stations||frames 존재)alert로 "KMZ 누락 → 재구축 필요(측점·드론은 정상)" 안내

4. 문서 갱신

검증

  • tsc --noEmit (node v20.20.2): 통과 (시스템 기본 node v12라 nvm node20 사용)
  • npm run build (tsc && vite build): 성공 (219 modules, 빌드 1.49s)

비고

  • 측점.csv(루트)는 KMZ에 없어 그대로 필수 — 빠지면 스테이션바/체이니지/중심선 동작 불가.
  • 빌드 산출물 반영됨 → 55000 PM2 서빙 시 재시작/재배포 필요할 수 있음.

소요 시간: 25분 Context 사용량: input 175k / output 22k tokens