fix(frontend): 修复工作台页面构建与类型收口

This commit is contained in:
2026-06-01 05:33:16 +08:00
parent ebe0fc5a12
commit eb64af9d50
5 changed files with 13 additions and 7 deletions

View File

@@ -16,7 +16,9 @@ describe('attachments api', () => {
sourceId: '1001',
});
const [url, body] = vi.mocked(post).mock.calls[0];
const firstCall = vi.mocked(post).mock.calls[0];
expect(firstCall).toBeDefined();
const [url, body] = firstCall as [string, FormData];
expect(url).toBe('/attachments/upload');
expect(body).toBeInstanceOf(FormData);

View File

@@ -40,7 +40,9 @@ export interface ModelRouteRule {
matchScope: string;
scopeId?: string;
primaryModelId: string;
primaryModelCode?: string;
fallbackModelIdsJson?: string;
fallbackModelCode?: string;
routeStrategy: string;
maxLatencyMs?: number;
enabled: boolean;

View File

@@ -66,8 +66,9 @@ async function loadServers() {
try {
const response = await listMcpServers();
servers.value = response.data ?? [];
if (!selectedServerCode.value && servers.value.length > 0) {
selectedServerCode.value = servers.value[0].serverCode;
const firstServer = servers.value[0];
if (!selectedServerCode.value && firstServer?.serverCode) {
selectedServerCode.value = firstServer.serverCode;
}
} finally {
loading.value = false;
@@ -193,7 +194,7 @@ onMounted(async () => {
</button>
</div>
<p v-if="selectedServer" class="capability-summary" data-test="mcp-selected-server">
当前服务{{ selectedServer.serverName }} / {{ selectedServer.importType }} / {{ selectedServer.healthStatus }}
当前服务{{ selectedServer?.serverName }} / {{ selectedServer?.importType }} / {{ selectedServer?.healthStatus }}
</p>
<div class="capability-grid" v-loading="capabilityLoading">
<article v-for="item in capabilities" :key="item.capabilityCode" :data-test="`mcp-capability-${item.capabilityCode}`">

View File

@@ -52,7 +52,7 @@ onMounted(loadWorkspace);
<div v-for="route in workspace?.routes ?? []" :key="route.id || route.taskType" class="table-row" :data-test="`model-route-${route.taskType}`">
<strong>{{ route.taskType }}</strong>
<span>{{ route.primaryModelCode || route.primaryModelId }}</span>
<span>{{ route.fallbackModelCode || route.fallbackModelId || '无' }}</span>
<span>{{ route.fallbackModelCode || route.fallbackModelIdsJson || '无' }}</span>
<span class="status-cell">
<span class="status-pill" :class="routeStatus(route.enabled) === '启用' ? 'is-success' : 'is-warning'">
{{ routeStatus(route.enabled) }}

View File

@@ -47,8 +47,9 @@ async function loadRuns() {
try {
const response = await listObservabilityRuns();
runs.value = response.data ?? [];
if (runs.value.length > 0) {
await loadTrace(runs.value[0].requestId);
const firstRun = runs.value[0];
if (firstRun?.requestId) {
await loadTrace(firstRun.requestId);
}
} finally {
loading.value = false;