Files
Aislo/docs/raw/plans/2026-10-30_plan_594-603.md
T

23 KiB
Raw Blame History

PLAN 594603 이관 — 예정노선 화면 개편(요구 463469)

594 예정노선 저장 꼴 · 찾기 길 (요구 463 · 승인 대기 · 요구서_463)

  • 정함(브레인): 요구서_463 3장 5 · 6 · 8 · 21 · 이름 20 자 · 파일 이름 못 쓰는 글자 막음.
  • 사용자 확정: —
  • 594-1 노선 파일 꼴에 지점 이름 · 선 이름 · 노드 기록(방식 · 값) 칸 — D03_PlanAnalysis_Network.py · logic/D03_PlanAnalysis_Plan.ts · D03_PlanAnalysis_Api.ts · 옛 파일 읽힘 · 첫 커밋 뒤 597 · 598 · 599 받기 · 확인 = 시험 530_3 · 590_1 · 591_2
    • 검증완료 — 시험 530_3 · 590_1 · 591_2 통과 · typecheck 0 · 검증 D 옛 파일 GET 200 · 선 이름 · 노드 기록 · 지점 이름 [저장] 왕복 같음 · 21 자 · 「a/b」 400
  • 594-2 선 이름 = 내보내기 · D04 이름에 이음 — D04_PlanConfirm_Repository.py · 확인 = 시험 563_2 · xlsx 조각 줄 이름
    • 검증완료 — 시험 563_2 통과 · 검증 D 내보내기 zip 폴더 「2027_용화본선_p1」 · xlsx 「선」 칸 「용화본선」
  • 594-3 [저장] 몸에 기준점 · 주소 — 서버가 projects.site_* 고침 · 확인 = 등록 화면 값이 같이 바뀜
    • 검증완료 — 시험 591_2 · 검증 D [저장] 몸 기준점 → GET base.site · DB site_* 같음(용화리 530) · 되돌림 뒤 연도 줄 지문 같음
  • 594-4 공용 주소 · 장소 찾기 길(서버 VWorld) — common_util_map_router.py · B01_Dashboard_Map.py · 확인 = 새 시험 · 「용화리」 찾힘
    • 검증완료 — 시험 594_4 통과 · 실측 「용화리」 9 줄(주소 1 · 장소 8) · 「일월면 용화리」 17 줄
  • 이음(594-1 꼴): 파일 points: [{x, y, name?}] · lines[].name?: str · lines[].nodes?: (NodeRecord | null)[](꼭짓점 수와 같음 · 칸 없음 = 기록 없음) · NodeRecord = {kind: "free" | "length" | "slope" | "both", length_m: number | null, slope_pct: number | null}(kind = 그리기 칸 DrawConstraint 값 그대로) · PUT 몸 point_names?: string[](points 와 같은 차례 · points 와 함께) · site?: {lon, lat, address?}(594-3) · GET base.points[].name? · TS PlanLine.name? · PlanLine.nodes? · NodeKind · NodeRecord · NAME_MAX = 20 · nameError(name)(/ \ : * ? " < > | · 20 자 넘음 = 까닭 글 · 서버 400 같은 규칙) · 빈 이름 = 차례 이름(lineNames · 「지점 N」) · 찾기 = GET /api/map/search?q= → {items: [{kind: "address" | "place", title, address, lon, lat}]} · TS searchPlaces(q)(594-4)

595 예정노선 지형 받기 서버 (요구 463 · 승인 대기 · 요구서_463)

  • 정함(브레인): 요구서_463 3장 4 · 17 · 18.
  • 사용자 확정: 지형 격자 2 m 그대로(요구 464).
  • 595-1 지적도를 지형 일에서 뺌 · 실패 조각만 다시 — D03_PlanAnalysis_Terrain.py · D03_PlanAnalysis_Layers.py · 확인 = 받기 시간 전후 수치
    • 검증완료 — 시험 569_1 · 530_1 통과 · 실측 2 × 2 km(칸 100만) 받기 49.2 s(도엽 4매 4 s · 병합 11 s · 지형면 33 s) · 빠진 지적 몫 0.3 s(4 조각) · 실패 조각 1 개만 다시 0.52 s
  • 595-2 위치 바꿈 = 새 범위 시작 · 5 km 넘음 물음 꼴 · 칸 상한 500 만 · TM 띠 넘음 — D03_PlanAnalysis_Router.py · Terrain.py · 확인 = 시험 530_1 · 530_2
    • 검증완료 — 시험 530_1 · 530_2 통과 · 실측 6.0 km 위치 = far · reset = 새 2.0 × 2.0 km · 칸 1,528만 = 413 · 128° 넘음 = band · typecheck 0
  • 595-3 서버 다시 켜짐 = 받기 「끊김」 표시 · 진행 단계 글 — Router.py · 응답 꼴은 이 절에 적음 → 596 받기
    • 검증완료 — 시험 530_2 통과 · 실측 지형면 65 % 에서 서버 다시 켬 → percent 65 · message null · interrupted true · 단계 글 「n/5」
  • 595-4 임도망 자르기 = 기준점 ±5 km ∪ 받은 지형 · 밖뿐 = 거절 + 거리 — D03_PlanAnalysis_ForestRoad.py · 확인 = 시험 584_3 · 용화 SHP
    • 검증완료 — 시험 584_3 통과 · 실측 용화 SHP = 400 「가장 가까운 임도 117.8 km」 · 받은 범위 · 기준점 되돌림
  • 꼴(595 → 596 · 594): POST plan/terrain 몸 {margin_m, extra, center?: {lon, lat}, reset?: bool} · center = 위치 칸 캐시 기준점(둘레 ±1 km 덧 · [저장] 전까지 extent 에도 ?lon=&lat=) · 답 = {status:"accepted", running, percent, message, error} | {status:"far", distance_m, message}(받은 범위에서 5 km 넘음 → 확인 뒤 같은 몸 + reset:true = 옛 범위 버리고 center ±1 km만) | {status:"band", epsg, center_epsg, message}(다른 TM 띠 → 「노선 지움」 확인 뒤 reset:true) · 받을 칸 500 만 넘음 = 413 글 · extent 답에 max_cells · progress terrain = {running, percent, message, error, interrupted} — 끊김 = running false · percent < 100 · message null · interrupted true · 받은 적 없음 = percent 100 · 단계 글 = message 「n/5 …」 · 임도망 GET · POST 답에 bounds([서, 남, 동, 북] 경위도 · 잘린 임도 · 없으면 null) · distance_m(기준점 ~ 가장 가까운 임도) · 자르는 범위 = 기준점 ±5 km ∪ 받은 지형 · 밖뿐 = 400 글 「… 가장 가까운 임도 N km」 · 지형 받기 전에도 올림(기준점만 있으면) · 띠 넘은 뒤 [저장] = 파일 머리 epsg 바뀜 허용 몫은 594(노선 빈 때).

596 예정노선 이름 · 위치 칸 · 서클 · 등록 찾기 (요구 463 · 승인 대기 · 요구서_463)

  • 정함(브레인): 요구서_463 3장 1 · 2 · 3 · 17 · 20 · 21 · D03_PlanAnalysis_UI_Page.ts 주인.
  • 사용자 확정: —
  • 이음(596 → 597 · 598): Page 가 Points 에 넘김 = names()(지점 이름 · 차례 = points · 빈 값 = 「지점 N」) · commit(points, names, network) · center()(지도 보기 가운데 · 작업 좌표 · null 가능 = [추가] 자리) · Snap = {network, points, pointNames} · 캐시 판 4 · 서버 이름 = 594-1 base.points[].name 들어오면 Page 가 읽음 · Pieces = sub4 가 597-1 커밋에서 Page 두 줄만(createPlanPieces import · pieceCard.append(pieces.list) · refresh 의 pieces.render()).
  • 596-1 「노선 분석」 → 「예정노선」 — ui_template_locale_de.ts · B01_Dashboard_Summary.py · key_registry.ts(이름 줄만) · 확인 = 시험 547_1 · 553_4 · 화면
    • 검증완료 — 시험 547_1 · 553_4 통과 · 화면 머리 · 단계 「예정노선」(ORCA 5178)
  • 596-2 지형 칸 → 위치 칸(새 D03_PlanAnalysis_UI_Site.ts) · 찾기 → 이동 → 받기 · 임도망 [올리기] 이 칸으로 · 지도 맞춤 둘 다 · 칸 글 걷음 · 확인 = ORCA 용화 찾기 · 받기
    • 검증완료 — 「용화리」 찾기 9 줄 → 멀리 옮김 물음(32.4 km) → 새로 받기 28 s · have 새 범위 · [취소] = 위치 그대로 · 받기 1 · 임도망 거절 「가장 가까운 임도 117.8 km」 · 떠남 물음 [취소][폐기][저장] · 저장된 자리로 되돌림도 물음 뒤 복구(covered 참) · typecheck 0
  • 596-3 받기 진행 = 지도 오른쪽 아래 서클 · 끊김 = [다시 받기] — ui_template_progress.ts · .css · ui_template_ui_kit_parts.ts · 확인 = 부품 모음 화면 · 끊긴 받기 재현
    • 검증완료 — 서클 지도 오른쪽 · 아래 8 px · 「45% 지형 3/5 …」 · 끝 = 숨김 · 끊김 = 「끊김(서버 다시 켜짐 등)」 + [다시 받기] · 부품 모음 밝음 · 어두움 9 px · 누름 통과
  • 596-4 겹 다시 받기 = 받은 범위로 판정 · 등고 · 세류 범위 지문 · 보기 옮김 = 안 받음 — UI_Layers.ts · UI_LayerDefs.ts · UI_Page.ts · 확인 = 범위 늘린 뒤 겹 새로 · 보기 옮김 받기 0
    • 검증완료 — 보기 옮김(600 px · 휠) 받기 0 · 범위 바뀐 뒤 등고 · 세류 · 물 면 새로(298 → 193곳) · 주소 &v= 범위 지문
  • 596-5 등록 지도 [위성] 오른쪽 찾기 — D01_PlanRegister_UI_Page.ts · 594-4 길 · 확인 = ORCA 「용화리」 이동
    • 검증완료 — 등록 [위성] 오른쪽 찾기 칸(같은 줄) · 고름 → 기준점 · 주소 「… 용화리 · 출처 VWorld」 · 사업 지역 채움(ORCA · 헤드리스)

597 예정노선 지점 · 구역 칸 (요구 463 · 승인 대기 · 요구서_463)

  • 정함(브레인): 요구서_463 3장 5 · 6 · 7.
  • 사용자 확정: —
  • 597-1 구역 목록을 UI_Props.ts 에서 새 D03_PlanAnalysis_UI_Pieces.ts 로 떼어냄 — 첫 커밋 뒤 598 받기 · 확인 = 전후 화면 같음
  • 597-2 지점 칸 [추가] · 이름 · 경위도 고침 · 칸 글 걷음 — D03_PlanAnalysis_UI_Points.ts(칸 몫) · 594-1 꼴 · 확인 = 이름 · 좌표 [저장] 뒤 다시 열어 같음
    • 검증완료 — 시험 597_point_edit 7 · 591_2 · 585_2 · 530_3 · 553_4 통과 · typecheck 0 · 화면(Playwright · 5179 · 검증_sub4_D): [추가] 가운데 지점 · 이름 · 경도 입력 · [저장] 뒤 다시 열어 이름 · 좌표 같음 · 21 자 · 금지 글자 · 빈 이름(지점 N) 막음
  • 597-3 구역 목록 = 색 띠 · 이름 · 연도 고름 · 지움 · 측점 글 작게 — UI_Pieces.ts · 600-1 색 함수 · 확인 = 이름 · 연도 [저장] 뒤 D04 같음
    • 검증완료 — 구역 색 띠 #3df5c4 · #5aa9ff = 지도 선 색(routeColor) · 이름 · 연도 고름(선 · 구간) · 지움 묻기 → 취소 · 지움 → 되돌리기 3 번 원상 · 저장 안 하고 떠남 물음 · 밝음 · 어두움 · 이름 [저장] 뒤 같음 · 검증 D 파일 원상
    • 597-1 push — f56b5f35f · c1350a5b1 (화면 전후 같음 · 시험 585_2 591_2 통과 · typecheck 0)
    • 검증완료 — 첫 열림 [추가] 켜짐(밝음 · 어두움 · 다른 조작 없이) · 누르면 지점 2 → 3 · 되돌리기 2 · 위치 칸 찾기 9 줄 · 받기 서클 받는 동안만 · Page 698 → 647 줄(받기 지켜보기 · 둘레 상자 → 새 UI_Terrain.ts) · refresh 의 쓰는 곳 없던 yearMark 걷음 · 시험 553_4 560_4 591_2 597_point_edit 47 통과 · typecheck 0
  • 이음(597): 지점 이름 규칙 = Plan.nameError(594-1) · 지점 칸 계산 = 새 logic/D03_PlanAnalysis_PointEdit.ts(pointLabel · parseLonLat · addPoint · renamePoint · movePointTo · setLineName) · 핀 글 pointLayer(points, names) 두 번째 인자 · 지도 선 색 routeColor(차례)(paintNetwork 한 줄) · 구역 목록 인자 createPlanPieces({network, edit, editable, yearOptions, commit}) · 지움 = 지금 edit.select + edit.dropLine → 598 edit.dropRegion 들어오면 바꿈 · 좌표 손 고침 노드 따라감 = moveNodesAt → 598 붙음 함수 들어오면 바꿈 · Page 가 이름 읽기(p.name)·[저장] 몸 point_names 실어야 저장 확인(sub3)

598 예정노선 고르기 · 오버레이 · 우클릭 메뉴 (요구 463 · 승인 대기 · 요구서_463)

  • 정함(브레인): 요구서_463 3장 7 · 9 · 10 · 11 · 12 · B05 코드 안 만짐.
  • 사용자 확정: 노드 고름 판에 방식 · 값 · [지점으로] 옵션 덧(요구 464).
  • 598-1 고름 층 노드 → 선 → 구역 → 전체 · 한 오버레이 재활용 · 지움 — D03_PlanAnalysis_UI_Edit.ts · 새 UI_Select.ts · 새 logic/D03_PlanAnalysis_Select.ts · UI_Props.ts(판 몫) · 확인 = 시험 585_2
    • 검증완료 — 시험 598_1(새 · 토막 · 가운데 지움 = 구역 둘 · 노드 기록) · 585_2 통과 · typecheck 0 · ORCA 5180 노드 → 선 → 구역 → 전체 → 노드 판 머리 맞음 · 가운데 토막 지움 = main 2 + line-2 6 점 · [전체 지움] 0 → 되돌리기 2 구역 · 밝음 · 어두움
  • 598-2 우클릭 = 메뉴(지점 놓기 · 노드 지움 · 연도 마커 · 다시 긋기) · Delete — 새 UI_Menu.ts · UI_Map.ts 우클릭 줄 · key_registry.ts(Delete 줄) · 확인 = B05 우클릭 시험 그대로 · ORCA
    • 검증완료 — 우클릭 메뉴(노드 = 갈래 시작 · 노드 지움 · 지점으로 / 선 위 = 연도 구역 나눔 · 다시 긋기 · 지점 놓기) · Delete 8 → 7 점 · 시험 553_4 · 588 · B05 514_1 통과 · B05 파일 고침 0
  • 598-3 [방향 바꾸기] · [갈래 시점] 걷음 · 지점 ↔ 노드 붙음 · 따라감 — UI_Points.ts(붙음 함수 하나) · 확인 = 시험 591_2 · ORCA 12 px
    • 검증완료 — 두 단추 걷음 · 지점 끌어 노드 8 px 옆 놓음 = 노드 자리 붙음 · 노드 끌면 지점 같이 · 노드 위 핀 누름 = 노드 고름 · 시험 591_2 통과
  • 598-4 노드 판(방식 · 값 고침 · [지점으로]) — 599-1 방식 칸 함수 씀 · 확인 = 고친 값 [저장] 뒤 같음
    • 검증완료 — 노드 판 [길이 고정] = 앞 노드 20.0 m · 35 Enter = 35.0 m · 뒤 노드 그대로 · 끌어 옮김 = ⚠ 줄 · [지점으로] = 지점이 노드 자리 · 저장 안 하고 떠남 = [취소][폐기][저장] 물음
  • 이음(598) — 고름 꼴 = PlanSelection {kind: node|segment|line|all|pieces|mark …}(UI_Select.ts) · 지움 창구 = edit.dropRegion(lineId) · edit.dropAll()(597-3 목록 지움 단추가 부름) · 연도 구역 나눔 = edit.splitAt(px, py, map)(메뉴 · 599-4 단추 같이) · 599 에서 받음 = 방식 칸 함수(599-1 UI_DrawPanel.ts export · 이름 sub6 send) · [다시 긋기] 시작 함수(sub6 send) · 598-3 단추 걷음 push → sub6 branchFromEnd 지움
    • 검증완료(dev 합침 풂 4415f422f) — UI_Points 충돌 셋 양쪽 살림(메뉴 = UI_Menu · 597-2 칸 몫 그대로) · Pieces 지움 = dropRegion · Page site 같이 · 고름 강조 strokeCased · typecheck 0 · 시험 70 통과 · 화면(5180 · 밝음 · 어두움): [추가] 2 → 3 · 이름 「시점A」 · 우클릭 핀 · 빈 땅 · 노드 메뉴 맞음 · 12 px 붙음 · 오류 0

599 예정노선 긋기 · 다시 긋기 · 마커 자리 (요구 463 · 승인 대기 · 요구서_463)

  • 정함(브레인): 요구서_463 3장 8 · 9 · 10 · 16.
  • 사용자 확정: —
  • 이음(599 → 598): 방식 칸 = createDrawKindFields({ value, onChange, size? }) → { root, get, set, setDisabled }(D03_PlanAnalysis_UI_DrawPanel.ts · 값 꼴 DrawKindValue { kind, lengthM, slopePct }) · 다시 긋기 = draw.respan(lineId, fromVertex, toVertex)(from < to · 참 = 시작) · 연도 마커 = 그리기 칸 단추는 끌어 놓기(YEAR_MARK_DRAG 그대로) · 누름 놓기는 598 edit.splitAt
  • 599-1 방식 이름 「길이·기울기 고정」 · 2 × 2 · 입력 두 열 · 칸 글 걷음 — UI_Draw.ts · 새 UI_DrawPanel.ts(방식 칸 함수 export) · ui_template_segment.ts · 첫 커밋 뒤 598 받기 · 확인 = 시험 553_4
  • 599-2 노드마다 방식 · 값 기록(594-1 칸) — logic/D03_PlanAnalysis_Plan.ts · 확인 = 시험 530_3 · [저장] 뒤 기록 같음
  • 599-3 [다시 긋기] — 새 logic/D03_PlanAnalysis_Span.ts · 끝 = 원래 뒤 노드 · 다른 구역 닿음 = 갈래 · 확인 = 새 시험
  • 599-4 연도 구역 마커 → 그리기 칸 단추 · 도구줄에서 뺌 — ui_template_map_tools.ts · UI_Map.ts 도구줄 줄 · 확인 = 시험 568_1
    • 검증완료 — 시험 530_3 · 590_1 · 530_2 · 568_1 · 553_4 · 585_2 · 599_3 45 통과 · typecheck 0 · 방식 넷 2행 × 2열 · 두 열 123 px 판 안 · 노드 기록 [저장] 왕복 같음 · 다시 긋기 꼭짓점 8 → 9(뒤 노드 그대로) · 닿음 = main 꼭짓점 5 갈래 · 마커 그리기 칸 · 도구줄 깃발 0 · 떠남 물음 [취소][폐기][저장] · 밝음 · 어두움 · 노선 파일 되돌림 같음

600 예정노선 재기 · 색 · 지도 조작 (요구 463 · 승인 대기 · 요구서_463)

  • 정함(브레인): 요구서_463 3장 6 · 14 · 15 · 20.
  • 사용자 확정: —
  • 이음(sub7): routeColor(index)(@ui/ui_template_palette · 선마다 차례 색 5 · 지도 전용 --draw-map-route-0~4) · planColors()(active = 지도 전용 노랑 · measure · casing) · strokeCased()(UI_DrawPaint · 검은 테 선) — sub4 색 띠 · sub6 paintNetwork · sub5 고름 강조가 씀 · 줌 하한 = bindRouteEditNavigation 인자 minScale(안 주면 0.5 = B05 그대로) · 느린 조작 표식 = perfTime(ui_template_gl_map)
  • 600-1 지도 전용 밝은 색 + 검은 테 · 선마다 차례 색(겹 색과 가름) — ui_template_palette.ts · 테마 --draw-map-* · UI_Map.ts planColors · UI_DrawPaint.ts(paintNetwork 뺀 함수) · 첫 커밋 뒤 597 받기 · 확인 = 밝음 · 어두움 × 위성 · 음영 대비 수치
    • 검증완료 — 밝음 = 어두움 그림 같음(지도 전용 값) · 위성 켬 · 끔 × 음영 켬 · 끔 4조합 윤곽 대비(색 선 · 검은 테 중 큰 쪽) 10 번째 백분위 — 재기 노선 4.85.1 · 재기 곧음 4.85.9 · 긋기 미리보기 4.16.1 · 고름 강조 4.26.4(Edit.ts 고름 선에 strokeCased 를 써 본 뒤 · 지금 Edit.ts 는 sub5 몫이라 안 고침 · 안 쓰면 1.1 : 1) · 시험 551_2 · 562_1 통과 · 남은 몫 = sub6 paintNetwork 선마다 routeColor(index) · strokeCased · sub5 Edit.ts 고름 선 strokeCased
    • 검증완료 — 노선 테(paintNetwork · strokeCased) · 밝음 = 어두움 같음 · 위성·음영 4조합(검증 D · ORCA 5182) 본선 중앙 윤곽 대비 4.311.1 : 1 · 갈래 3.48.9 : 1 · 10 번째 백분위 위성 켬 갈래 2.32.6 · 본선 2.73.3(위성 무늬 · 글 겹침 · 어두운 갈색 바탕) · 갈래 · 보라 · 분홍 차례 색 밝게(0.35 → 0.41~0.45) · 고름(노랑 테) · 갈래 굵기 · 측점 글 그대로 · 흐림(dim) 은 코드 그대로(globalAlpha 0.3 · 화면 못 봄) · 시험 551_2(+1) · 562_1 통과 · typecheck 0
  • 600-2 거리재기 첫 점 노선 위 = 노선 따라 — UI_Measure.ts · 확인 = 새 시험 · ORCA
    • 검증완료 — 노선 위 재기 = 노선 길이 — 본선 v1→v7 902.0 m(기대 902.0 · 곧은 거리 898.1) · 갈래 끝 → 본선 v6 733.3 m(기대 733.3 · 곧은 298.6) · 선 밖 첫 점 = 곧은 408.7 m 그대로 · 시험 600_2 5건
  • 600-3 줌아웃 한도 = 예정노선만 인자(한반도) — B05_Profile_UI_RouteEdit_Input.ts(인자만) · UI_Map.ts · UI_MapGl.ts · 확인 = B05 휠 시험 그대로 · 화면 폭 수치
    • 검증완료 — 화면 폭 줌아웃 한도 596 km(검증 D · ORCA 휠 150 걸음 · 위성 한반도) · 줌인 끝 20 m 그대로 · 시험 600_3 · 401 · b05_routeedit_view · 281_1 통과 · B05 는 인자 안 줌(0.5 그대로)
  • 600-4 느린 조작 시간 표식 · 잼 · 줄일 자리 — UI_Map.ts · ui_template_gl_map.ts · 확인 = 끌기 · 휠 ms 전후
    • 검증완료 — 표식 perfTime(지도 다시 그림 · GL 카메라 · 바탕 · 위 그림 · 마우스) — 검증 D 끌기 40 걸음 한 화면 평균 2.6 ms(최대 3.4) · 휠 30 걸음 평균 4.5 ms(p95 8.4 · 최대 9.5) · 마우스 움직임 0.12 ms · 한반도 폭에서 끌기 2.2 ms · 가장 큰 몫 = MapLibre 지도 그림 75~85 %(필요한 그림이라 안 줄임 · 이 프로젝트에서 잼 재현 안 됨 · 큰 프로젝트는 globalThis.__aisloPerf = true 뒤 performance.getEntriesByType("measure")로 잼)

601 예정노선 3D 표준 횡단 · 노선망 전체 (요구 463 · 승인 대기 · 요구서_463)

  • 정함(브레인): 요구서_463 3장 13 · B05 화면 동작 그대로.
  • 사용자 확정: —
  • 601-1 예상 횡단 되살림(cdcdd5f59^:D03_PlanAnalysis/logic/D03_PlanAnalysis_Expect.ts) · 시험 544_1 되살림
    • 검증완료 — test_544_1 3 통과(파이썬 compute_cross_design 1e-9 · 갈래 머리 2.0 m 잘라 냄 · 측점 원래 누가) · typecheck 0(18fcb059a)
  • 601-2 B05 3D 뷰어에 여러 벌 덧 — B05_Profile_UI_Viewer.ts · _Viewer_Corridor.ts · _Markers.ts · 확인 = B05 3D 시험 · 화면 전후 같음
    • 검증완료 — B05 3D · D 시험 98 통과 · 검증 B 3D 전후 같음(지형 잘림 395497→416317 삼각형 · TIN 57876 · 메시 82 · 꼭짓점 858034 · 실패 0 모두 같음) · 덧 = Tin 설계 꼴 outers · roads 칸(3c098dd8c)
  • 601-3 노선망 전체 한 번에 — D03_PlanAnalysis_UI_3D.ts · UI_Page.ts open3d 몫 · 확인 = 갈래 · 교차 화면 · 열기 시간
    • 검증완료 — ORCA 5183 검증 D 본선 1047 m + 갈래 296 m 코리도 2 벌 · 측점 70 · 노면 중심 − 지반고 0.000 m(70/70) · 갈래 붙는 점 ±20 m 1 m 격자 구멍 0/1681 · 노면 이어짐(갈래 측구가 부모 측구 위를 덮음만) · 열기 처음 1.94 s + 지형 잘림 0.52 s · 다시 0.32 s + 0.55 s · 밝음 · 어두움(3c098dd8c)

602 예정노선 검증 프로젝트 용화로 (요구 463 · 승인 대기 · 요구서_463)

  • 정함(브레인): 요구서_463 3장 19 · 595-1 들어온 뒤.
  • 사용자 확정: —
  • 602-1 등록으로 「가이드_예정노선_용화」(용화리 산 77-15) · 받은 범위가 덮음 확인 · 용화 SHP 올림 확인
    • 검증완료 — 새 id 6067750f-b0a9-4d87-8179-1ced80d03212 · 폴더 43 MB(원본 가이드_예정노선 131 MB) · 지형 받기 30.7 s(도엽 2매 · 100만 칸 · covered 참 · 5187) · 용화 SHP 1 가닥 2.14 km 올림(화면 범례 · 선이 지점 1 에서 시작) · 지점 1(SHP 시점 208458, 468228) 저장 · 기준점 129.1017, 36.8128 = 경북 영양군 일월면 용화리 산 77-15
  • 602-2 옛 검증 D 아홉 휴지통 · db_management/tools_clone_project.py 로 아홉 다시 복제 · OWNERS.md D 칸 · 창마다 알림
    • 검증완료 — 옛 아홉 휴지통 200 · 가이드_예정노선_용화 6067750f 에서 아홉 복제(각 65.4 MB) · OWNERS D 칸 · 원본 줄 덧(브레인)

603 예정노선 급경사 기준 옵션 모달 (요구 466 · 467 · 승인 대기 · 요구서_463 6장)

  • 정함(브레인): 칸 옆 ° 환산 글 · 기본 = 지식DB 15 · 35 · 40° 의 % 환산 26.8 · 70.0 · 83.9 %(임도망_편성.md:20 · 타당성평가.md:59 · 노선_배치.md:29) · [기본값] · 띠 0~250 % · 겹침 막음 · 계정 화면 취향(겹 켬끔과 같은 자리) · 창 = 595 끝난 sub2 새 세션.
  • 사용자 확정: 옵션 모달 · 사용자 값 지정 · 띠 추가(요구 467) · 값 단위 %(요구 468) · 격자 2 m 유지(요구 466).
  • 603-1 서버 = 기울기 값 그림 한 장(1 % 단계) + 1 % 칸 수 — D03_PlanAnalysis_Layers.py · Router.py · 확인 = 급경사 시험 · 옛 15 · 35 · 40 그림과 같은 칸
    • 이음 — GET …/layers/raster?kind=slope → image(회색 · 칸 = 기울기 % 내림 0~250 · 255 빈 칸) · counts[251] · 취향 aislo:pref:d03.slope-bands
    • 검증완료 — 569_1 · 581_1 · 603 시험 통과 · 칸 수 합 517,980 = 유효 칸 · 검증_sub2_D 기본 비율 35.0 · 2.7 · 1.6 % (옛 35.2 · 2.7 · 1.6 %)
  • 603-2 화면 = 띠대로 색칠 · 띠 비율 즉시(서버 왕복 없음) — UI_Layers.ts(급경사 몫) · UI_LayerLegend.ts · UI_MapGl.ts(급경사 겹 몫) · 확인 = 띠 바꿈 → 색 ms
    • 검증완료 — 범위 바꿈 → 범례 710 ms · 지도 다시 칠함 29108 ms · 서버 왕복 0 · typecheck 0
  • 603-3 옵션 모달(띠 추가 · 지움 · 아래 % · 위 % · 색 · [기본값]) · 범례 급경사 줄 ⚙ — 새 D03_PlanAnalysis_UI_SlopeBands.ts · 부품 상자 모달 · 확인 = ORCA 띠 넷 → 다시 열어 같음 · 겹침 · 빈 값 막음
    • 검증완료 — 범위 넷(010 · 1015 · 15~20 · 20 % 이상) 44.8 · 5.1 · 4.7 · 45.4 % · 다시 열어 같음 · 겹침 · 빈 값 · 250 % 밖 막음 · [기본값] 되돌림 · 밝음 · 어두움 · 계정 취향 되돌림