feat(B06): 유토곡선 토량 분배(평형선·운반 블록·평균운반거리) 엔진

누가토량 곡선은 "얼마가 남는가"만 말한다. 어디 흙을 어디로 얼마나 옮기는지를
뽑아내는 계층을 얹었다 — 평형선, 운반 블록, 운반토량 Q, 평균운반거리 L,
EA/RR/BR 안분, 장비 선정.

작도 규칙 근거는 clouds-daily.tistory.com/249 와 교과서 표준 작도법이다
(참고 도면 3공구의 수치·작도는 근거로 삼지 않았다).

평형선을 0선 하나로 고정하면 임도처럼 절토가 우세한 노선에서 사토가 전부
종점 한 덩어리로 몰린다. 그래서 곡선을 왼쪽부터 훑으며 커서를 옮기고, 성토가
절토를 다 못 받는 자리에서 평형선을 계단으로 옮긴다. 구간이 겹치지도 비지도
않고 단차의 합이 최종 누가토량과 정확히 맞는다.

- 신규 _UI_MassHaul_Balance.ts: computeHaulPlan() 순수 계산기
- 신규 _UI_MassHaul_Balance_View.ts: 계단형 평형선 + 반종거 수평선 + 육각 balloon
- MassHaulPoint에 cut_rr_m3/cut_br_m3 추가 (블록별 암종 안분 입력)
- EARTHWORK_HAUL_EQUIPMENT_LIMITS_M을 context 응답으로 노출 (프론트 사본 없음)
- massHaulPayload에 haul_plan 직렬화 (B08 인계)

검증: 수동 6종 + 무작위 100건에서 보존·안분합·L 범위·구간 무결성 성립.
렌더 스모크 4개 크기 NaN 0건. 영구저장소 프로젝트(26측점) 실측 시 블록 6개,
토취 75.4㎥가 최종 누가토량 -75.4㎥와 일치.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-02 16:12:07 +09:00
co-authored by Claude Opus 5
parent dcf5da8ba7
commit ac4e22f623
11 changed files with 1013 additions and 19 deletions
+12
View File
@@ -237,6 +237,18 @@ export const ui_locales_b2 = {
B06_MassHaul_Station_Net: ["순토량", "Net volume"],
B06_MassHaul_Station_Cumulative: ["누가토량", "Cumulative"],
/* --- B06 토량 분배(평형선·운반 블록) --- */
B06_MassHaul_Balance_Layer: ["토량 분배", "Haul plan"],
B06_MassHaul_Block: ["운반 블록", "Haul block"],
B06_MassHaul_HaulVolume: ["운반토량", "Haul volume"],
B06_MassHaul_HaulDistance: ["평균운반거리", "Average haul distance"],
B06_MassHaul_HaulTotal: ["운반토량 계", "Hauled total"],
B06_MassHaul_BlockCount: ["운반 블록 수", "Haul blocks"],
/* 운반장비 이름 — 거리 경계값은 config_system.EARTHWORK_HAUL_EQUIPMENT_LIMITS_M에만 둔다. */
B06_MassHaul_Equip_FreeHaul: ["종무대", "Free haul"],
B06_MassHaul_Equip_Dozer: ["도쟈", "Dozer"],
B06_MassHaul_Equip_Dump: ["덤프", "Dump truck"],
/* --- B06 측점 표준횡단 설계 지정 --- */
B06_Design_Ground_Legend: ["지반유형", "Ground type"],
B06_Design_Ground_Soil: ["토사", "Soil"],