fix(nav): 지표면이 필요 없는 화면은 준비 화면을 거치지 않도록
파일을 아직 올리지 않은 새 프로젝트에서 대시보드 -> 파일 입력으로 이동하면 준비 화면(B11)이 확정 지표면을 찾다 실패해 "담당자에게 연락" 장애 안내를 띄웠다. 파일 입력 화면은 3D 지표면을 쓰지 않으므로 준비 자체가 필요 없다. - goToWorkflowStage: 담아 둔 지표면을 실제로 쓰는 B04/B05로 갈 때만 준비 화면 경유, 나머지(B03/B06~B09)는 바로 이동 - 확정 지표면이 없을 때는 장애가 아니라 순서 문제이므로 전용 표식(PRELOAD_NO_SURFACE)을 던지고, 준비 화면은 안내 문구 + [파일 입력 화면으로] 버튼을 보여 준다 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import { createProgressCircle } from "@ui/ui_template_progress";
|
||||
import {
|
||||
markProjectPreloaded,
|
||||
preloadSurfaceAssets,
|
||||
PRELOAD_NO_SURFACE,
|
||||
purgeOtherProjects,
|
||||
readPreloadTarget,
|
||||
} from "../A00_Common/b_asset_cache";
|
||||
@@ -64,10 +65,32 @@ export async function renderB11Loading(root: HTMLElement): Promise<void> {
|
||||
markProjectPreloaded(projectId, signature);
|
||||
navigateTo(target);
|
||||
} catch (error) {
|
||||
// 확정 지표면이 아직 없는 것은 고장이 아니라 순서 문제다 — 장애 안내 대신 할 일을 알린다.
|
||||
if (error instanceof Error && error.message === PRELOAD_NO_SURFACE) {
|
||||
showNoSurface();
|
||||
return;
|
||||
}
|
||||
const detail = error instanceof Error ? ` (${error.message})` : "";
|
||||
showFailure(`${t("B11_Loading_Failed")}${detail}`);
|
||||
}
|
||||
|
||||
function showNoSurface(): void {
|
||||
progress.root.hidden = true;
|
||||
message.textContent = t("B11_Loading_NoSurface");
|
||||
actions.replaceChildren(
|
||||
createButton({
|
||||
label: t("B11_Loading_Btn_FileInput"),
|
||||
variant: "filled",
|
||||
onClick: () => navigateTo(ROUTES.B03_FILE_INPUT),
|
||||
}),
|
||||
createButton({
|
||||
label: t("B11_Loading_Btn_Dashboard"),
|
||||
variant: "ghost",
|
||||
onClick: () => navigateTo(ROUTES.B01_ACCOUNT),
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
function showFailure(text: string): void {
|
||||
progress.root.hidden = true;
|
||||
message.textContent = text;
|
||||
|
||||
Reference in New Issue
Block a user