- `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.2 KiB
3.2 KiB
PLAN Archives: B05 종단 계획선(계획고) 자동 생성
- 완료 일시: 2026-07-20
- 이관 문서:
docs/raw/plans/2026-07-20_plan_B05_longitudinal_grade_line.md
1. 목표
B05 하단 종단면도에 현황 지반선(기존) 위에 계획선(공사 예정 노면고) 을 추가한다.
계획선은 직선(일정 종단기울기) + 원곡선(종단곡선) 만으로 구성되며, 절토량과 성토량이 균형을 이루도록(∫(계획고−지반고)ds ≈ 0) 자동 산출한다.
실행 시점은 [최적 경로 계산] 버튼 처리 파이프라인의 마지막 단계 (종횡단 생성 직후).
2. 설계 기준값 — 법정 근거 및 Config 설계
출처: 「임도설치 및 관리 등에 관한 규정」 [별표 1-2] 임도의 설계 및 시설기준(제9조의19 관련).
기준은 임도등급이 아니라 설계속도 × 지형구분(일반/특수) 으로 규정되어 있다.
2-1. 종단기울기 (순기울기 상한)
| 설계속도 (km/h) | 일반지형 | 특수지형 | 역기울기 |
|---|---|---|---|
| 40 | 7% 이하 | 10% 이하 | 5% 이하 |
| 30 | 8% 이하 | 12% 이하 | 5% 이하 |
| 20 | 9% 이하 | 14% 이하 | 5% 이하 |
- 예외: 특수지형에서 기준 적용이 어려운 경우 노면포장 시에 한하여 18% 범위 내 조정 가능.
- 합성기울기 12% 이하 (부득이 시 간선임도 13%, 지선임도 15%).
2-2. 종단곡선
| 설계속도 (km/h) | 최소 반경 (m) | 최소 곡선길이 (m) |
|---|---|---|
| 40 | 450 이상 | 40 이상 |
| 30 | 250 이상 | 30 이상 |
| 20 | 100 이상 | 20 이상 |
- 예외: 비포장 도로이면서 종단기울기 대수차(A)가 5% 이하이면 종단곡선을 넣지 않는다 → 알고리즘 3단계에 조건 분기로 반영.
3. 구현 체크리스트 (완료)
config_system.py에FOREST_ROAD_PROFILE_CRITERIA법정 기준 사전 추가 (경로찾기 값과 분리 확인)B05_wf2_Route_Engine_Grade.py계획선 엔진 신규 작성 (구역분할·PVI최적화·종단곡선·균형보정)- 종단곡선 법정 예외(비포장 & 대수차 5% 이하) 분기 구현
run_section_generation()연동 및longitudinal.jsondesign_profiles배열 스키마 확장- Schema / Router 옵션 6종 및 응답 필드 확장 (요청→DB→Config 3단 폴백)
longitudinal_sectionsDB 저장 확장 (get_latest_grade_options헬퍼 신설)- 좌측 패널 계획선 옵션 폼 + 등급→설계속도 연동 기본값
- 종단면도 SVG 계획선·절성토 음영·균형 지표 렌더링
- 새로고침 복원(
GET /route/latest) 시 계획선 재표시 확인 ruff format/prettier실행
4. 구현 중 발생 편차 및 수정사항
- 엔진 파일 분할:
B05_wf2_Route_Engine_Grade.py(560줄) 및B05_wf2_Route_Engine_Grade_Solver.py(352줄)로 분할. - 역기울기 오적용 및 V/Λ자 지형 대응:
_detect_main_direction()을 통해 계곡 횡단/능선 통과 노선의 방향 오판 방지. - 스티키 기본값 버그 방지: DB에 오버라이드값(
grade_overrides)과 해석결과(grade_options)를 분리. - 경사 단위(%) 통일: UI/Schema/DB 모두
%단위로 일관화 및 레거시 비율 자동 환산.