知识库前端功能说明 ================== ## 已实现的功能 ### 1. 知识库状态管理 (stores/knowledgeBase.js) 使用 Pinia 实现的知识库状态管理,包含: **状态 (State)** - knowledgeBases: 知识库列表 - currentKnowledgeBase: 当前选中的知识库 - total: 知识库总数 - currentPage: 当前页码 - pageSize: 每页数量 - isLoading: 加载状态 - error: 错误信息 **方法 (Actions)** - fetchKnowledgeBases(page, size): 获取知识库列表(支持分页) - fetchKnowledgeBase(id): 获取知识库详情 - createKnowledgeBase(data): 创建知识库 - updateKnowledgeBase(id, data): 更新知识库 - deleteKnowledgeBase(id): 删除知识库 - clearError(): 清空错误信息 - reset(): 重置所有状态 ### 2. 知识库管理页面 (views/KnowledgeBase.vue) 完整的知识库管理界面,包含: **页面布局** - 左侧边栏:显示用户信息、导航菜单、知识库列表 - 右侧主区域:显示知识库详情和操作 **功能特性** ✅ 创建知识库 - 点击"新建知识库"按钮 - 填写知识库名称(必填)和描述(可选) - 支持表单验证 ✅ 查看知识库列表 - 左侧边栏显示所有知识库 - 支持分页浏览 - 显示知识库名称、描述、创建时间 - 高亮当前选中的知识库 ✅ 查看知识库详情 - 点击左侧知识库项查看详情 - 显示完整信息(名称、描述、创建时间、更新时间) - 预留文件管理区域 ✅ 编辑知识库 - 点击"编辑"按钮打开编辑模态框 - 可修改名称和描述 - 实时更新显示 ✅ 删除知识库 - 点击"删除"按钮 - 弹出确认对话框 - 删除后自动刷新列表 ✅ 导航功能 - 可在"对话"和"知识库"页面之间切换 - 保持用户登录状态 ### 3. 路由配置更新 (router/index.js) 新增知识库路由: - 路径: /knowledge-base - 名称: KnowledgeBase - 需要认证: 是 ### 4. Chat 页面更新 (views/Chat.vue) 在聊天页面侧边栏添加导航菜单: - "对话" 按钮(当前页面) - "知识库" 按钮(跳转到知识库管理) ## 使用方法 ### 启动前端开发服务器 ```bash cd web npm install # 首次运行需要安装依赖 npm run dev ``` 访问: http://localhost:5173 ### 功能演示流程 1. **登录系统** - 访问登录页面 - 使用用户名密码登录或 GitHub 登录 2. **进入知识库管理** - 在聊天页面点击侧边栏的"知识库"按钮 - 或直接访问 /knowledge-base 3. **创建知识库** - 点击"新建知识库"按钮 - 输入名称(必填):例如 "Python 学习资料" - 输入描述(可选):例如 "包含 Python 编程相关的文档和教程" - 点击"创建"按钮 4. **查看知识库** - 左侧列表显示所有知识库 - 点击任意知识库查看详情 - 右侧显示完整信息 5. **编辑知识库** - 选中一个知识库 - 点击右上角"编辑"按钮 - 修改名称或描述 - 点击"保存" 6. **删除知识库** - 选中一个知识库 - 点击右上角"删除"按钮 - 确认删除操作 7. **分页浏览** - 当知识库数量超过 20 个时 - 使用左侧底部的分页按钮切换页面 ## 界面特性 ### 响应式设计 - 适配不同屏幕尺寸 - 流畅的动画效果 - 现代化的 UI 设计 ### 用户体验优化 - 加载状态提示 - 错误信息展示 - 操作确认对话框 - 实时数据更新 - 友好的空状态提示 ### 视觉效果 - 渐变色头部背景 - 卡片阴影效果 - 悬停动画 - 图标配合文字 - 统一的配色方案 ## 技术栈 - Vue 3 (Composition API) - Vue Router 4 - Pinia (状态管理) - Axios (HTTP 请求) - Bootstrap 5 (UI 框架) - Bootstrap Icons (图标) ## 文件结构 ``` web/src/ ├── stores/ │ ├── auth.js # 认证状态管理 │ ├── chat.js # 聊天状态管理 │ └── knowledgeBase.js # 知识库状态管理 (新增) ├── views/ │ ├── Chat.vue # 聊天页面 (已更新) │ ├── KnowledgeBase.vue # 知识库管理页面 (新增) │ ├── Login.vue # 登录页面 │ └── GithubCallback.vue # GitHub 回调页面 ├── router/ │ └── index.js # 路由配置 (已更新) ├── App.vue # 根组件 └── main.js # 入口文件 ``` ## API 集成 前端通过 Axios 调用后端 API: - GET /api/knowledge-base - 获取知识库列表 - POST /api/knowledge-base - 创建知识库 - GET /api/knowledge-base/{id} - 获取知识库详情 - PUT /api/knowledge-base/{id} - 更新知识库 - DELETE /api/knowledge-base/{id} - 删除知识库 所有请求自动携带 JWT token 进行认证。 ## 错误处理 - 网络错误:显示友好的错误提示 - 认证失败:自动跳转到登录页 - 业务错误:在模态框中显示具体错误信息 - 操作失败:保持当前状态,允许用户重试 ## 状态管理 使用 Pinia 进行全局状态管理: - 自动同步后端数据 - 乐观更新策略 - 错误回滚机制 - 缓存管理 ## 下一步开发建议 1. **文件上传功能** - 在知识库详情页添加文件上传组件 - 支持拖拽上传 - 显示上传进度 - 文件列表管理 2. **搜索功能** - 添加知识库搜索框 - 支持按名称搜索 - 支持按描述搜索 3. **排序功能** - 按创建时间排序 - 按更新时间排序 - 按名称排序 4. **批量操作** - 批量选择知识库 - 批量删除 - 批量导出 5. **知识库统计** - 显示文件数量 - 显示总大小 - 显示使用情况 6. **分享功能** - 生成分享链接 - 设置访问权限 - 协作功能 ## 注意事项 1. 确保后端 API 服务正在运行 2. 确保数据库表已创建 3. 确保前端环境变量配置正确 4. 首次使用需要先登录获取 token 5. 知识库名称在同一用户下必须唯一 ## 常见问题 ### Q: 页面显示空白? A: 检查浏览器控制台是否有错误,确认后端 API 是否正常运行。 ### Q: 创建知识库失败? A: 检查是否已登录,知识库名称是否重复。 ### Q: 无法删除知识库? A: 确认该知识库属于当前用户,检查网络连接。 ### Q: 页面加载慢? A: 检查网络连接,考虑增加分页大小或实现虚拟滚动。 ## 开发建议 1. 使用 Vue DevTools 调试状态 2. 使用浏览器开发者工具查看网络请求 3. 遵循 Vue 3 最佳实践 4. 保持代码简洁和可维护性 5. 添加适当的注释 ## 总结 知识库前端功能已完整实现,包括: - ✅ 完整的 CRUD 操作 - ✅ 现代化的 UI 设计 - ✅ 良好的用户体验 - ✅ 完善的错误处理 - ✅ 响应式布局 - ✅ 状态管理 - ✅ 路由集成 可以直接使用,并为后续功能扩展预留了空间。