feat(b06): 도수로/돌붙임 기본값 — 구조 도수로 · 형태(옛 붙임 형식) 구조 뒤 메붙임 · 두께 45 · 면적 30 · 빈 두께 대체 45 짝(173-5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F3mdb91125mPoC6tpsQx4P
This commit is contained in:
@@ -32,7 +32,7 @@ export const FORD_PAVEMENT_SPEC: StructureSpec = {
|
||||
prefix: "ford_chute",
|
||||
link: "gfordpavechute",
|
||||
max: 1,
|
||||
// 구조 · 두께(cm · 새 상자 30) — 배관 · 박스 · 세월교 `CHUTE_ITEMS` 와 같은 칸(90-2)
|
||||
// 구조(기본 도수로) · 두께(cm · 기본 45 · 173-5) — 배관 · 박스 · 세월교 `CHUTE_ITEMS` 와 같은 칸(90-2)
|
||||
items: [
|
||||
{
|
||||
id: "structure",
|
||||
@@ -42,8 +42,9 @@ export const FORD_PAVEMENT_SPEC: StructureSpec = {
|
||||
{ value: "도수로", label: "도수로" },
|
||||
{ value: "돌붙임", label: "돌붙임" },
|
||||
],
|
||||
default: "도수로",
|
||||
},
|
||||
{ id: "thickness", label: "두께 (cm)", kind: "number", step: 1, default: "30" },
|
||||
{ id: "thickness", label: "두께 (cm)", kind: "number", step: 1, default: "45" },
|
||||
],
|
||||
},
|
||||
],
|
||||
|
||||
@@ -120,7 +120,7 @@ export const SOIL_ADD: SpecContainer = {
|
||||
items: guardItems(),
|
||||
};
|
||||
|
||||
/** 도수로/돌붙임 칸 — 구조 · 두께(cm · 새 상자 30 · 90-2 사용자 확정) · 붙임 형식 · 면적(98-3) · 물넘이 포장(`ford_chute`)도 같은 칸. */
|
||||
/** 도수로/돌붙임 칸 — 구조(기본 도수로) · 형태(기본 메붙임) · 두께(cm · 기본 45) · 면적(㎡ · 기본 30 · 98-3) · 물넘이 포장(`ford_chute`)도 같은 칸(173-5). */
|
||||
export const CHUTE_ITEMS: SpecItem[] = [
|
||||
{
|
||||
id: "structure",
|
||||
@@ -130,19 +130,20 @@ export const CHUTE_ITEMS: SpecItem[] = [
|
||||
{ value: "도수로", label: "도수로" },
|
||||
{ value: "돌붙임", label: "돌붙임" },
|
||||
],
|
||||
default: "도수로",
|
||||
},
|
||||
{ id: "thickness", label: "두께 (cm)", kind: "number", step: 1, default: "30" },
|
||||
// 붙임 형식 · 면적(98-3) — 빈칸이면 B08 구조물 집계표에 안 셈(설계자가 넣음)
|
||||
{
|
||||
id: "bond",
|
||||
label: "붙임 형식",
|
||||
label: "형태",
|
||||
kind: "select",
|
||||
choices: [
|
||||
{ value: "찰붙임", label: "찰붙임" },
|
||||
{ value: "메붙임", label: "메붙임" },
|
||||
],
|
||||
default: "메붙임",
|
||||
},
|
||||
{ id: "area", label: "면적 (㎡)", kind: "number", step: 0.1 },
|
||||
{ id: "thickness", label: "두께 (cm)", kind: "number", step: 1, default: "45" },
|
||||
{ id: "area", label: "면적 (㎡)", kind: "number", step: 0.1, default: "30" },
|
||||
];
|
||||
|
||||
/** 도수로/돌붙임(선택 · 하나만 · 54-48) — 옛 둘 이상은 보이되 [추가]만 숨김. */
|
||||
|
||||
@@ -64,8 +64,8 @@ _SPAN_LINKED_TYPES: frozenset[str] = frozenset({"ford_pavement"})
|
||||
# ⚠ 교차 참조 ① 관 위 최소 토피(m). 임도 배수관 토피 규정이 지식DB에 없어 별표2
|
||||
# 교량·암거 "복토 시 흙 두께 50㎝ 이상"을 끌어왔다. B05 계획고 하향 차단 기준이다.
|
||||
MIN_PIPE_COVER_M = 0.5
|
||||
# 도수로 · 돌붙임 두께 빈 값(cm) — 사용자 확정 30 cm(10-8 · 90-2).
|
||||
CHUTE_THICKNESS_CM = 30.0
|
||||
# 도수로 · 돌붙임 두께 빈 값(cm) — 사용자 확정 45 cm(173-5).
|
||||
CHUTE_THICKNESS_CM = 45.0
|
||||
|
||||
# 기슭막이 전면 기울기(1:n). 돌쌓기 전면 1:0.3(교본 7-3) = 사방교본 계획비탈
|
||||
# 1:0.3~0.5의 급한 쪽. 지식DB 근거가 있는 값이라 교차 참조 표시가 붙지 않는다.
|
||||
|
||||
@@ -37,7 +37,7 @@ const SECTION_KEYS: Record<string, string> = {
|
||||
const SPAN_LINKED_TYPES = new Set(["ford_pavement"]);
|
||||
|
||||
export const MIN_PIPE_COVER_M = 0.5;
|
||||
export const CHUTE_THICKNESS_CM = 30.0;
|
||||
export const CHUTE_THICKNESS_CM = 45.0;
|
||||
export const REVET_FACE_SLOPE = 0.3;
|
||||
export const INLET_STRUCTURE_BASIN = "집수정";
|
||||
export const FORD_SLAB_THICKNESS_M = 0.3;
|
||||
@@ -185,7 +185,7 @@ function sideSpec(
|
||||
}
|
||||
|
||||
/** 도수로 · 돌붙임(90-2) — 첫 상자(`{head}_{n}_*` · 물넘이 포장 = `ford_chute` · 136-2) 구조 · 두께
|
||||
* (cm → m · 빈 값 30 cm) · 구조를 안 고르면 null. 횡단이 유출 성토사면을 따라 띠로 그림. 파이썬 짝 `_chute`. */
|
||||
* (cm → m · 빈 값 45 cm) · 구조를 안 고르면 null. 횡단이 유출 성토사면을 따라 띠로 그림. 파이썬 짝 `_chute`. */
|
||||
export function chute(
|
||||
values: Record<string, unknown>,
|
||||
head = "chute_add",
|
||||
|
||||
@@ -3362,7 +3362,7 @@
|
||||
"chute_add.structure=도수로": "도수로",
|
||||
"chute_add.structure=돌붙임": "돌붙임",
|
||||
"chute_add.thickness": "두께 (cm)",
|
||||
"chute_add.bond": "붙임 형식",
|
||||
"chute_add.bond": "형태",
|
||||
"chute_add.bond=찰붙임": "찰붙임",
|
||||
"chute_add.bond=메붙임": "메붙임",
|
||||
"chute_add.area": "면적 (㎡)"
|
||||
@@ -3429,7 +3429,7 @@
|
||||
"chute_add.structure=도수로": "도수로",
|
||||
"chute_add.structure=돌붙임": "돌붙임",
|
||||
"chute_add.thickness": "두께 (cm)",
|
||||
"chute_add.bond": "붙임 형식",
|
||||
"chute_add.bond": "형태",
|
||||
"chute_add.bond=찰붙임": "찰붙임",
|
||||
"chute_add.bond=메붙임": "메붙임",
|
||||
"chute_add.area": "면적 (㎡)"
|
||||
@@ -3504,7 +3504,7 @@
|
||||
"chute_add.structure=도수로": "도수로",
|
||||
"chute_add.structure=돌붙임": "돌붙임",
|
||||
"chute_add.thickness": "두께 (cm)",
|
||||
"chute_add.bond": "붙임 형식",
|
||||
"chute_add.bond": "형태",
|
||||
"chute_add.bond=찰붙임": "찰붙임",
|
||||
"chute_add.bond=메붙임": "메붙임",
|
||||
"chute_add.area": "면적 (㎡)"
|
||||
|
||||
@@ -42,7 +42,7 @@ def test_되얹기는_상자_없으면_그대로_칸_전부면_지움(out: dict)
|
||||
|
||||
|
||||
def test_박스는_걸친_측점_모두_세월교도(out: dict) -> None:
|
||||
assert out["boxAdd"]["box"] == [{"structure": "도수로", "thickness_m": 0.3}] * 2
|
||||
assert out["boxAdd"]["box"] == [{"structure": "도수로", "thickness_m": 0.45}] * 2
|
||||
assert {118, 120} <= set(out["boxAdd"]["refreshed"])
|
||||
assert out["fordAdd"]["ford"] == {"structure": "돌붙임", "thickness_m": 0.5}
|
||||
assert out["fordAdd"]["refreshed"] == [160]
|
||||
@@ -51,5 +51,5 @@ def test_박스는_걸친_측점_모두_세월교도(out: dict) -> None:
|
||||
|
||||
|
||||
def test_물넘이_포장은_ford_chute_만(out: dict) -> None:
|
||||
assert out["paveAdd"]["pave"] == [{"structure": "돌붙임", "thickness_m": 0.3}] * 2
|
||||
assert out["paveAdd"]["pave"] == [{"structure": "돌붙임", "thickness_m": 0.45}] * 2
|
||||
assert out["paveAdd"]["refreshed"] == [196, 200]
|
||||
|
||||
@@ -67,12 +67,12 @@ def test_유입_유출은_구조와_흙막이_칸만(out):
|
||||
"before",
|
||||
"after",
|
||||
]
|
||||
# 도수로/돌붙임 = 구조 · 두께(cm · 새 상자 30 · 90-2) · 붙임 형식 · 면적(98-3 · 기본 없음)
|
||||
# 도수로/돌붙임 = 구조(도수로) · 형태(메붙임) · 두께(cm · 45) · 면적(㎡ · 30) — 173-5
|
||||
assert out[spec]["chute_add"] == [
|
||||
["structure", None, None],
|
||||
["thickness", None, "30"],
|
||||
["bond", None, None],
|
||||
["area", None, None],
|
||||
["structure", None, "도수로"],
|
||||
["bond", None, "메붙임"],
|
||||
["thickness", None, "45"],
|
||||
["area", None, "30"],
|
||||
]
|
||||
keys = out[f"{spec}Keys"]
|
||||
assert keys["prefixes"] == ["soil_add_", "chute_add_"]
|
||||
|
||||
@@ -23,9 +23,9 @@ from B06_Section.B06_Section_Engine_Culvert import ( # noqa: E402
|
||||
|
||||
|
||||
def test_cross_reference_constants_match_plan():
|
||||
"""계획서 3-0 표 값 — 토피 0.5m·전면 1:0.3 · 도수로/돌붙임 빈 두께 30 cm(90-2 사용자 확정)."""
|
||||
"""계획서 3-0 표 값 — 토피 0.5m·전면 1:0.3 · 도수로/돌붙임 빈 두께 45 cm(173-5 사용자 확정)."""
|
||||
assert MIN_PIPE_COVER_M == 0.5
|
||||
assert CHUTE_THICKNESS_CM == 30.0
|
||||
assert CHUTE_THICKNESS_CM == 45.0
|
||||
assert REVET_FACE_SLOPE == 0.3
|
||||
# 배관은 수평도 가능 — 세트에 경사 강제값을 싣지 않는다(2026-08-20 사용자 확정).
|
||||
assert "min_slope" not in _culvert_set(None)
|
||||
@@ -99,12 +99,12 @@ def test_old_default_moves_for_large_pipe():
|
||||
|
||||
|
||||
def test_chute_thickness_cm_to_m():
|
||||
"""도수로/돌붙임(90-2) — 구조를 고르면 `chute` · 두께 cm → m · 빈 두께 30 cm · 안 고르면 없음."""
|
||||
"""도수로/돌붙임(90-2) — 구조를 고르면 `chute` · 두께 cm → m · 빈 두께 45 cm · 안 고르면 없음."""
|
||||
assert "chute" not in _culvert_set({"chute_add_1_thickness": 40})
|
||||
spec = _culvert_set({"chute_add_1_structure": "돌붙임", "chute_add_1_thickness": "45"})
|
||||
assert spec["chute"] == {"structure": "돌붙임", "thickness_m": 0.45}
|
||||
blank = _culvert_set({"chute_add_1_structure": "도수로", "chute_add_1_thickness": ""})
|
||||
assert blank["chute"] == {"structure": "도수로", "thickness_m": 0.3}
|
||||
assert blank["chute"] == {"structure": "도수로", "thickness_m": 0.45}
|
||||
|
||||
|
||||
def test_attach_only_pipe_facilities(tmp_path):
|
||||
|
||||
@@ -217,7 +217,7 @@ def test_ford_box_guard_attached_as_culvert() -> None:
|
||||
# 유입 날개벽 수평 여유 = 같은 칸(107-3) · 안 세운 날개벽엔 안 실림
|
||||
wings = sections[60.0]["ford"]
|
||||
assert wings["wing_in"]["berm_m"] == 2 and "berm_m" not in wings["wing_out"]
|
||||
assert sections[60.0]["ford"]["chute"] == {"structure": "도수로", "thickness_m": 0.3}
|
||||
assert sections[60.0]["ford"]["chute"] == {"structure": "도수로", "thickness_m": 0.45}
|
||||
assert box["chute"] == {"structure": "돌붙임", "thickness_m": 0.45}
|
||||
assert "chute" not in sections[40.0]["culvert"]
|
||||
assert sections[140.0]["ford_pavement"]["chute"] == {"structure": "돌붙임", "thickness_m": 0.4}
|
||||
|
||||
Reference in New Issue
Block a user