fix(451 B06 초안 버림): 버림 차례가 뒤 cross 입력에 밀려도 마지막 차례 끝에서 되돌림 — B05 와 같게
- 버림 차례가 뒤 차례에 밀림(dropped) · 노선 초안 그대로 없음 = 마지막 차례 끝에서 finishDrop 다시(새 초안이 밀면 안 함) - 밀어낸 차례도 조용히(가게에 측점 안 냄 · 종단도는 되돌림 뒤 저장 기준) - 새 test_451_drop_cross(진짜 묶음 · 가짜 지형) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -223,6 +223,8 @@ function createPagePipeline(
|
||||
} | null = null;
|
||||
/** 초안을 버린 차례가 끝나 되돌림까지 마치는 약속(종단도는 그 뒤 저장 기준으로 — 349-0l). */
|
||||
let dropping: Promise<string> | null = null;
|
||||
/** 초안을 버린 차례가 되돌림까지 못 감(뒤 차례에 밀림) — 뒤 차례도 조용히 · 그 끝에서 되돌림(B06 cross · 451). */
|
||||
let dropPending = false;
|
||||
/** 노선 초안 전 가게 관 · 구조물 — 초안 동안 follow 가 새 측점을 가게에 씀 · 초안을 버리면 이것으로. */
|
||||
let beforeDraft: Facilities | null = null;
|
||||
/** 묶음이 가게에 마지막으로 쓴 관 · 구조물 · 쓰는 동안(메아리 — 다시 입력으로 안 받음). */
|
||||
@@ -402,6 +404,11 @@ function createPagePipeline(
|
||||
* 기록에) · 그 상세가 저장 정본(다시 하기도 같은 기준). 차례 끝에서 판정 — ground 를 건너뛰어도 · 사진첩
|
||||
* 되돌리기가 가게 초안을 먼저 비워도(349-0m). */
|
||||
const finishDrop = async (record: PipelineRunRecord): Promise<string> => {
|
||||
// 뒤 차례(B06 cross 등)에 밀림 · 초안은 그대로 버려짐 — 마지막 차례 끝에서 되돌림(B05 와 같게)
|
||||
const pushed = record.outcome === "dropped" && record.generation !== pipe.generation;
|
||||
if (pushed && dropPending && !pipe.input("route"))
|
||||
return (lastRun as Promise<PipelineRunRecord>).then(finishDrop);
|
||||
dropPending = false;
|
||||
const routeId = canon?.routeId;
|
||||
const stations = pipe.output("ground")?.stations ?? [];
|
||||
let why: string = record.outcome; // 새 조작에 밀림 · 단계 실패 — 초안 전 상세는 그대로 둠
|
||||
@@ -534,6 +541,7 @@ function createPagePipeline(
|
||||
// 초안 둔 채 열기(새로고침 · B06 바로 열기 · 365-1) — 초안 전 = 지금 저장 상세(세션 그대로) · 측점은 가게에 냄
|
||||
held = inputs.route ? (held ?? holdNow()) : null;
|
||||
dropping = null;
|
||||
dropPending = false;
|
||||
Object.assign(given, inputs);
|
||||
const run = (lastRun = pipe.start(inputs));
|
||||
trackPageBusy(projectId, run); // 「계산 중」 점(386-2)
|
||||
@@ -549,6 +557,7 @@ function createPagePipeline(
|
||||
given[SOURCE_INPUT[source]] = value as never;
|
||||
const run = pipe.update(source, value, part);
|
||||
if (run) trackPageBusy(projectId, (lastRun = run));
|
||||
if (run && dropPending && !pipe.input("route")) quietGeneration = pipe.generation; // 되돌림이 맡음
|
||||
return run;
|
||||
};
|
||||
let reconciling: Promise<number> | null = null;
|
||||
@@ -648,6 +657,7 @@ function createPagePipeline(
|
||||
const run = feed("route", draft, routeRange(before, after));
|
||||
if (run && !draft && wasDraft) {
|
||||
quietGeneration = pipe.generation;
|
||||
dropPending = true;
|
||||
dropping = run.then(finishDrop);
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user