Merge pull request #1202 from pikasTech/fix/v03-workbench-entry-1199
fix: 修复 v0.3 Vue 工作台 bootstrap 降级
This commit is contained in:
@@ -60,7 +60,7 @@ function readWidth(): number {
|
||||
<p class="page-eyebrow">Sessions</p>
|
||||
<h2>显式会话</h2>
|
||||
</div>
|
||||
<button class="btn btn-primary btn-sm" type="button" @click="workbench.createSession">新建</button>
|
||||
<button id="session-create" class="btn btn-primary btn-sm" type="button" @click="workbench.createSession">新建</button>
|
||||
</div>
|
||||
<div class="session-model-channel" id="session-model-channel">模型通道:{{ workbench.providerProfile }}</div>
|
||||
<div class="session-list" id="session-tabs">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { authAPI, type WorkspaceBootstrapResponse } from "@/api";
|
||||
import { authAPI, workbenchAPI, type WorkspaceBootstrapResponse } from "@/api";
|
||||
import type { ApiResult, WorkspaceRecord } from "@/types";
|
||||
import { DEFAULT_WORKBENCH_PROJECT_ID, asRecord, normalizeWorkbenchProjectId } from "@/utils";
|
||||
|
||||
@@ -20,8 +20,36 @@ export async function consumeEarlyWorkspaceBootstrap(projectId: string): Promise
|
||||
export async function resolveWorkspaceBootstrap(projectId: string): Promise<ApiResult<WorkspaceBootstrapResponse>> {
|
||||
const normalizedProjectId = normalizeWorkbenchProjectId(projectId) ?? DEFAULT_WORKBENCH_PROJECT_ID;
|
||||
const early = await consumeEarlyWorkspaceBootstrap(normalizedProjectId);
|
||||
if (early) return early;
|
||||
return authAPI.workspaceBootstrap(normalizedProjectId);
|
||||
if (early && (early.ok || early.status !== 404)) return early;
|
||||
const primary = await authAPI.workspaceBootstrap(normalizedProjectId);
|
||||
if (primary.ok || primary.status !== 404) return primary;
|
||||
return resolveWorkspaceBootstrapFallback(normalizedProjectId, primary);
|
||||
}
|
||||
|
||||
async function resolveWorkspaceBootstrapFallback(projectId: string, primary: ApiResult<WorkspaceBootstrapResponse>): Promise<ApiResult<WorkspaceBootstrapResponse>> {
|
||||
const session = await authAPI.session();
|
||||
const sessionPayload = session.data ?? { authenticated: false, mode: "server" as const };
|
||||
if (!session.ok || sessionPayload.authenticated !== true) {
|
||||
return {
|
||||
ok: session.ok,
|
||||
status: session.status,
|
||||
data: { ...sessionPayload, projectId, workspace: null, workspaceStatus: null, workspaceError: primary.error ?? primary.status },
|
||||
error: session.error
|
||||
};
|
||||
}
|
||||
const workspace = await workbenchAPI.workspace(projectId);
|
||||
return {
|
||||
ok: true,
|
||||
status: session.status,
|
||||
data: {
|
||||
...sessionPayload,
|
||||
projectId,
|
||||
workspace: workspace.ok ? workspace.data?.workspace ?? null : null,
|
||||
workspaceStatus: workspace.status,
|
||||
workspaceError: workspace.ok ? null : workspace.error ?? workspace.status
|
||||
},
|
||||
error: null
|
||||
};
|
||||
}
|
||||
|
||||
export function publishWorkspaceBootstrap(projectId: string, workspace: WorkspaceRecord | null | undefined): void {
|
||||
|
||||
@@ -17,7 +17,7 @@ useAutoRefresh(() => workbench.refreshLive(), 30_000);
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<section class="workbench-route">
|
||||
<section id="workspace" class="workbench-route">
|
||||
<PageHeader eyebrow="Workbench" title="Code Workbench" description="Code Agent 是平台控制台中的一个应用页面;session、trace、HWPOD evidence 仍走 Cloud Web 同源 API。" />
|
||||
<div class="workbench-status-row">
|
||||
<StatusBadge :status="workbench.chatPending ? 'running' : 'source'" :label="workbench.chatPending ? '处理中' : 'SOURCE'" />
|
||||
|
||||
Reference in New Issue
Block a user