- 구조물정의 판 16(판_15 이력): 유입 구조 기본 집수정 · 유출 형태 찰 · 유입 · 유출 높이 1.5 · 집수정 높이 1.5 새 칸 · 사면안정 흙막이 형태 찰 · 높이 1.5 - 엔진 짝(파이썬 · TS): 집수정 높이 빈 값 = 정의 기본값 - 횡단 기하: 자동 집수정 모양 = L형(DEFAULT_BASIN_SHAPE 한 곳) · ㄴ·ㄷ형을 못 세우는 지형만 I형 - 명세 기본값 칸(default) — 추가 흙막이 새 상자 = 찰 · 10 · 1.5 · 5 · 5 실제 값 · 이미 있는 상자 값 그대로 - B05 폼: 빈 숫자 칸 「값 (기본)」 · 빈 유입 구조 = 집수정 (기본) · 집수정 모양 L형 (기본) · 추가 흙막이 상자에도 [연동][경사] - [연동][경사] 단추 안 여백 줄임 · 한 줄(높이 31.7 그대로) - 시험: 기본값 바뀐 기대값 맞춤(culvert_set · structure_span · new_structure_defaults) 화면 확인(sub5_검증): 새 배관 = 관경 1000 · 집수정 · L형 (기본) · 1.5 · 유출 흙막이 찰 10 · 1.5 · 5 · 5 · 단 0 / 36+0 단 0→1 새 흙막이 1 = 찰 10 · 1.5 · 5 · 5 · 연동 · 경사 켬 / 사면안정 새 흙막이 = 찰 10 · 1.5 · 5 · 5 / 단추 여섯 31.7 한 줄 · 세션 캐시 비워 되돌림 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BVPp2o6Mh2FZJr72yW3ofZ
70 lines
2.8 KiB
Python
70 lines
2.8 KiB
Python
"""구조물 종방향 구간값(길이·기준측점 전/후) 검증 — 2026-08-24 사용자 확정.
|
|
|
|
기슭막이는 길이 10m·전/후 5·5, 집수정은 길이 2m·전/후 1·1이 기본이다. 세 값이
|
|
곧 그 구조물이 덮는 종방향 범위이고, 그 범위에 걸린 옆 측점 횡단도에 같은
|
|
기슭막이가 연동으로 선다. 별도 폭 필드는 없다(PLAN.md §4-9).
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
PROJECT_ROOT = Path(__file__).resolve().parents[2]
|
|
if str(PROJECT_ROOT) not in sys.path:
|
|
sys.path.insert(0, str(PROJECT_ROOT))
|
|
|
|
from B05_Profile.B05_Profile_Structures_Schema import load_structure_types # noqa: E402
|
|
from B06_Section.B06_Section_Engine_Culvert import _culvert_set, _side_spec # noqa: E402
|
|
|
|
|
|
def _pipe_option_default(key: str):
|
|
for item in load_structure_types():
|
|
if item.type_id != "pipe":
|
|
continue
|
|
for option in item.options:
|
|
if option.key == key:
|
|
return option.default
|
|
raise AssertionError(f"레지스트리에 배관 옵션 {key}가 없다")
|
|
|
|
|
|
def test_registry_defines_basin_before_after():
|
|
"""집수정 길이 2m·전/후 각 1m가 레지스트리 기본값으로 있어야 한다."""
|
|
assert _pipe_option_default("inlet_basin_length_m") == 2
|
|
assert _pipe_option_default("inlet_basin_before_m") == 1
|
|
assert _pipe_option_default("inlet_basin_after_m") == 1
|
|
|
|
|
|
def test_basin_side_spec_carries_before_after():
|
|
"""유입이 집수정이면 세트 제원에 길이와 전/후가 함께 실린다(레지스트리 기본값 경유)."""
|
|
spec = _culvert_set({"inlet_type": "집수정"})["inlet"]
|
|
assert spec["structure"] == "집수정"
|
|
assert spec["basin_length_m"] == 2.0
|
|
assert spec["basin_before_m"] == 1.0
|
|
assert spec["basin_after_m"] == 1.0
|
|
# 집수정 쪽에는 기슭막이가 없다 — 벽 제원이 섞이면 링크 판정이 10m로 번진다.
|
|
assert "revet_length_m" not in spec
|
|
|
|
|
|
def test_basin_before_after_follow_saved_options():
|
|
"""저장분이 있으면 그대로 쓴다 — 비대칭(전 0.5 · 후 1.5)도 허용."""
|
|
spec = _side_spec(
|
|
{
|
|
"inlet_type": "집수정",
|
|
"inlet_basin_length_m": 2,
|
|
"inlet_basin_before_m": 0.5,
|
|
"inlet_basin_after_m": 1.5,
|
|
},
|
|
{},
|
|
"inlet",
|
|
)
|
|
assert (spec["basin_before_m"], spec["basin_after_m"]) == (0.5, 1.5)
|
|
|
|
|
|
def test_revet_span_defaults_unchanged():
|
|
"""기슭막이 기본은 그대로 길이 10m·전/후 5·5다(이번 변경이 건드리지 않는다)."""
|
|
culvert = _culvert_set({"inlet_type": "기슭막이"})
|
|
for role in ("inlet", "outlet"):
|
|
spec = culvert[role]
|
|
assert spec["revet_length_m"] == 10.0
|
|
assert spec["revet_before_m"] == 5.0
|
|
assert spec["revet_after_m"] == 5.0
|