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

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. 종합 검증 의견

  1. 정밀 코드 검증 완료:

    • 기획 단계에서 수립된 [PLAN.md](file:///D:/02_Software_Prog/임도설계 및 견적자동화 프로그램 개발/docs/raw/PLAN.md)의 설계 사항이 누락 없이 구현 파일들에 수술적(Surgical)으로 반영되었음을 확인했습니다.
    • padding-left: 0, originOffsetPx X축 맞춤, 마지막 측점 center 밀어주기(fitFontSize / stationCellCenters), 비정규 측점 2행 스태거 및 백엔드 횡단 생성-종단 파일 병합(_merge_irregular_into_longitudinal 등) 등의 핵심 로직이 안정적으로 작성되었습니다.
  2. 남은 한계 및 E2E 테스트 권장:

    • 계획서에 기록된 대로, 본 환경(지표 데이터 및 DB가 실제 구동하지 않는 환경) 특성상 정적 정합성 검사만 통과된 상태입니다.
    • 경로 확정 시 비정규 횡단 데이터가 정상적으로 생성되어 다음 페이지(B06)로 끊김 없이 연동되는지 확인하기 위해 백엔드 엔드투엔드(E2E) 테스트 및 실제 지상 지형 데이터 셈플러 테스트를 다음 단계로 진행하는 것을 권장합니다.