6.7 KiB
6.7 KiB
前端项目共识文档 (CONSENSUS)
任务名称
frontend-vue3
需求描述
在项目根目录下创建名为 frontend 的前端项目文件夹,使用 Vue3 架构构建简易前端页面,实现所有后端 API 功能。
技术实现方案
核心技术栈
- 框架: Vue 3.3+ (Composition API)
- 构建工具: Vite 5.x
- UI组件库: Element Plus 2.x
- HTTP客户端: Axios 1.x
- 路由管理: Vue Router 4.x
- CSS方案: Element Plus + 少量自定义样式
项目结构
frontend/
├── public/
├── src/
│ ├── api/ # API调用封装
│ │ ├── client.js # Axios实例配置
│ │ ├── models.js # 模型管理API
│ │ ├── kb.js # 知识库API
│ │ ├── conversations.js # 对话API
│ │ └── agent.js # Agent API
│ ├── components/ # 公共组件
│ ├── views/ # 页面组件
│ │ ├── Models.vue # 模型管理页
│ │ ├── KnowledgeBase.vue # 知识库页
│ │ ├── Conversations.vue # 对话列表页
│ │ ├── Chat.vue # 聊天页
│ │ └── Agent.vue # Agent执行页
│ ├── router/ # 路由配置
│ ├── utils/ # 工具函数
│ ├── App.vue # 根组件
│ └── main.js # 入口文件
├── .env.development # 开发环境配置
├── .env.production # 生产环境配置
├── vite.config.js # Vite配置
├── package.json # 依赖管理
└── README.md # 项目说明
路由设计
/ # 首页(重定向到/models)
/models # 模型管理
/knowledge-base # 知识库管理
/conversations # 对话列表
/conversations/:id/chat # 具体会话聊天页
/agent # Agent执行
API集成方案
Base URL: http://localhost:8000/api/v1 (通过环境变量配置)
API模块映射:
-
模型管理 (
/models)- 列表展示(支持类型筛选:llm/embedding)
- 创建模型配置表单
- 编辑/删除操作
- 设置默认模型
-
知识库管理 (
/kb)- 知识库列表
- 创建知识库
- 文档摄取(仅显示提交成功)
- 向量检索(查询界面)
- 状态查看(文档数量、索引状态)
- 删除知识库
-
对话管理 (
/conversations)- 会话列表
- 创建会话
- 聊天界面(支持RAG切换)
- 消息历史(分页加载,limit/offset)
- 删除会话
-
Agent执行 (
/agent)- 任务输入表单
- 执行结果展示
- 工具调用日志(自动展示)
技术约束
-
环境配置
- API_BASE_URL 通过
.env文件配置 - 不提交
.env.local到版本控制
- API_BASE_URL 通过
-
错误处理
- HTTP 错误统一拦截(Axios interceptor)
- 业务错误详细展示(ElMessage)
- 表单验证使用 Element Plus 规则
-
状态管理
- 不使用 Pinia(组件级状态足够)
- 跨页面数据通过路由参数传递
-
分页策略
- 对话消息:limit=50, offset支持
- 其他列表暂不分页(数据量小)
功能边界
已确认实现 ✅
- 文件夹命名:
frontend - 文档摄取: 仅显示提交成功,不追踪任务状态
- 对话历史: 分页加载(limit/offset)
- Agent日志: 执行后自动展示
- 错误处理: 详细错误信息展示
明确不包含 ❌
- 用户认证和权限管理
- 复杂UI动画
- 单元测试和E2E测试
- 国际化多语言
- 数据持久化到localStorage
- 任务状态轮询机制
验收标准
功能完整性
- 所有API接口都有对应的前端调用
- 模型管理:CRUD + 列表筛选 + 默认模型设置
- 知识库:CRUD + 文档摄取 + 向量查询 + 状态查看
- 对话:创建会话 + 发送消息 + 分页历史 + RAG切换
- Agent:任务执行 + 结果展示 + 日志自动加载
用户体验
- 页面布局清晰,左侧菜单导航
- 表单验证完整,错误提示明确
- Loading状态可见(ElLoading)
- 操作成功/失败 Toast 提示(ElMessage)
- 响应式布局(适配常见屏幕尺寸)
代码质量
- 遵循 Vue3 Composition API 规范
- API 调用统一封装在
src/api/ - 组件拆分合理,单一职责
- 环境变量正确配置(.env.development/.env.production)
- 无硬编码敏感信息
部署就绪
npm install成功安装依赖npm run dev启动开发服务器(默认5173端口)npm run build成功构建生产包- README 包含启动说明和环境要求
技术风险及缓解
风险1: CORS问题
- 影响: 前端无法调用后端API
- 缓解: 后端已配置
allow_origins=["*"],开发环境无需额外配置
风险2: API响应格式差异
- 影响: 文档与实际接口不一致
- 缓解: 先实现核心功能,发现问题后快速调整
风险3: 异步任务状态
- 影响: 文档摄取后无法确认完成状态
- 缓解: 提供手动刷新按钮,用户可重新查询状态
风险4: 分页参数边界
- 影响: offset/limit 边界值处理不当
- 缓解: 前端做边界检查,防止无效请求
交付清单
代码文件
- 完整的 Vue3 项目(frontend/ 文件夹)
- API 封装模块(5个文件)
- 页面组件(5个核心页面)
- 路由配置文件
- Axios 拦截器配置
配置文件
.env.development(开发环境API地址).env.production(生产环境API地址,使用占位符)vite.config.js(Vite构建配置)package.json(依赖锁定)
文档
frontend/README.md(项目启动说明)- 环境配置说明
- API 调用示例(可选)
验收检查清单
启动验证
- 后端服务运行在 http://localhost:8000
- 前端项目
npm run dev成功启动 - 浏览器访问前端无控制台错误
- 左侧菜单可正常导航
功能验证
- 创建一个 LLM 模型配置
- 创建一个知识库并摄取文档
- 查询知识库返回结果
- 创建会话并发送消息
- 执行 Agent 任务并查看日志
错误处理验证
- 输入无效数据提交表单,显示验证错误
- 后端返回 4xx/5xx,显示错误 Toast
- 网络断开时,显示连接错误
后续优化建议(当前不实现)
- 添加任务状态轮询(需后端支持)
- 实现用户认证和会话管理
- 添加数据缓存机制
- 优化大列表虚拟滚动
- 添加单元测试覆盖
共识确认完成,进入架构设计阶段。