fix(365-4): 초안 cross 엔진이 다시 셈 창구 출력을 이어 쓰지 않음 — 끈 초안 = 새로고침 초안

- 화면 검증 흠: 저장 노선(창구 출력)으로 연 뒤 끈 초안 카드가 새로고침(초안 둔 채 B06 열기) 카드와 0.01 ㎡ · 측점 하나 다름 — 엔진이 창구 출력을 앞 결과로 재사용
- 창구 출력은 엔진 재사용에서 뺌(savedOut) · 시험 test_365 창구로 연 뒤 초안 = 다시 연 초안

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-17 13:20:56 +09:00
co-authored by Claude Opus 5.5
parent a8217dd52b
commit efd1a2dfed
3 changed files with 58 additions and 4 deletions
+10 -1
View File
@@ -337,6 +337,8 @@ function createPagePipeline(
saved,
)
: list;
/** 다시 셈 창구가 낸 cross 출력(365-4) — 엔진 재사용에서 뺌. */
const savedOut = new WeakSet<object>();
const pipe = createDesignPipeline({
stages: {
route: createRouteStage({
@@ -363,9 +365,11 @@ function createPagePipeline(
// 단면 유형 기본값 = 새 지형 상단측(서버 노선 저장 규칙) — 단계 본문은 그대로 부름 · 저장 노선 = 다시 셈
// 창구 한 벌(카드 · 유토곡선이 보는 상세 설계 · 365-4)
cross: (ctx) => {
// 엔진은 다시 셈 창구가 낸 앞 출력을 이어 쓰지 않음 — 초안 = 새로고침과 같은 값(365-4)
const engine = () =>
crossStage.stage({
...ctx,
prev: ctx.prev && savedOut.has(ctx.prev) ? null : ctx.prev,
inputs: {
...ctx.inputs,
cross: crossWithUphill(
@@ -379,7 +383,12 @@ function createPagePipeline(
!ctx.inputs.route && detail && typeof routeId === "number"
? options.savedCross?.(detail, routeId, ctx.out.ground?.stations ?? [])
: null;
return saved ? saved.then((out) => out ?? engine()) : engine();
if (!saved) return engine();
return saved.then((out) => {
if (!out) return engine();
savedOut.add(out);
return out;
});
},
footprint: footprintStage,
masshaul: createMassHaulStage(() => earthwork),