Files
YG_FT/frontend/src/router/index.ts
caoxiaozhu 71ce26fff6 feat: 评测模块新增详情页与创建向导
新增 EvalTaskDetail 与逐样本结果类型,Mock 与适配器补充评测详情接口,路由注册详情页并将维度创建并入向导;EvalCreateView 改为分步向导(任务配置、规则设置、维度表单),新增 EvalDetailView 展示综合得分与样本判定,列表补充详情入口,配套两份回归脚本。
2026-07-12 15:39:59 +08:00

245 lines
7.2 KiB
TypeScript

import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'
import { useAuthStore } from '@/stores/auth'
const routes: RouteRecordRaw[] = [
{
path: '/login',
name: 'login',
component: () => import('@/views/login/LoginView.vue'),
meta: { title: '登录', public: true },
},
{
path: '/',
component: () => import('@/layouts/MainLayout.vue'),
redirect: '/dashboard',
children: [
// 服务看板
{
path: 'dashboard',
name: 'dashboard',
component: () => import('@/views/dashboard/DashboardView.vue'),
meta: { title: '服务看板' },
},
// 模型调优
{
path: 'fine-tune',
name: 'fine-tune',
component: () => import('@/views/fine-tune/FineTuneListView.vue'),
meta: { title: '模型微调', pageSurface: 'self' },
},
{
path: 'fine-tune/create',
name: 'fine-tune-create',
component: () => import('@/views/fine-tune/FineTuneCreateView.vue'),
meta: { title: '创建训练任务' },
},
// 模型评测
{
path: 'model-eval',
name: 'model-eval',
component: () => import('@/views/eval/EvalView.vue'),
meta: { title: '模型评测', pageSurface: 'self' },
},
{
path: 'model-eval/create',
name: 'model-eval-create',
component: () => import('@/views/eval/EvalCreateView.vue'),
meta: { title: '新建评测' },
},
{
path: 'model-eval/:id',
name: 'model-eval-detail',
component: () => import('@/views/eval/EvalDetailView.vue'),
meta: { title: '评测详情' },
},
{
path: 'model-eval/dimension/create',
name: 'dimension-create',
redirect: '/model-eval/create',
},
{
path: 'model-eval/dimension/:id/edit',
name: 'dimension-edit',
component: () => import('@/views/eval/DimensionCreateView.vue'),
meta: { title: '编辑评测维度' },
},
// 模型推理
{
path: 'model-inference',
name: 'model-inference',
component: () => import('@/views/inference/InferenceListView.vue'),
meta: { title: '模型推理', pageSurface: 'self' },
},
{
path: 'model-inference/create',
name: 'model-inference-create',
component: () => import('@/views/inference/InferenceCreateView.vue'),
meta: { title: '新建推理' },
},
{
path: 'model-inference/chat/:id',
name: 'inference-chat',
component: () => import('@/views/inference/InferenceChatView.vue'),
meta: { title: '模型对话', pageSurface: 'self' },
},
// 模型对比
{
path: 'model-compare/chat/:id',
name: 'compare-chat',
component: () => import('@/views/compare/CompareChatView.vue'),
meta: { title: '模型对比' },
},
{
path: 'model-compare/result',
name: 'compare-result',
component: () => import('@/views/compare/CompareResultView.vue'),
meta: { title: '对比结果' },
},
// 模型管理
{
path: 'model-manage',
name: 'model-manage',
component: () => import('@/views/model/ModelManageView.vue'),
meta: { title: '模型管理', pageSurface: 'self' },
},
{
path: 'model-manage/create',
name: 'model-manage-create',
component: () => import('@/views/model/ModelCreateView.vue'),
meta: { title: '添加模型' },
},
{
path: 'model-manage/:id/edit',
name: 'model-manage-edit',
component: () => import('@/views/model/ModelCreateView.vue'),
meta: { title: '编辑模型' },
},
{
path: 'model-manage/merge',
name: 'merge-weights',
component: () => import('@/views/model/MergeWeightsView.vue'),
meta: { title: '合并权重' },
},
// 数据处理
{
path: 'data-process',
name: 'data-process',
component: () => import('@/views/data-process/DataProcessListView.vue'),
meta: { title: '数据处理', pageSurface: 'self' },
},
{
path: 'data-process/create',
name: 'data-process-create',
component: () => import('@/views/data-process/DataProcessCreateView.vue'),
meta: { title: '新建数据处理任务', pageSurface: 'self' },
},
// 数据集管理
{
path: 'dataset',
name: 'dataset',
component: () => import('@/views/dataset/DatasetListView.vue'),
meta: { title: '数据集管理', pageSurface: 'self' },
},
{
path: 'dataset/create',
name: 'dataset-create',
component: () => import('@/views/dataset/DatasetCreateView.vue'),
meta: { title: '上传数据集' },
},
{
path: 'dataset/:id/edit',
name: 'dataset-edit',
component: () => import('@/views/dataset/DatasetCreateView.vue'),
meta: { title: '编辑数据集' },
},
{
path: 'dataset/:id/preview',
name: 'dataset-preview',
component: () => import('@/views/dataset/DatasetPreviewView.vue'),
meta: { title: '数据集预览' },
},
// 其他工具
{
path: 'tools',
name: 'tools',
component: () => import('@/views/tools/ToolsView.vue'),
meta: { title: '其他工具' },
},
{
path: 'tools/create',
name: 'tools-create',
component: () => import('@/views/tools/ToolCreateView.vue'),
meta: { title: '添加自定义工具' },
},
{
path: 'tools/:id/edit',
name: 'tools-edit',
component: () => import('@/views/tools/ToolCreateView.vue'),
meta: { title: '编辑自定义工具' },
},
// 数据类型转换
{
path: 'data-convert',
name: 'data-convert',
component: () => import('@/components/PlaceholderView.vue'),
meta: { title: '数据类型转换' },
},
// 系统设置
{
path: 'hardware',
name: 'hardware',
component: () => import('@/views/system/HardwareView.vue'),
meta: { title: '平台性能' },
},
{
path: 'logs',
name: 'logs',
component: () => import('@/views/system/LogsView.vue'),
meta: { title: '查看日志' },
},
{
path: 'training-log/:id',
name: 'training-log',
component: () => import('@/views/system/TrainingLogView.vue'),
meta: { title: '训练日志' },
},
],
},
{
path: '/:pathMatch(.*)*',
redirect: '/dashboard',
},
]
const router = createRouter({
history: createWebHistory(),
routes,
})
// 全局守卫:登录校验 + 会话超时
router.beforeEach((to, _from, next) => {
const auth = useAuthStore()
document.title = to.meta.title ? `${to.meta.title} - 远光软件微调平台` : '远光软件微调平台'
if (to.meta.public) {
// 已登录访问登录页则跳转主页
if (to.name === 'login' && auth.isLoggedIn) {
next('/dashboard')
return
}
next()
return
}
if (!auth.isLoggedIn) {
next({ name: 'login' })
return
}
// 续期会话
auth.refresh()
next()
})
export default router