Merge remote-tracking branch 'origin/sub_laptop_7' into sub_laptop_6

This commit is contained in:
2026-10-16 20:50:11 +09:00
5 changed files with 55 additions and 5 deletions
@@ -65,6 +65,17 @@ const design = {
{ offset_m: -7, elevation_m: 97.2 },
],
};
// 356-1 양측절토 — 우(낮은 쪽) 노면 끝도 절토 → 노면을 늘여 원지반과 만난 점(tilt_reach) · 그 너머 원지반 오름
const bothCut = {
...design,
design_line: [
...design.design_line.slice(0, 3),
{ offset_m: -4, elevation_m: 99.8 },
{ offset_m: -4.5, elevation_m: 99.775 },
{ offset_m: -6, elevation_m: 100.5 },
],
tilt_reach: { side: "right", offset_m: -4.5, elevation_m: 99.775 },
};
const svg = new Node("g");
const group = draw.appendUnderdrainOverlay(
svg,
@@ -96,6 +107,7 @@ process.stdout.write(
attached,
sections: sections.map((s) => s.underdrain ?? null),
outline: draw.underdrainOutline(design, 1),
bothCut: draw.underdrainOutline(bothCut, 1),
noHeight: draw.underdrainOutline(design, null),
drew: !!group,
bodyId: body?.attrs["data-structure-id"] ?? null,
@@ -131,6 +131,22 @@ def test_형상_옵셋선_성토_절토와_만남(ts):
assert ts["drew"] is True and ts["stones"] > 0
def test_양측절토_늘인_노면_원지반_교점에서_끊음(ts):
"""356-1 — 낮은 쪽 노면 끝도 절토(tilt_reach) = reach 에서 수직으로 끊음 · 너머 원지반 따라가지 않음."""
outline = [(p["offset"], p["elevation"]) for p in ts["bothCut"]]
expected = [
(3, 100.15),
(-3, 99.85),
(-4, 99.8),
(-4.5, 99.775), # 늘인 노면 ∩ 원지반(tilt_reach)
(-4.5, 98.775), # reach 아래 옵셋선
(1.846154, 99.092308),
]
assert len(outline) == len(expected)
for got, want in zip(outline, expected):
assert got == pytest.approx(want, abs=1e-5)
def test_횡단도_B07_이_맹암거를_그림():
view = (ROOT / "B06_Section" / "B06_Section_UI_Cross_View.ts").read_text(encoding="utf-8")
assert (
@@ -0,0 +1,19 @@
"""356 B06 횡단 카드 — 키 강조 · 중심점 좌우(요구 235-17 · 18).
못박는 것
- 356-2 카드 초점 없음 — 마우스로 고른 뒤 키를 눌러도 초점 테두리(다른 색) 안 뜸 · ▲▼ 계획고는 창 듣개.
"""
from __future__ import annotations
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
B06 = ROOT / "B06_Section"
def test_카드_초점_없음():
view = (B06 / "B06_Section_UI_Cross_View.ts").read_text(encoding="utf-8")
assert "card.tabIndex" not in view
assert 'card.addEventListener("keydown"' not in view
assert 'card.addEventListener("click", () => onSelect(section.station_id));' in view