Files
Aislo/docs/raw/plans/2026-08-03_plan_B05_mass_haul_transfer.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

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 정의처를 이곳 한 곳으로 모으고 B06 Api_Fetch가 재수출. 엔진 입력은 페이지 API 타입 대신 구조적 부분집합(MassHaulSection/MassHaulDesign/ MassHaulLongitudinal/MassHaulStationSource)으로 받아 B05가 B06을 임포트하지 않게 함.
  • common_util_svg.ts 신설 — svgElement/svgText/L/stationLabel/inferStationInterval 이관, B06 _UI_Section_Common은 재수출로 기존 경로 유지.
  • createMassHaulChart X축 파라미터화(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측점 배수, 구조물 측점) 확대