Files
Aislo/docs/raw/verification/2026-07-24_verify_B05_Route_Improvements.md
T
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

5.8 KiB
Raw Blame History

[검증 보고서] B05 비정규 측점 후속 및 사이드바/테이블 개선

  • 검증 일시: 2026-07-24
  • 검증자: Antigravity (Verifier / QA)
  • 검증 대상: B05 비정규 측점 후속 및 사이드바/테이블 개선 작업본

1. 검증 대상 파일 목록

🎨 프론트엔드 UI 및 스타일

  • [B05_wf2_Route_UI_Page.ts](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_UI_Page.ts)
  • [B05_wf2_Route_UI_Panel.ts](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_UI_Panel.ts)
  • [B05_wf2_Route_UI_Profile_Panel.ts](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_UI_Profile_Panel.ts)
  • [B05_wf2_Route_UI_Profile_Table.ts](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_UI_Profile_Table.ts)
  • [B05_wf2_Route_UI_IrregularStations.ts](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_UI_IrregularStations.ts)
  • [B05_wf2_Route_UI_Style.css](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_UI_Style.css)

2. 계획서 항목별 코드 대조 및 검증 결과

번호 계획서 요구사항 구현 확인 코드 및 검증 결과 상태
① 비정규 측점 선택 시 프리즈(무한 재귀) 수정
3D↔그래프↔사이드바 선택 상호 갱신의 순환 호출 차단
B05_wf2_Route_UI_Page.ts L202: selectionSyncing = false 가드 변수 추가.
L180-189 (syncIrregularSelection) 및 L222-230 (onIrregularSelect) 영역에 재진입 체크 가드(if (selectionSyncing) return; try { ... } finally { selectionSyncing = false; })를 적용하여 무한 재귀 및 브라우저 프리즈 이슈 해결 완료.
정상
② 좌측 사이드바 도움말 삭제
"계획선이란?", "최적경로란?" details 엘리먼트 제거
B05_wf2_Route_UI_Panel.ts L244, L283 영역에서 도움말 설명용 details 태그를 생성 및 추가하는 불필요한 DOM 조작 코드를 삭제하여 좌측 UI 슬림화 반영 확인. 정상
③ 곡선 L/R 양방향 입력 + 스피너 제거
L/R 상호 환산 입력(R = L × (r_m/l_m)) 및 스피너 CSS 비활성화
* B05_wf2_Route_UI_Profile_Table.ts L223-238: 곡선 R과 L 모두에 curveInput 엘리먼트를 생성하도록 확장. L 입력값 변경 시 (l * curve.r_m) / curve.l_m 수식으로 R 반경을 자동 환산하여 onCurveRadiusChange 파이프라인 태움.
* B05_wf2_Route_UI_Style.css L590-601: .b05-profile-table__no-spin 클래스에 스피너 감추기 속성(appearance: none)을 지정하여 마우스 스크롤이나 버튼 클릭 오동작 차단 처리 완료.
정상
④ 비정규 측점 잔여거리 최대값 = 측점 간격
[0, 측점간격] 범위 클램프 및 max 속성 실시간 동기화
* B05_wf2_Route_UI_IrregularStations.ts L164-167: callbacks를 통해 측점 간격을 동적으로 참조하는 intervalMax() 정의.
* L177: 잔여거리 입력값 반영 시 Math.min(Math.max(remainder, 0), intervalMax())으로 범위 제한.
* L201-206: remainderField의 focus 및 input 이벤트 시 입력창의 max 속성을 실시간 측점간격으로 갱신하는 리스너 등록 완료.
정상
⑤ 비정규 측점 선택 시 테이블 값 열 오버레이
세로 점선+라벨 제거 및 선택 시 12행 전체 열 렌더링
* B05_wf2_Route_UI_Profile_Table.ts L294-340: 기존 buildIrregularAnnotations를 제거하고, 선택된 측점이 있을 경우 buildIrregularColumn을 호출해 지반고, 계획고, 누가거리, 측점번호, 절/성토 값을 12행 구조로 생성 및 삽입하는 로직으로 변경.
* interpolateSample 선형 보간 로직을 추가하여 임의 체이너지 위치에서의 계획고/지반고 값을 노선 정렬 샘플에서 정확히 연산함.
* B05_wf2_Route_UI_Style.css L603-649: .b05-profile-table__irregular-col 및 내부 셀 오버레이 스타일 정의 완료.
정상
⑥ 좌측 컨테이너 제목 클릭 접기/펼치기
h3 클릭 시 __panel-body 토글 접힘 처리
* B05_wf2_Route_UI_Panel.ts L358-365: 루트 영역에 click 위임 리스너를 달아, h3 클릭 시 본문의 상위 섹션인 .b05-route__panel-section에 is-collapsed 클래스를 토글하도록 구현.
* B05_wf2_Route_UI_Style.css L191-193: .is-collapsed .b05-route__panel-body에 display: none을 선언하여 정상적으로 본문만 축소 확인.
정상

3. 종합 검증 의견

  1. 정밀 코드 검증 완료:

    • [PLAN.md](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/docs/raw/PLAN.md)에 기술된 6가지 개선 요구사항이 누락 없이 프론트엔드 모듈에 완벽하게 Surgical Edit(정밀 수정)되었음을 검증 완료했습니다.
    • 무한 재귀 수정 가드, 양방향 입력 연동, 잔여거리 클램프 및 실시간 max 동기화, 비정규 측점 테이블 값 열 오버레이 렌더링 등 논리 오류와 UI 편의성이 꼼꼼하게 처리되었습니다.
  2. 향후 고려사항:

    • 비정규 측점 오버레이의 경우, 종단 선형 정렬 샘플(samples)에서 계획고와 지반고를 보간하여 계산합니다. 데이터가 존재하지 않는 엣지 케이스 및 런타임 상에서 다수의 비정규 측점이 입력되었을 때의 렌더링 레이아웃 간섭 등을 E2E 및 실제 시뮬레이션 환경에서 사용자 시나리오대로 추가 모니터링하기를 권장합니다.