chore(계획): PLAN 616 · 620 이관 — 0차곡 첫 번 0.4 s · 급경사 칠하기 · B06 관 옵션 칸 까닭 분석

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015uTVHHDv583hbLQAFeBmd9
This commit is contained in:
2026-10-31 19:38:59 +09:00
co-authored by Claude Opus 5.5
parent 4603a08c6c
commit 4110257460
+22
View File
@@ -0,0 +1,22 @@
# PLAN 616 · 620 이관 — 급경사 · 0차곡 첫 계산 빠르게 · B06 관 옵션 칸 까닭 분석(요구 497 · 529)
## 616 급경사 · 0차곡 첫 계산 빠르게 (요구 497 · 529 승인 · 진행)
- 근거: `docs/raw/요구_1025/_분석_497_급경사_0차곡_속도.md` — 급경사 = 이미 빠름(처음 0.2~0.7 s · 화면 0.75 s) · 0차곡 = 범위 바뀐 첫 번만 느림(D 3.5 s · 용화 11.9 s · 둘째 0.3~0.5 s) · 옛 지형 프로젝트(10-30 21:55 앞 받음)는 창고 안 씀 → 미리 계산 끝나도 안 빨라짐 · 0차곡 첫 셈이 서버 한 프로세스를 붙잡아 급경사 0.2 → 2.6 s · 화면 쪽 느림 없음.
- [x] 616-1 0차곡 셈 = 창고 격자에서(옛 격자 갈래 걷음 · `D03_PlanAnalysis_ZeroOrder.py:218 · 293`) — 확인 = 용화 11.9 → 약 3.7 s · 결과 선 전후 대조
- 검증완료 — 용화(창고 격자) 4,585 / 4,584 가닥 · 230.89 / 230.84 km · 검증 D(옛 격자 통째 15.0 s) 5,619 / 5,650 가닥(−0.5 %) · 273.1 / 277.9 km(−1.7 % · 창고 지형 대 사업 laplace 원천 차) · 누적 열쇠 판 그대로(전국 누적 다시 셈 없음) · 파생 판 3 (66f9c68a1)
- [x] 616-2 0차곡 선을 도엽마다 미리 뽑아 창고에(`zero_lines_<epsg>`) · 요청 = 이어 붙여 자름 · 전국 미리 계산 단계에 덧 — 확인 = 선 뽑기 1.9 s → 0.1~0.3 s
- 검증완료 — 용화 둘레 100 도엽 zero_lines(일꾼 3 · 155 s · 장당 가운데 4.8 s · 29 KB → 전국 약 0.4 GB) · 함수 용화 0.18 s · D 0.24~0.29 s · HTTP 0차곡 첫 번 용화 0.41 · D 0.61 s · 둘째 0.30 · 0.41 s · 기본 임계는 파생 저장본 안 씀 · 시험 = 도엽 선 이어 붙임 대 상자 통째 1 % 안 · 겹침 0 (66f9c68a1)
- 쓰는 법 — 전국 = `tools/precompute_terrain.py --steps zero_lines --workers N`(두 PC zero 단계 다 끝난 뒤 · 이웃 누적 없으면 그 이웃 빼고 셈 · 나중에 이웃 누적이 생기면 요청 때 일꾼이 그 도엽 선 다시)
- [x] 616-3 무거운 첫 셈을 서버 본체 밖(프로세스 풀) — 확인 = 0차곡 계산 중 급경사 요청 2.6 → 0.2 s
- 검증완료 — 0차곡 일꾼 셈(임계 1003 · 5.06 s) 도중 급경사 0.23 · 0.09 · 0.07 · 0.10 s · 일꾼 하나 113 MB(main.py 안 읽음) · 일꾼 죽임 → 다음 요청 새로 띄움(6.6 s) · 서버 다시 켬 → 옛 일꾼 따라 끝남 · 급경사 첫 셈은 스레드 그대로(0.2~0.7 s · numpy · PIL 이 GIL 놓음 · 일꾼에 0차곡 뒤 줄 서면 더 느림) (5d6d7bbb8)
- [x] 616-4 급경사 칠하기 = 기다림 없는 길(toBlob 대신) · 값 그림 바이너리 — 확인 = 최대 1 s 대기 없음 · 전송 −23 %
- 검증완료 — 멈춘 화면 범위 [적용] 다시 칠함 158~197 ms(옛 toBlob 최대 1,046 ms) · 급경사 응답 = PNG 바이트 용화 1.81 MB · D 2.50 MB(옛 base64 JSON 본문 −25 % · 전송은 PNG 가 이미 압축이라 옛 gzip JSON 과 거의 같음 −1 % · 「−23 %」는 base64 를 gzip 이 되돌린 몫) · 서버 gzip 0.1 s 덜 · 칸 수 4,432,752 서버와 같음 · ORCA 검증_sub2_D 급경사 · 0차곡 5,619 가닥 보임 · 시험 608 · 612 · 617-1 · 618 · 584-1 · 616 51 통과 · 569-1 · 581-1 19 통과 · typecheck 0 (5d6d7bbb8)
- 이음 — `GET …/plan/layers/raster?kind=slope` = `image/png` + 머리 `X-Plan-Raster`(JSON · counts · box · box_m · width · height) · `fetchPlanRaster` 가 `image` = blob 주소로 돌려줌(겉 꼴 그대로) · 음영기복 · 산사태 = JSON 그대로
- 뒤로: 0차곡 · 급경사 보는 화면 조각(넓은 범위용) = 615 전후 결과 보고 정함.
## 620 B06 [저장] 때 관 지점 옛 옵션 칸 지워짐 (sub8 알림 · 분석 끝 = `_분석_620` · 고침은 623 으로)
- 근거: `docs/raw/요구_내역서/_점검_통합길.md` 3장 ⑩ — 집수정 `inlet_revet_*`(돌쌓기 10 m)가 [저장] 뒤 사라지고 동물이동형 기본 true 들어감 · B 그룹(요구 491 조심) · 사용자 승인 뒤 착수.
- [x] 620-1 까닭 찾기 — 데이터 손실 아님 · 까닭 79ca22082 + d5d9c5f66 · 고칠 자리 `B04_PreProcess_Router_Basins.py` `_apply_new_defaults` → 623