langchain-learning-kit/docs/frontend-vue3/CONSENSUS_frontend-vue3.md

220 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 前端项目共识文档 (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模块映射**:
1. **模型管理** (`/models`)
- 列表展示支持类型筛选llm/embedding
- 创建模型配置表单
- 编辑/删除操作
- 设置默认模型
2. **知识库管理** (`/kb`)
- 知识库列表
- 创建知识库
- 文档摄取(仅显示提交成功)
- 向量检索(查询界面)
- 状态查看(文档数量、索引状态)
- 删除知识库
3. **对话管理** (`/conversations`)
- 会话列表
- 创建会话
- 聊天界面支持RAG切换
- 消息历史分页加载limit/offset
- 删除会话
4. **Agent执行** (`/agent`)
- 任务输入表单
- 执行结果展示
- 工具调用日志(自动展示)
### 技术约束
1. **环境配置**
- API_BASE_URL 通过 `.env` 文件配置
- 不提交 `.env.local` 到版本控制
2. **错误处理**
- HTTP 错误统一拦截Axios interceptor
- 业务错误详细展示ElMessage
- 表单验证使用 Element Plus 规则
3. **状态管理**
- 不使用 Pinia组件级状态足够
- 跨页面数据通过路由参数传递
4. **分页策略**
- 对话消息limit=50, offset支持
- 其他列表暂不分页(数据量小)
## 功能边界
### 已确认实现 ✅
1. **文件夹命名**: `frontend`
2. **文档摄取**: 仅显示提交成功,不追踪任务状态
3. **对话历史**: 分页加载limit/offset
4. **Agent日志**: 执行后自动展示
5. **错误处理**: 详细错误信息展示
### 明确不包含 ❌
- 用户认证和权限管理
- 复杂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 边界值处理不当
- **缓解**: 前端做边界检查,防止无效请求
## 交付清单
### 代码文件
1. 完整的 Vue3 项目frontend/ 文件夹)
2. API 封装模块5个文件
3. 页面组件5个核心页面
4. 路由配置文件
5. Axios 拦截器配置
### 配置文件
1. `.env.development`开发环境API地址
2. `.env.production`生产环境API地址使用占位符
3. `vite.config.js`Vite构建配置
4. `package.json`(依赖锁定)
### 文档
1. `frontend/README.md`(项目启动说明)
2. 环境配置说明
3. API 调用示例(可选)
## 验收检查清单
### 启动验证
- [ ] 后端服务运行在 http://localhost:8000
- [ ] 前端项目 `npm run dev` 成功启动
- [ ] 浏览器访问前端无控制台错误
- [ ] 左侧菜单可正常导航
### 功能验证
- [ ] 创建一个 LLM 模型配置
- [ ] 创建一个知识库并摄取文档
- [ ] 查询知识库返回结果
- [ ] 创建会话并发送消息
- [ ] 执行 Agent 任务并查看日志
### 错误处理验证
- [ ] 输入无效数据提交表单,显示验证错误
- [ ] 后端返回 4xx/5xx显示错误 Toast
- [ ] 网络断开时,显示连接错误
## 后续优化建议(当前不实现)
1. 添加任务状态轮询(需后端支持)
2. 实现用户认证和会话管理
3. 添加数据缓存机制
4. 优化大列表虚拟滚动
5. 添加单元测试覆盖
---
**共识确认完成,进入架构设计阶段。**