Files
Aislo/docs/raw/verification/2026-07-28_verify_B04_Map_Performance.md
eomsangdonandClaude Opus 5 eb30b774f8 chore(docs): docs 폴더 git 추적 전환 · PLAN·OWNERS 최상위 이관
- `docs/` 를 .gitignore 에서 빼 git 추적 대상으로 전환 (위키·완료 이력·검증 기록)
- `docs/raw/PLAN.md` · `docs/raw/OWNERS.md` 를 저장소 최상위로 이동 후 .gitignore 에 등록
  — 창끼리 공유하되 저장소에는 안 올리는 장부
- 살아 있는 경로 참조 7개 파일 정정 (아카이브 107건은 그때 사실이라 그대로 둠)
- graphify 날짜별 산출물(`docs/wiki/graphify-out/20*/`) 제외 — `graphify update` 가 다시 만듦

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

3.3 KiB

검증 보고서: B04 하단 2D 지도 도엽 등고선 렌더링 성능 개선

  • 검증 일시: 2026-07-28
  • 검증자: 코드 검증자 (Verifier / QA)
  • 대상 기능: B04 하단 2D 지도 Canvas 렌더링 최적화 및 뷰포트/마우스 제스처 개선
  • 관련 파일:
    • file:///D:/02_Software_Prog/%EC%9E%84%EB%8F%84%EC%84%A4%EA%B3%84%20%EB%B0%8F%20%EA%B2%AC%EC%A0%81%EC%9E%90%EB%8F%99%ED%99%94%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%20%EA%B0%9C%EB%B0%9C/B04_wf1_Surface/B04_wf1_Surface_UI_MapRender.ts (423줄, 신규)
    • file:///D:/02_Software_Prog/%EC%9E%84%EB%8F%84%EC%84%A4%EA%B3%84%20%EB%B0%8F%20%EA%B2%AC%EC%A0%81%EC%9E%90%EB%8F%99%ED%99%94%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%20%EA%B0%9C%EB%B0%9C/B04_wf1_Surface/B04_wf1_Surface_UI_MapViewer.ts (438줄)

1. 검증 결과 요약

검증 항목 계획 요구사항 코드 구현 상태 검증 결과
700줄 파일 제약 단일 파일 700줄 이하 준수 MapRender.ts (423줄), MapViewer.ts (438줄) PASS
사전 투영 캐싱 GeoJSON 로드 시 정규화 좌표(0~1) 1회 투영 projectRing, prepareLayer 내 Float64Array 캐싱 PASS
정점당 getMapRect 제거 프레임당 1회 어파인 계수(affineOf) 계산 후 재사용 affineOf(view) 생성 후 coords[i] * ax + bx 변환 PASS
rAF 스로틀링 팬/줌/리사이즈 이벤트 스로틀 및 dispose 처리 scheduleDraw() rAF 적용 및 cancelAnimationFrame PASS
캔버스 재할당 최적화 width/height/dpr 변경 시에만 버퍼 크기 수정 line 287-295 조건문 제어 PASS
뷰포트 컬링 32px 마진 기반 화면 밖 피처/라벨 스킵 isVisible() 함수 구현 PASS
동적 LOD 화면 오차 0.75px 미만 정점 생략 computeDpWeightsLOD_PX 정점 렌더링 제어 PASS
마우스 커서 중심 줌 휠 조작 시 커서 지점 고정 offset 보정 wheel 이벤트 내 커서 고정 수학식 적용 PASS
중간 버튼 드래그 방지 휠 클릭 드래그 시 브라우저 자동스크롤 차단 event.button === 1 일 때 preventDefault() PASS

2. 세부 검증 내역

  1. 렌더 엔진 분리 및 라인 수 제약:

    • B04_wf1_Surface_UI_MapRender.ts (423줄)에 pure render 함수 및 사전 투영/LOD 알고리즘을 모듈화하여 분리.
    • B04_wf1_Surface_UI_MapViewer.ts (438줄)에 DOM 제어, 이벤트 수신 및 상태 관리 배치.
    • 둘 다 700줄 제한을 충족하며 Surgical Edit가 준수됨.
  2. 최적화 및 실무 적합성:

    • 원본 GeoJSON/DB 가공 없이 프론트엔드 렌더링 계층에서 정규화 좌표 사전 투영 및 뷰포트 컬링, rAF 제어를 이뤄냄.
    • 비트맵 캐시 방식 시도 후 사용자 육안 확인에 따라 롤백하고, rAF 직접 렌더 + Douglas-Peucker LOD 조합으로 완전한 비주얼 품질과 무손실 해상도를 보장함.
    • 휠 줌 시 마우스 커서 위치 기준 zoom, 휠 클릭(마우스 3번 버튼) 드래그 간섭 예방 등 실무 UI 디테일 개선 반영 확인.

3. 종합 의견

계획서(PLAN.md)상의 모든 체크리스트 및 요구조건이 정밀하고 완벽하게 코드상에 반영되었음을 확인하였습니다.