- `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>
3.8 KiB
3.8 KiB
검증 보고서: B05 종단 계획선(시공계획고) 자동 생성 및 단위/경사 제약 정밀 검증
- 검증 일시: 2026-07-20
- 검증 대상: B05 종단 계획선 자동 산출 엔진, 종단곡선 법정 예외, 경사 단위(%) 통일 및 스티키 옵션 버그 수정
- 검증자: QA / Verifier
1. 검증 총평
종단 계획선 자동 산출 기능 및 사용자 지적에 따른 경사 단위(%), 주 진행방향 판정, 스티키 옵션 처리 등이 실무 설계 및 관련 규정(「임도설치 및 관리 등에 관한 규정」 [별표 1-2])에 부합하게 구현되었습니다.
모든 신규 및 수정 파일은 700줄 제한을 엄격히 준수하고 있으며, 기존 종횡단 데이터 생성 및 경로 탐색 흐름을 저해하지 않도록 예외가 격리(Surgical Edit 및 Non-breaking Exception Fallback)되어 있습니다.
2. 세부 검증 항목 결과
2-1. 법정 설계 기준 및 Config 분리 준수 여부
config/config_system.py내FOREST_ROAD_PROFILE_CRITERIA로 설계속도(40/30/20 km/h) 및 지형구분(일반/특수)별 법정 기준(종단기울기 7/8/9/10/12/14%, 역기울기 5%, 최소 곡선반경 450/250/100m, 최소 곡선길이 40/30/20m)이 명확히 정의됨.- 경로 탐색의 평면 선형 기준과 종단 계획선 기준이 완전히 분리되어 상호 간섭이 없음.
2-2. 계획선 엔진 수치 최적화 및 구할 분할 (B05_wf2_Route_Engine_Grade.py, _Solver.py)
- 단일 파일 700줄 제한 준수를 위해 순수 수치 계산 모듈(
B05_wf2_Route_Engine_Grade_Solver.py, 352줄)과 기준 확정/인터페이스 모듈(B05_wf2_Route_Engine_Grade.py, 560줄)로 깔끔히 분리됨. - SLSQP / trust-constr 기반 QP 최적화와 포물선 면적 오차 되먹임(_BALANCE_PASSES)을 통해 적분 오차(∫(계획고−지반고)ds ≈ 0)를 고정밀도로 달성함.
- 비포장 도로이면서 기울기 대수차(A)가 5% 이하인 경우 종단곡선을 두지 않는 법정 예외(규정 다-(3)-(다)) 처리 확인.
- 구역별 정확 균형이 기울기 제약과 양립하지 않는 불가능 조건(infeasible) 발생 시, 노선 전체 1구역 균형으로 자동 전환하여 절·성토 균형(법정 다-(3)-(나))을 우선 보장함.
2-3. 실제 데이터 진단 및 버그 수정 3건 대조 검증
- 역기울기 오적용 및 V/Λ자 지형 대응:
_detect_main_direction()을 통해 고도차와 전체 기복 비율(main_direction_monotone_ratio)로 V자/Λ자 지형을 자동 판정하여 부적절한 역기울기 제약 걸림을 차단함.
- 스티키 기본값 버그 방지:
- DB에 해석된 결과(
grade_options)와 명시적 사용자 오버라이드 입력값(grade_overrides)을 분리하여 등급/지형 재선택 시 갱신되지 않던 스티키 버그를 근본적으로 해결함.
- DB에 해석된 결과(
- 경사 단위(%) 통일 및 경로탐색 제약 분리:
- UI/Schema/DB 전체에서 경사를
%단위로 일관 처리하며,normalize_grade_percent()로 과거 비율(0.14) 입력에 대한 하위호환성 보장. - 지반 경사(지상 지형)와 노면 경사(공사 후 계획고)의 구분을 명확히 하고
slope_violations탐색 유도 지표의 원래 의미를 회복함.
- UI/Schema/DB 전체에서 경사를
2-4. 파일 제한 및 코드 품질 준수
- 700줄 제한:
B05_wf2_Route_Engine_Grade.py: 560줄 (통과)B05_wf2_Route_Engine_Grade_Solver.py: 352줄 (통과)B05_wf2_Route_Engine_Sections.py: 182줄 (통과)B05_wf2_Route_Schema.py: 207줄 (통과)B05_wf2_Route_UI_Panel.ts: 468줄 (통과)
- Surgical Edit: 불필요한 포맷 변경이나 주변 코드 수정 없이 목표한 로직 변경만 정밀 적용됨.
3. 종합 판정
합격 (PASS) — 구현 및 수치는 규정 및 실무 요구사항에 적합하게 완성되었습니다.