fix(B05 노선 추천 창): 상한 풂 글 = 탐색 링크 한도 14 → N % 로 풂(지형상 못 이음 · 4 m 마디) · 도움말 「탐색 링크 한도를 풂」 (421-3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ji4nuyLVHcxrXWHTdb5nRD
This commit is contained in:
@@ -602,12 +602,14 @@ export function endsLine(choice: InitialChoice | null): string {
|
|||||||
return `시종점 높이 차가 상한을 넘음(평균 ${fixed(choice.endsGradePct ?? null, 1, "%")}) — 종단으로 못 맞춤 · 노선을 늘려야 함`;
|
return `시종점 높이 차가 상한을 넘음(평균 ${fixed(choice.endsGradePct ?? null, 1, "%")}) — 종단으로 못 맞춤 · 노선을 늘려야 함`;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 상한을 풀었을 때만 — 「지형상 14% 로 못 이어져 상한을 23.5% 로 풂」. 아니면 빈 글. */
|
/** 탐색 링크 한도를 풀었을 때만 — 「탐색 링크 한도 14.0 → 23.5% 로 풂(지형상 14.0% 로 못 이음 · 4 m 마디)」. 아니면 빈 글.
|
||||||
|
* 엔진 탐색 격자(4 m) 링크 기울기 한도 — 원지반 기울기(참고 · 측점 20 m)와 잣대가 다름(421-3). */
|
||||||
export function relaxedLine(choice: InitialChoice | null): string {
|
export function relaxedLine(choice: InitialChoice | null): string {
|
||||||
const bound = choice?.terrainBoundPct;
|
const bound = choice?.terrainBoundPct;
|
||||||
if (bound === null || bound === undefined) return "";
|
if (bound === null || bound === undefined) return "";
|
||||||
const limit = fixed(choice?.criteria?.maxGradePct ?? null, 1, "%");
|
const limitPct = choice?.criteria?.maxGradePct ?? null;
|
||||||
return `지형상 ${limit} 로 못 이어져 상한을 ${fixed(bound, 1, "%")} 로 풂`;
|
const limit = fixed(limitPct, 1, "%");
|
||||||
|
return `탐색 링크 한도 ${fixed(limitPct, 1, "")} → ${fixed(bound, 1, "%")} 로 풂(지형상 ${limit} 로 못 이음 · 4 m 마디)`;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 캐시에서 마지막 초기값을 읽는다. 없거나 꼴이 틀리면 null(= 예상노선 추적). */
|
/** 캐시에서 마지막 초기값을 읽는다. 없거나 꼴이 틀리면 null(= 예상노선 추적). */
|
||||||
|
|||||||
@@ -130,8 +130,8 @@ const LINES_HELP: Array<{ name: string; text: string }> = [
|
|||||||
text: "시점 · 종점 높이 차 ÷ 노선 연장이 상한을 넘으면 알림 — 종단으로 못 맞춤 · 노선을 늘려야 함",
|
text: "시점 · 종점 높이 차 ÷ 노선 연장이 상한을 넘으면 알림 — 종단으로 못 맞춤 · 노선을 늘려야 함",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "상한을 풂",
|
name: "탐색 링크 한도를 풂",
|
||||||
text: "지형상 상한 안으로는 시점 · 종점을 이을 수 없어 꼭 필요한 만큼만 상한을 올린 경우",
|
text: "노선 찾기(4 m 마디 원지반)에서 상한 안 링크로는 시점 · 종점을 못 이어 꼭 필요한 만큼만 링크 한도를 올린 경우 — 원지반 기울기(참고 · 측점 20 m)와 잣대가 달라 값이 다를 수 있음",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "거의 같은 노선",
|
name: "거의 같은 노선",
|
||||||
|
|||||||
@@ -105,7 +105,9 @@ def test_제약_못_지킨_구간과_상한_풂(results):
|
|||||||
"제약 못 지킨 구간 7곳: No.0+0.0 R 5.0m(곡선 둘 자리 모자람)"
|
"제약 못 지킨 구간 7곳: No.0+0.0 R 5.0m(곡선 둘 자리 모자람)"
|
||||||
)
|
)
|
||||||
assert labels["violationsMany"].endswith(" 외 2곳")
|
assert labels["violationsMany"].endswith(" 외 2곳")
|
||||||
assert labels["relaxed"] == "지형상 14.0% 로 못 이어져 상한을 23.5% 로 풂"
|
assert (
|
||||||
|
labels["relaxed"] == "탐색 링크 한도 14.0 → 23.5% 로 풂(지형상 14.0% 로 못 이음 · 4 m 마디)"
|
||||||
|
)
|
||||||
assert labels["notRelaxed"] == ""
|
assert labels["notRelaxed"] == ""
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ def test_제약_못_지킨_구간이_목록과_화면_줄에(rounds):
|
|||||||
assert applied["violations"].startswith(head), applied["violations"]
|
assert applied["violations"].startswith(head), applied["violations"]
|
||||||
if answer.get("relaxed"):
|
if answer.get("relaxed"):
|
||||||
bound = f"{answer['terrain_bound_pct']:.1f}%"
|
bound = f"{answer['terrain_bound_pct']:.1f}%"
|
||||||
assert applied["relaxed"].endswith(f"상한을 {bound} 로 풂"), applied["relaxed"]
|
assert f"→ {bound} 로 풂(" in applied["relaxed"], applied["relaxed"]
|
||||||
else:
|
else:
|
||||||
assert applied["relaxed"] == ""
|
assert applied["relaxed"] == ""
|
||||||
smooth = answer["criteria"]["grade_smooth_m"]
|
smooth = answer["criteria"]["grade_smooth_m"]
|
||||||
|
|||||||
Reference in New Issue
Block a user