- `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>
8.4 KiB
8.4 KiB
[C05] 계획 유토곡선 B05 이관 및 피드백 9차 반영 정리 (2026-08-03)
이 문서는
docs/raw/PLAN.md에서 검증 완료 후 이관된 아카이브입니다. 검증 보고서:docs/raw/verification/2026-08-03_verify_B05_mass_haul_transfer.md검증 판정: PASS — 구현 완료, 검증 완료, 사용자 피드백 9차 반영 완료.
계획 유토곡선 B05 이관(분리안) + 사토장·토취장 자동 선정 (2026-08-03 협의)
배경 및 결정사항
- 설계기준 조사(2026-08-03): 유토곡선 정식 작성은 횡단 토적표(평균단면법) 기반이 국내 표준
(도로설계요령 토공편, 국도건설공사 설계실무 요령). 종단면 기반 토량은 노선계획 단계의
개산용으로만 쓰이며 별도 설계기준이 없다. → 종단 기준 곡선은 현재 단순식
(높이차×노반폭,
longitudinalAreaSamples) 유지, 정밀화하지 않는다. - 분리안 확정(사용자): 사토장·토취장 선정은 계획선을 바꾸며 계획선 편집 정본·배수유역· 배관 데이터가 모두 B05에 있으므로, B05 = 계획 도구(종단 개략 유토곡선 + 4옵션 선정 + 계획고 실시간 피드백), B06 = 정식 검증·확정(횡단 기준 곡선·확정 저장·B08 인계)으로 분리. B06 확정 저장 기준 논점은 소멸 — 횡단 정식만 저장.
- B05 배치(사용자): 종단면 하단 슬라이드 패널 내부에 2차 하단 슬라이드 패널을 신설, 펼치면 12행 테이블 영역을 덮고 접으면 테이블 복귀. B06 유토곡선 기능 동등 제공(코드 재활용).
- 저장·캐시 원칙: 초기 전체 계산 → 영구저장, 페이지 진입 시 캐시 로드, 수정 → 확정 시 영구저장 + 캐시 갱신 패턴 준수.
- 기존 향후 작업 1(사토장 위치·거리 모델)은 본 작업에 흡수된다.
A. 유토곡선 엔진 공용화 (동작 무변경 리팩터링)
- B06 유토곡선 모듈 7종 + CSS를
common_util/common_util_mass_haul*.ts|css로 이동 (@util/*별칭 사용), B06 임포트 경로만 수정. common_util_mass_haul_types.ts신설 —GroundType·EarthworkConversion·HaulEquipmentLimit·BalloonOffsets정의처를 이곳 한 곳으로 모으고 B06Api_Fetch가 재수출. 엔진 입력은 페이지 API 타입 대신 구조적 부분집합(MassHaulSection/MassHaulDesign/MassHaulLongitudinal/MassHaulStationSource)으로 받아 B05가 B06을 임포트하지 않게 함.common_util_svg.ts신설 —svgElement/svgText/L/stationLabel/inferStationInterval이관, B06_UI_Section_Common은 재수출로 기존 경로 유지.createMassHaulChartX축 파라미터화(MassHaulAxis) — 종단 렌더러 상수(LONG_PAD,longitudinalMaxChainage) 의존을 걷어내고 호출한 쪽이 주입. B06은 기존과 동일 값 전달.- 이동 후 무변경 확인:
npm run typecheck통과, B06 변경 41줄(임포트·인자 전달만).
B. B05 계획 유토곡선 패널
B05_wf2_Route_UI_Profile_MassHaul.ts신설 — 종단면 패널 안 2차 하단 슬라이드. 펼치면 12행 테이블 자리를 곡선이 대신 차지하고, 펼침 상태는 sessionStorage 보존.- 곡선 SVG를 종단 그래프와 같은 가로 스크롤러(canvas) 안 형제로 넣고
MassHaulAxis에LONG_PAD + originOffset을 넘겨 X축을 종단chainageMapper와 일치시킴. - 종단 개략 basis 엔진 신설(
computeLongitudinalMassHaul) — 횡단 설계가 없는 B05용으로 표준횡단 노반폭(road_width_m + shoulder_left/right_m)을 전 구간 공통으로 물린다. 토량 분배(평형선·장비 띠)·balloon·잔량 정산·요약 메트릭은 공용 모듈 그대로 재사용. - 계획고 편집 시
draw()경로에서 곡선이 함께 다시 계산된다(순수 프론트, 백엔드 불필요). setEarthworkContext()로 B05 Page가fetchSectionContext()값을 주입(사본 금지).
C. 사토장·토취장 4옵션 자동 선정 (B05)
UI (B05_wf2_Route_UI_Profile_Disposal.ts + _UI_Style_Disposal.css):
- 범례 줄의 [토량 분배]와 [도형 위치 초기화] 사이에 세로 구분기호(양측) + 토글 4개
(
비용 | 지형안정성 | 계곡부 | 임내 공간). 하나 선택 시 나머지disabled(라디오). 구분기호 삽입은 공용createMassHaulLegend에extras인자를 더해 처리. - 옵션 선택 시 부지 카드 표시: 위치(측점·좌우 오프셋), 배정/수용 용량, 운반거리, 지반경사 + 옵션별 근거값(비용=낙차, 안정성=계곡 이격, 계곡부=계곡 축까지, 임내 공간=수고).
- 사용자 정의: 측점·용량 입력 수정 시 "사용자 정의" 배지 + 운반거리 재계산, [사용자 정의 삭제]로 자동값 복원.
- 후보 부족으로 배정되지 못한 토량을 경고 문구로 표시(조용히 빠지지 않게).
엔진 (B05_wf2_Route_Engine_Disposal.py, POST /route/disposal-sites):
- 노선 좌우 corridor(
DISPOSAL_SITE_CRITERIA) DEM 격자 분석 — 경사면(cost surface 캐시 재사용), 판정 반경 안 사용 가능 면적으로 용량 산출, 옵션별 0~1 점수로 정렬. - 비용: 잉여/부족 구간 토량가중 중심까지 최단거리 + 하향 운반 가점.
- 지형안정성: 완경사 우선 + 계곡 축(
terrain_skeleton) 버퍼 안쪽 제외. - 계곡부: 계곡 축 버퍼 안쪽만 후보로 남김.
- 임내 공간: 라이다
structured.npz격자별 수고로 저식생 평탄지만 후보로 남김. - 토취장 토질(발파암 배제) 미구현 — 지반유형은 B06 횡단 설계 산출물이라 B05 계획 단계에는 없다. 지금은 경사 상한만 적용. B06 확정 지반유형이 붙은 뒤 별도 착수.
- 계곡부 옵션의 암거 연장 산출 미구현 — 후보 위치와 계곡 축 거리까지만 낸다. 필요 암거 규격·연장은 B04 관 지점 데이터와 묶어야 해서 후속 작업으로 분리.
저장:
- 확정 시 종단 정본(
longitudinal.json)의disposal_sites에 심는다 (_merge_disposal_sites_into_longitudinal). 기준 미선택이면 저장분을 지운다. 종단 정본은 B06 detail 응답에 통째로 실려 나가므로 별도 캐시 경로가 필요 없다.
D. B06 연동 정리
- B06 종단 기준 곡선은 범례 비교용으로 유지(전환 버튼 신설 불필요 — 분리안으로 소멸).
common_util_mass_haul_sites.ts신설 — B05가 심은disposal_sites를 읽어 정식 곡선의 잔량 위치 기준으로 운반거리를 다시 재고(resolveDisposalSites) 요약 줄에 표시.- 확정 페이로드
mass_haul.disposal_sites에 재계산값으로 포함(B08 인계). - 계획선 변경 감지는 기존
reconcileStaleDesigns가designElevationAt비교로 이미 잡는다 (계획고가 바뀌면 측점 설계가 stale로 걸려 재계산) — 보강 불필요함을 확인.
2차 반영 — 사용자 피드백 9건 + 배관 자리 계획선 R (2026-08-03)
- (5) 자동 선정 삭제
- (1·2) B05 유토곡선을
computeMassHaulSeries로 전환 - (3·6) 유토곡선 펼침 시 종단 그래프:곡선 세로 1:1 분할
- (4) 기본 설계 프리뷰·확정 기본값을
ground_type="ripping_rock"+rock_boundary_offset_m=-0.5변경 - (7) EP(종점) 잔량 라벨 표기
- (9) 유토곡선 0선을 붉은 굵은 실선으로 변경
- (8) 3D 뷰 [측점 라벨] 토글 신설
- 배관 구조물 자리 계획선 R·선 연결 개선
3차~9차 반영 요약 (2026-08-03 ~ 2026-08-04)
- UI 5건 + 계획선 1차 로직 개편 (도면 테이블 구배 블록 기본 숨김, Y축 이중 표시 제거, 리사이저, 라디오 버튼화)
- 페이지 간 캐시 공유 (
B06_wf3_ProfileCross_Section_Store.ts모듈 싱글턴 신설) - 계획선 호 통과 보정 및 L 기준 역산 적용
- B05 계획선 편집 → 횡단 재계산 일괄 프리뷰 API (
POST /sections/{route_id}/cross-design/preview) - 프리뷰 응답 경량화 (1.09MB → 6KB)
- 유토곡선 고정 축 단위
㎥표기 및 스티키 축 정돈 - 3D 측점 라벨 기본 켜짐 및 대상(BP/EP, 5측점 배수, 구조물 측점) 확대