diff --git a/common_util/common_util_mass_haul_view.ts b/common_util/common_util_mass_haul_view.ts index 957dd1c2..f981e629 100644 --- a/common_util/common_util_mass_haul_view.ts +++ b/common_util/common_util_mass_haul_view.ts @@ -662,6 +662,17 @@ export function createMassHaulSummary( ? [L("B06_MassHaul_Shortage"), `${formatVolume(result.shortage_m3)}㎥`] : [L("B06_MassHaul_Surplus"), `${formatVolume(result.surplus_m3)}㎥`], ); + // 절·성토 균형 지표 — 판정·조정은 사용자 몫이고 프로그램은 값만 드러낸다(2026-09-03 + // 사용자 확정). 곡선이 0선을 넘지 않으면 평형선·운반 블록이 아예 생기지 않으므로, + // 벌룬이 없을 때 왜 없는지를 이 값 하나로 읽을 수 있어야 한다. + const finalCumulative = result.points.length + ? result.points[result.points.length - 1].cumulative_volume_m3 + : 0; + chips.push([ + L("B06_MassHaul_FinalCumulative"), + `${formatVolume(finalCumulative)}㎥`, + L("B06_MassHaul_FinalCumulative_Tip"), + ]); // 토량 분배를 켜 두면 운반 총량·검산이 뒤에 붙는다(사토·토취는 발생 지점 기준 합계). chips.push(...haulPlanChips(haulPlan)); for (const [label, value, tip] of chips) { diff --git a/ui_template/ui_template_locale_b2.ts b/ui_template/ui_template_locale_b2.ts index 08f2f002..4d9e4080 100644 --- a/ui_template/ui_template_locale_b2.ts +++ b/ui_template/ui_template_locale_b2.ts @@ -348,6 +348,14 @@ export const ui_locales_b2 = { B06_MassHaul_Shortage: ["토취", "Borrow"], /* 운반계획 도면은 다짐상태 기준으로 계산한다(국도건설공사 설계실무 요령). */ B06_MassHaul_Basis: ["다짐상태 기준", "Compacted basis"], + /* 최종 누가토량 = 절·성토 균형 지표. 판정·조정은 사용자 몫이고 프로그램은 값만 드러낸다 + (2026-09-03 사용자 확정). 실무 유토곡선 6건 관측치는 +49~+324㎥ 범위다 + — resources/knowledge/technical_info/01_임도/03_계산정보/유토곡선_토량배분.md §3 */ + B06_MassHaul_FinalCumulative: ["최종 누가토량", "Final cumulative"], + B06_MassHaul_FinalCumulative_Tip: [ + "노선 끝의 누가토량 — 0에 가까울수록 절·성토 균형. 곡선이 0선을 넘지 않으면 평형선·운반 블록이 생기지 않습니다.", + "Cumulative volume at the end of the route — the closer to zero, the better cut/fill balance. No balance lines or haul blocks appear while the curve never crosses zero.", + ], B06_MassHaul_AllHidden: [ "표시할 곡선을 하나 이상 켜 주세요.", "Turn on at least one curve to display.",