# S8. B04 산출물 재활용 + B05 수신량 절감 (완료 계획서) > 이관 이력: 2026-08-01 검증 완료 후 `docs/raw/PLAN.md` 1부에서 `docs/raw/plans/2026-08-01_plan_S8_B05_data_saving.md`로 최종 이관 백업됨. > 검증 보고서: `docs/raw/verification/2026-08-01_verify_S8_B05_data_saving.md` --- ### S8. B04 산출물 재활용 + B05 수신량 절감 (2026-08-01 요구) **배경 (실측, 프로젝트 `acb9170b-…` 기준)** B05 진입 시 약 69MB를 받는다. 새로고침해도 65MB를 다시 받는다(보관함이 덮는 것은 3D 모델+등고선 4MB뿐). | 받는 것 | 크기 | 시점 | 현재 재사용 | |---|---|---|---| | 도엽 등고선 geojson | 34.2MB | 진입 즉시 | ETag / 보관함 | | 포인트클라우드 JSON | 23.8MB | 5단계 | 제거 (경량 API 대체) | | 위성사진 PNG | 4.2MB | 진입 즉시 | ETag / 자체 캐시 | | 도엽 하천중심선 | 1.4MB | 진입 즉시 | ETag / 보관함 | | 3D 모델 preview | 2.9MB | 5단계 | 보관함 | | 3D 등고선 | 1.3MB | 5단계 | 보관함 | | 종단·횡단 detail | 0.9MB | 4단계 | 제외 (실시간성 보장) | --- #### S8-1. 확정 지표면 요약 API 신설 + B05 포인트클라우드 24MB 제거 - [x] 신규 `GET /projects/{id}/surface/confirmed` (`B04_wf1_Surface_Router.py:372`, 응답 0.4KB / 0.018초) - [x] `B05_wf2_Route_UI_Page.ts` 의 `fetchSurfacePointCloud`(23.8MB) → `fetchConfirmedSurface`로 교체 - [x] B04 좌측 포인트뷰어(관리자 전용)는 기존 포인트클라우드 API 유지 - [x] 완료 조건: B05 진입 네트워크 목록에 `surface/point-cloud` 없음 (코드상 호출 제거 확인) #### S8-2. 모델 확정 = 하류 단계의 유일한 기준 (확정 시점 동기화) - [x] 준비 여부 판정이 프로젝트 번호만 본다 → 표식을 `{projectId}|{signature}`로 변경 및 signature 대조 - [x] 준비화면이 평활 여부를 짐작한다 → `preloadSurfaceAssets`가 `fetchConfirmedSurface`의 확정값 사용 - [x] B04 재진입 초기 선택 확정값 동기화 및 `TerrainViewer.setSmoothing()` 추가 - [x] 확정 직후 `clearPreloadMark()` + `clearRouteLatestCache()`로 캐시 무효화 - [x] 완료 조건 (사용자 화면 확인 완료): B04 다른 필터·방식 확정 시 B05 지형·등고선 동기화, 대시보드 왕복·새 브라우저·단계 이동 시 준비화면 정상 작동 #### S8-3. 도엽 등고선 전송 방식 개선 - [x] 분석용 원본 `도엽_등고선.geojson` 유지 및 화면 공유 (크롭 철회 수용) - [x] `/geojson` 응답 파일 바이트 direct 전송 + ETag 적용 (서버 2.0s -> 0.006s) - [x] 프론트엔드 브라우저 보관함 저장 (`fetchCachedSheetLayer`) - [x] 완료 조건(사용자 확인): 첫 진입 1회만 받고 새로고침 시 재수신 없음, 지도 표시 정상 유지 #### S8-4. 위성사진 범위 확대 + 재사용 - [x] 덮을 범위 = LAS bounds ∪ 계획노선 범위 - [x] 주변 셀 타일 여유 `SURFACE_MAP_MARGIN_TILES = 3` 지정 - [x] `_t=` 타임스탬프 제거 및 `/vworld-map` ETag 적용 - [x] 완료 조건(사용자 확인): 계획노선 전체가 위성사진 안에 포함 및 새로고침 시 사진 재수신 없음 확인 #### S8-5. 브라우저 보관함 대상 확장 (포인트클라우드 제외) - [x] 보관함 대상 추가: 도엽 등고선·하천중심선, 위성사진 - [x] 종단·횡단 detail 제외 (계획고 변경 반영 보장) - [x] B11 준비화면 사전 선적재 포함 - [x] 완료 조건(사용자 확인): B05 새로고침 시 수신량 대폭 절감 확인 #### S8-6. 도엽 기준 선정: LAS 중심 → 계획노선 시·종점 - [x] 우선순위: 노선 CSV 시·종점 -> LAS bounds 중심 - [x] 시·종점 걸침 시 합집합 9~12매 선정 (`neighbors_for_points()`) - [x] 완료 조건: 표본 프로젝트 선정 결과 회귀 없음 확인 완료 #### S8-7. 도엽 잔재 zip 정리 - [x] 비대상 zip 삭제 및 `map_sheets_index.json` 정리 (`prune_sheets()`) - [x] 완료 조건: 30매 중 비대상 21매 정분 정리 확인 완료 --- ### S8 구현 결과 및 검증 완결 (2026-08-01) | 항목 | 조치 | 실측 | |---|---|---| | S8-1 | `GET /surface/confirmed` 신설, B05 포인트클라우드 대체 | 23.8MB → 0.4KB, 0.018초 | | S8-2 | 준비 표식 signature 적용, B04 초기값 확정본 동기화 | 동기화 정상 | | S8-3 | 도엽 산출물 원본 그대로 + ETag 파일 전송 | 서버 2.0초 → 0.006초, 304 응답 | | S8-4 | 배경 범위 라이다 ∪ 노선 + 타일 여유 3, `_t=` 제거 | 731×853m → 972×1001m | | S8-5 | 도엽 레이어 보관함 경유 + 준비화면 선적재 | 수신량 대폭 절감 확인 | | S8-6 | 도엽 기준 = 노선 시·종점 우선 | 회귀 없음, 걸침 12~14매 | | S8-7 | 선정 외 도엽 zip 정리 | 30매 → 9매(21매 삭제) 정리 완료 | **완료 확인 (사용자 검증 완결)** - [x] B05 진입·새로고침 속도, 배수유역도 배경(도엽 등고선) 정상 표시 - [x] B04 다른 필터·표현 확정 시 B05 지형 동기화 완료 - [x] 대시보드 왕복·새 브라우저·단계 이동 시 준비화면 정상 동작 - [x] B04 [배수유역 재산정] 버튼 및 재분석(rebuild) 동작 검증 완결