- `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>
5.8 KiB
5.8 KiB
[검증 보고서] 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. 종합 검증 의견
-
정밀 코드 검증 완료:
- [PLAN.md](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/docs/raw/PLAN.md)에 기술된 6가지 개선 요구사항이 누락 없이 프론트엔드 모듈에 완벽하게 Surgical Edit(정밀 수정)되었음을 검증 완료했습니다.
- 무한 재귀 수정 가드, 양방향 입력 연동, 잔여거리 클램프 및 실시간 max 동기화, 비정규 측점 테이블 값 열 오버레이 렌더링 등 논리 오류와 UI 편의성이 꼼꼼하게 처리되었습니다.
-
향후 고려사항:
- 비정규 측점 오버레이의 경우, 종단 선형 정렬 샘플(
samples)에서 계획고와 지반고를 보간하여 계산합니다. 데이터가 존재하지 않는 엣지 케이스 및 런타임 상에서 다수의 비정규 측점이 입력되었을 때의 렌더링 레이아웃 간섭 등을 E2E 및 실제 시뮬레이션 환경에서 사용자 시나리오대로 추가 모니터링하기를 권장합니다.
- 비정규 측점 오버레이의 경우, 종단 선형 정렬 샘플(