- `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>
9.3 KiB
9.3 KiB
[검증 보고서] B05 종단면도 정렬 개편 및 비정규 측점(구조물) 구현
- 검증 일시: 2026-07-24
- 검증자: Antigravity (Verifier / QA)
- 검증 대상: B05 종단면도 정렬 개편 (완료 건) 및 비정규 측점 Phase 1~4 구현 코드
1. 검증 대상 파일 목록
🎨 프론트엔드 UI 및 스타일
- [B05_wf2_Route_UI_Style.css](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_UI_Style.css)
- [B06_wf3_ProfileCross_UI_Longitudinal.ts](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B06_wf3_ProfileCross/B06_wf3_ProfileCross_UI_Longitudinal.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_Panel.ts](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_UI_Panel.ts)
- [B05_wf2_Route_UI_Page.ts](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_UI_Page.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_Engine_Sections_Core.py](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_Engine_Sections_Core.py)
- [B05_wf2_Route_Engine_Sections.py](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_Engine_Sections.py)
- [B05_wf2_Route_Schema.py](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_Schema.py)
- [B05_wf2_Route_Router.py](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/B05_wf2_Route/B05_wf2_Route_Router.py)
2. 계획서 항목별 코드 대조 및 검증 결과
🟩 B05 종단면도 테이블·그래프 정렬 개편
| 번호 | 계획서 요구사항 | 구현 확인 코드 및 검증 결과 | 상태 |
|---|---|---|---|
| ① | 스크롤 시 좌측 여백 누출 차단.b05-route-profile__body의 padding-left를 0으로 낮춤. |
B05_wf2_Route_UI_Style.css L65-66: padding-left: 0; padding-right: 15px; 확인. 가로 스크롤 시 sticky 이름표 왼쪽 틈새로 값 노출 방지 처리 완료. |
정상 |
| ② | 그래프 시작점 우측 이동 (0측점 정렬) 데이터 매핑 오프셋 PROFILE_ORIGIN_OFFSET_PX = STATION_SPACING_PX / 2 설정. 그래프도 새 originOffsetPx를 인자로 받아 X축 일치. |
B06_wf3_ProfileCross_UI_Longitudinal.ts L93: originOffsetPx = 0 파라미터 추가 확인.B05_wf2_Route_UI_Profile_Panel.ts L221: computeProfileLayout 반환값의 originOffset을 통해 originOffsetPx를 그래프 렌더러에 주입하고, x 매핑에 반영하는 구조 정상 작동 확인. |
정상 |
| ③ | 측점 간격 최소폭(기준×1.5) + 폭맞춤 병행computeProfileLayout() 구현. 화면 크기에 맞춘 유동적 셀 폭 및 오프셋 확대 계산. |
B05_wf2_Route_UI_Profile_Panel.ts L207-222: computeProfileLayout 함수 구현 확인. minWidth 기준 설정 및 가폭 맞춤 분할 비율 계산 로직 완비. |
정상 |
| ⑤ | 그래프 X축 측점 이름 복원 축 제목 숨김 및 측점 라벨 상향 배치( transform: translateY(-9px)). |
B05_wf2_Route_UI_Style.css L108-110: .b06-chart__station-label에 transform: translateY(-9px) 스타일 적용 확인. |
정상 |
| ⑥ | 사이드바 "계획선 설계" 슬림화주 진행방향 및 균형 구역 길이 제거. payload 필드 제외. |
B05_wf2_Route_UI_Panel.ts & RoutePanelValues 스키마에서 두 필드가 정상 제외되었으며, B05_wf2_Route_UI_Page.ts에서 서버 요청 및 restore 매핑에서 제외되었음을 확인. |
정상 |
| ⑦ | 테이블 종점 열 우측 이동 off-grid 종점 측점 값·곡선 셀 우측 클램핑 처리. |
B05_wf2_Route_UI_Profile_Table.ts L108-123: stationCellCenters 함수를 구현하여 마지막 측점 인덱스에서 centers[last - 1] + cellWidth와의 겹침을 감지하여 오른쪽으로 밀어 클램프하는 로직 확인. |
정상 |
| ⑧ | 하단 패널 스크롤바 전역 통일 하단 종단면도 패널의 12px 두꺼운 스크롤바 커스텀 오버라이드 스타일 제거. |
B05_wf2_Route_UI_Style.css L69-70 주석에 설명된 대로, 두꺼운 막대 커스텀 CSS가 삭제되어 테마 *::-webkit-scrollbar(8px)를 정상적으로 상속받음. |
정상 |
| ⑨ | 비정규 측점 사이드바 컨테이너(초안) | Phase 1의 구조화 UI 모듈인 B05_wf2_Route_UI_IrregularStations.ts로 온전히 대체 확인. |
정상 |
| ⑩ | 그래프:테이블 비율 4:6 + 글자 여백 축소CHART_HEIGHT_RATIO 0.4 설정. 폰트 비율 0.64, padding 2px 축소. |
B05_wf2_Route_UI_Profile_Panel.ts L55: CHART_HEIGHT_RATIO = 0.4 확인.B05_wf2_Route_UI_Profile_Table.ts L57-63: FONT_PER_ROW_HEIGHT = 0.64, CELL_PADDING_PX = 2 설정 확인. |
정상 |
| ⑪ | 그래프 편집 버튼 상시 노출 및 색상 개선 hover 노출 제거, 상시 opacity 0.9 적용. 밝은 글자색 지정. |
B05_wf2_Route_UI_Style.css L635-692: .b05-profile-edit__btn에 opacity: 0.9 부여 및 hover/focus 상태에서 opacity: 1 설정 완료 확인. |
정상 |
🟨 비정규 측점(구조물 측점) — Phase 1~4 구현
| 단계 | 계획서 요구사항 | 구현 확인 코드 및 검증 결과 | 상태 |
|---|---|---|---|
| Phase 1 | 사이드바 구조화 입력_UI_IrregularStations.ts 신규 모듈. 목록 폼 제어 및 클라이언트 보관. |
B05_wf2_Route_UI_IrregularStations.ts 파일 신규 생성 완료. createIrregularStationsSection 함수를 통해 추가/수정/삭제/리셋 UI가 바인딩되어 있으며, onChange 콜백으로 Page로 전파됨 확인. |
정상 |
| Phase 2 | 그래프·3D 프리뷰SectionStation.kind="irregular" 추가. 선형 보간으로 마커 근사, 파선 세로선 렌더링. |
B05_wf2_Route_UI_Page.ts L112-161: interpolateIrregularStations 함수 구현 확인. 규칙 격자 측점들 사이로 비정규 chainage를 선형보간하여 3D 위치값을 계산함.B05_wf2_Route_UI_Style.css L113-117: .b06-chart__station-line--irregular 파선 스타일 확인. |
정상 |
| Phase 3 | 테이블 주석형 표기 규칙 격자 보존 및 비정규 측점 주석층 오버레이. 스태거(2행) 배치로 중첩 방지. |
B05_wf2_Route_UI_Profile_Table.ts L284-313: buildIrregularAnnotations 함수 구현 확인. cellWidth 임계치 미만일 경우 is-row-0 및 is-row-1 클래스를 교차 분배하여 2슬롯 스태거 배치 처리함. |
정상 |
| Phase 4 | 경로 확정 시 횡단 생성RouteConfirmRequest 비정규 목록 포함, 확정 시 generate_irregular_sections 비치명적 호출 및 종단 파일 병합. |
* Core: B05_wf2_Route_Engine_Sections_Core.py L35, 140-148: SectionGenerationOptions에 extra_stations 추가 및 격자 배열과의 np.unique 정렬 병합 로직 확인.* Engine: B05_wf2_Route_Engine_Sections.py L200-252: generate_irregular_sections 함수 구현 완료. 비정규 측점만 골라 cross_*.json으로 파일 저장 및 목록 반환.* Schema: B05_wf2_Route_Schema.py L226-261: IrregularStationInput 및 RouteConfirmRequest 비정규 목록 옵션 확인.* Router: B05_wf2_Route_Router.py L131-187: _merge_irregular_into_longitudinal 및 _append_irregular_cross_sections 구현 확인. confirm_latest_route 비동기 라우터에서 비치명적으로 실행하는 트라이-캐치 구조 완비. |
정상 |
3. 종합 검증 의견
-
정밀 코드 검증 완료:
- 기획 단계에서 수립된 [PLAN.md](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/docs/raw/PLAN.md)의 설계 사항이 누락 없이 구현 파일들에 수술적(Surgical)으로 반영되었음을 확인했습니다.
padding-left: 0,originOffsetPxX축 맞춤, 마지막 측점 center 밀어주기(fitFontSize/stationCellCenters), 비정규 측점 2행 스태거 및 백엔드 횡단 생성-종단 파일 병합(_merge_irregular_into_longitudinal등) 등의 핵심 로직이 안정적으로 작성되었습니다.
-
남은 한계 및 E2E 테스트 권장:
- 계획서에 기록된 대로, 본 환경(지표 데이터 및 DB가 실제 구동하지 않는 환경) 특성상 정적 정합성 검사만 통과된 상태입니다.
- 경로 확정 시 비정규 횡단 데이터가 정상적으로 생성되어 다음 페이지(B06)로 끊김 없이 연동되는지 확인하기 위해 백엔드 엔드투엔드(E2E) 테스트 및 실제 지상 지형 데이터 셈플러 테스트를 다음 단계로 진행하는 것을 권장합니다.