fix(frontend): 修复合并审阅发现的构建与契约问题

恢复 Vue TypeScript 生产构建,补齐可运行页面壳子,并修复文件树与 SSE 状态问题。

按 FastAPI Wire Contract 统一 Service DTO 映射,同时补充前端开发说明和问题修复复盘。
This commit is contained in:
2026-08-29 12:10:33 +08:00
parent c6c28e4ebe
commit 610fc77b0f
32 changed files with 1204 additions and 611 deletions
+9 -17
View File
@@ -1,5 +1,6 @@
import { createRouter, createWebHashHistory } from 'vue-router'
import { useWorkspaceStore } from '@/stores/workspace'
import PlaceholderView from '@/features/common/PlaceholderView.vue'
const routes = [
{
@@ -17,59 +18,50 @@ const routes = [
{
path: '/search',
name: 'search',
component: () => import('@/features/search/SearchView.vue'),
component: PlaceholderView,
meta: { title: '搜索', requiresVault: true },
},
{
path: '/chat',
name: 'chat',
component: () => import('@/features/chat/ChatView.vue'),
component: PlaceholderView,
meta: { title: 'AI 对话', requiresVault: true },
},
{
path: '/agent/runs/:runId?',
name: 'agent',
component: () => import('@/features/agent/AgentView.vue'),
component: PlaceholderView,
meta: { title: 'Agent Trace', requiresVault: true },
},
{
path: '/tasks',
name: 'tasks',
component: () => import('@/features/tasks/TasksView.vue'),
component: PlaceholderView,
meta: { title: '任务', requiresVault: true },
},
{
path: '/extensions/skills',
name: 'skills',
component: () => import('@/features/skills/SkillsView.vue'),
component: PlaceholderView,
meta: { title: 'Skill 管理', requiresVault: true },
},
{
path: '/extensions/plugins',
name: 'plugins',
component: () => import('@/features/plugins/PluginsView.vue'),
component: PlaceholderView,
meta: { title: 'Plugin 管理', requiresVault: true },
},
{
path: '/themes',
name: 'themes',
component: () => import('@/features/themes/ThemesView.vue'),
component: PlaceholderView,
meta: { title: '主题管理', requiresVault: true },
},
{
path: '/settings',
name: 'settings',
component: () => import('@/features/settings/SettingsView.vue'),
component: PlaceholderView,
meta: { title: '设置', requiresVault: true },
children: [
{ path: '', redirect: '/settings/general' },
{ path: 'general', component: () => import('@/features/settings/sections/GeneralSection.vue') },
{ path: 'editor', component: () => import('@/features/settings/sections/EditorSection.vue') },
{ path: 'providers', component: () => import('@/features/settings/sections/ProvidersSection.vue') },
{ path: 'index', component: () => import('@/features/settings/sections/IndexSection.vue') },
{ path: 'permissions', component: () => import('@/features/settings/sections/PermissionsSection.vue') },
{ path: 'ai-core', component: () => import('@/features/settings/sections/AiCoreSection.vue') },
],
},
]