feat: 完成全量功能开发,包括前端管理后台与后端服务优化

此提交实现了完整的知识库管理系统:
1. 新增Vue3 + Antd Vue前端管理后台,包含登录、文档管理、检索、类目设置等完整页面
2. 重构后端LLM调用抽象层,支持Ollama与OpenAI兼容服务动态切换
3. 调整默认嵌入模型配置为本地bge-m3模式
4. 优化入库任务去重逻辑与缓存清理机制
5. 完善Docker镜像构建与docker-compose部署配置
6. 修复多项测试用例与兼容性问题
7. 新增运行时配置API,支持动态调整系统参数
This commit is contained in:
2026-07-31 12:05:25 +08:00
parent fdb664e546
commit 2ab8b56a01
52 changed files with 7030 additions and 171 deletions
+91
View File
@@ -0,0 +1,91 @@
import { createRouter, createWebHistory } from 'vue-router'
import { useAuthStore } from '@/stores/useAuthStore'
const routes = [
{
path: '/login',
name: 'login',
component: () => import('@/views/Login.vue'),
meta: { title: '登录', requiresAuth: false }
},
{
path: '/',
component: () => import('@/layouts/MainLayout.vue'),
redirect: '/overview',
meta: { requiresAuth: true },
children: [
{
path: 'overview',
name: 'overview',
component: () => import('@/views/Overview.vue'),
meta: { title: '概览', requiresAuth: true }
},
{
path: 'documents',
name: 'documents',
component: () => import('@/views/Documents.vue'),
meta: { title: '文档管理', requiresAuth: true }
},
{
path: 'ingest',
name: 'ingest',
component: () => import('@/views/Ingest.vue'),
meta: { title: '文档入库', requiresAuth: true }
},
{
path: 'search',
name: 'search',
component: () => import('@/views/Search.vue'),
meta: { title: '检索测试台', requiresAuth: true }
},
{
path: 'categories',
name: 'categories',
component: () => import('@/views/Categories.vue'),
meta: { title: '类目列表', requiresAuth: true }
},
{
path: 'settings',
name: 'settings',
component: () => import('@/views/Settings.vue'),
meta: { title: '设置', requiresAuth: true }
}
]
},
{
path: '/:pathMatch(.*)*',
name: 'not-found',
redirect: '/overview'
}
]
const router = createRouter({
history: createWebHistory('/admin/'),
routes,
scrollBehavior() {
return { top: 0 }
}
})
// 全局前置守卫:未登录跳 /login;已登录访问 /login 跳 /overview
router.beforeEach((to) => {
const authStore = useAuthStore()
const title = to.meta?.title
if (title) {
document.title = `${title} - QMDSearch 知识库后台`
} else {
document.title = 'QMDSearch 知识库后台'
}
if (to.meta?.requiresAuth && !authStore.isAuthenticated) {
return { name: 'login', query: { redirect: to.fullPath } }
}
if (to.name === 'login' && authStore.isAuthenticated) {
return { name: 'overview' }
}
return true
})
export default router