test(b05): 물넘이포장 월류 폭 → 높이 자동 = 세월교 한 벌 확인 · 시험으로 못박음 (287-3)

- 물넘이 「경사각도」 상자 폭 칸이 세월교와 같은 overflow · fordHeightM 길을 탐(이미 이어짐 · 코드 변경 없음)
- 설계유량이 없는 지점은 손 입력(높이 칸 그대로)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TteK8mfYZetk5P3bEZkyVZ
This commit is contained in:
2026-10-12 20:59:10 +09:00
co-authored by Claude Opus 5.5
parent a5a9a7cec0
commit 2b9440a44e
2 changed files with 16 additions and 0 deletions
@@ -95,6 +95,12 @@ const out = {
pavePoints: ofClass("b06-chart__ford-pavement").map((k) => k.attrs.points),
planPoints: ofClass("b06-chart__ford-deck-plan").map((k) => k.attrs.points),
inflowLeft: pave.inflowLeft(tilted),
// 287-3 월류 폭 → 높이 = 세월교와 같은 풀이(유량 1.2 ㎥/s · 폭 10 m) · 유량 없으면 null(손 입력)
heightByWidth: calc.fordHeightM(1.2, 10),
heightNoFlow: calc.fordHeightM(null, 10),
paveSlopeItems: load(D("design_structure_ford_pavement.ts"))
.FORD_PAVEMENT_SPEC.containers.find((c) => c.id === "slope")
.items.map((i) => i.id),
// 287-1 길이 넣음 = 월류 폭 × 길이 · 비움 = 기본값 · 폭 바꿈 = 길이 있을 때만 다시 셈 · 폭 비면 기본 폭
areaByLength: change(formOf({ width: "6" }, { length_m: "4", area: "30" }), "chute", "length_m"),
areaCleared: change(formOf({ width: "6" }, { length_m: "", area: "24" }), "chute", "length_m"),
@@ -3,6 +3,7 @@
못박는 것
- 287-1 도수로/돌붙임 길이 ↔ 면적 — 길이 넣음 = 월류 폭 × 길이 · 비움 = 칸 기본값 · 월류 폭을 바꾸면
길이가 있을 때만 다시 셈 · 폭이 비면 물넘이 기본 폭.
- 287-3 월류 폭 → 높이 자동 = 세월교 한 벌(`fordHeightM` · 폼 `overflow(…, "slope")`) · 유량 없으면 손 입력.
- 287-2 · 287-4 콘크리트 윗면 = 설계 노면(서버 · TS 짝이 경사각도로 지대 낮은 쪽 한 경사 · 중심점이 그 위)
· 포장층 = 노면공 포장 형상 노견까지(노면공 항목과 안 섞임) · 월류 높이 점선 = 노면 위 같은 각도 ·
3D 노면을 파지 않음 · 설계 측구 없음.
@@ -81,3 +82,12 @@ def test_3D_노면을_파지_않고_옛_파임_그림을_걷음():
assert "hideFordPavedRoad" not in pave and "fordDeckElevationAt" not in pave
view = _read("B06_Section", "B06_Section_UI_Cross_View.ts")
assert "hideFordPavedRoad" not in view
def test_월류_폭_넣으면_높이_자동_세월교_한_벌(ts):
assert ts["paveSlopeItems"] == ["angle", "width", "height"]
assert ts["heightByWidth"] and ts["heightByWidth"] > 0
assert ts["heightNoFlow"] is None
form = _read("B05_Profile", "B05_Profile_UI_Drainage_Facility.ts")
assert 'const paveFlowBox = overflow(() => paveForm, "slope");' in form
assert 'if (facility === "ford_pavement") paveFlowBox.fill();' in form