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

260 lines
8.6 KiB
Markdown
Raw Permalink 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.

# 前端项目对齐文档 (ALIGNMENT)
## 任务名称
frontend-vue3
## 原始需求
在本项目下创建前端项目文件夹。并针对本项目生成简易前端页面,使用Vue3架构。界面简单能实现所有接口功能即可。
## 项目上下文分析
### 后端项目特性
- **技术栈**: FastAPI + MySQL + LangChain + FAISS
- **API Base URL**: http://localhost:8000/api/v1
- **CORS**: 已启用,允许所有来源(开发环境)
- **认证**: 当前未实现认证
- **环境变量**: 使用 .env 文件管理敏感信息
### 后端API模块分析
根据 `docs/api.md` 和项目结构,后端提供以下核心功能:
#### 1. 模型管理 (/models)
- POST /models/ - 创建模型配置
- GET /models/?type={llm|embedding} - 列出模型
- GET /models/{model_id} - 获取模型详情
- PATCH /models/{model_id} - 更新模型配置
- DELETE /models/{model_id} - 删除模型
#### 2. 知识库管理 (/kb)
- POST /kb/ - 创建知识库
- GET /kb/ - 列出知识库
- GET /kb/{kb_id} - 获取知识库详情
- DELETE /kb/{kb_id} - 删除知识库
- POST /kb/{kb_id}/ingest - 摄取文档(支持后台任务)
- POST /kb/{kb_id}/query - 查询知识库(向量检索)
- GET /kb/{kb_id}/status - 获取知识库状态
#### 3. 对话管理 (/conversations)
- POST /conversations/ - 创建会话
- GET /conversations/{conversation_id} - 获取会话详情
- DELETE /conversations/{conversation_id} - 删除会话
- GET /conversations/{conversation_id}/messages - 获取消息列表(分页)
- POST /conversations/{conversation_id}/chat - 发送消息并获取回复
#### 4. Agent执行 (/agent)
- POST /agent/execute - 执行Agent任务
- GET /agent/logs/{agent_id} - 获取Agent执行日志工具调用记录
### 现有项目约束
- **项目根目录**: C:\work\workspace\PycharmProjects\study-work\langchain-learning-kit
- **后端端口**: 8000
- **数据存储**: data/faiss 目录用于FAISS索引
- **环境配置**: .env 文件(需要确保前端不提交敏感信息)
## 需求理解
### 核心目标
创建一个Vue3前端项目提供简洁的UI界面完整覆盖后端所有API功能。
### 功能范围
1. **模型管理页面**: CRUD操作支持LLM和Embedding模型配置
2. **知识库管理页面**: 创建知识库、文档摄取、向量检索
3. **对话页面**: 多轮对话支持RAG上下文注入
4. **Agent页面**: 执行任务,查看工具调用日志
### 技术要求
- **框架**: Vue 3 (Composition API)
- **构建工具**: Vite推荐轻量快速
- **UI库**: 简洁为主建议使用Element Plus或Naive UI
- **HTTP客户端**: Axios
- **状态管理**: Pinia如需要
- **路由**: Vue Router
### 非功能要求
- **界面简洁**: 不需要复杂设计,功能优先
- **代码规范**: 遵循Vue3最佳实践
- **环境隔离**: API_BASE_URL通过环境变量配置
- **错误处理**: 统一处理HTTP错误和业务错误
## 边界确认
### 包含范围 ✅
- 创建独立的前端项目文件夹建议命名frontend-vue3
- 实现所有后端API的前端调用
- 提供基本的页面布局和导航
- 实现核心交互逻辑(表单提交、数据展示、分页等)
- 基本的错误提示和加载状态
### 不包含范围 ❌
- 复杂的UI动画和视觉效果
- 用户认证和权限管理(后端未实现)
- 数据持久化到localStorage除非必要
- 多语言国际化
- 单元测试和E2E测试除非明确要求
- 生产环境优化如CDN、懒加载优化等
## 技术决策
### 1. 项目结构决策
**问题**: 前端项目应该放在哪里?
**决策**: 在项目根目录下创建 `frontend-vue3/` 文件夹,与后端项目平行
**理由**:
- 保持前后端分离
- 便于独立开发和部署
- 符合常见项目组织方式
### 2. UI框架选择
**问题**: 使用哪个UI组件库
**决策**: 使用 **Element Plus**
**理由**:
- Vue3官方推荐
- 组件丰富,文档完善
- 适合快速开发管理后台
- 中文文档友好
### 3. 状态管理
**问题**: 是否需要Pinia
**决策**: **初期不使用Pinia使用组件级状态管理**
**理由**:
- 应用规模较小
- API调用为主状态简单
- 可后续按需引入
### 4. 路由设计
**问题**: 如何组织页面路由?
**决策**: 使用Vue Router采用嵌套路由
**建议路由结构**:
```
/models - 模型管理
/knowledge-base - 知识库管理
/conversations - 对话列表
/conversations/:id/chat - 具体会话
/agent - Agent执行
```
### 5. API调用封装
**问题**: 如何组织API调用代码
**决策**: 创建 `src/api/` 目录,按模块封装
**结构**:
```
src/api/
├── client.js # Axios实例配置
├── models.js # 模型API
├── kb.js # 知识库API
├── conversations.js # 对话API
└── agent.js # Agent API
```
### 6. 环境配置
**问题**: API_BASE_URL如何配置
**决策**: 使用Vite环境变量
```
.env.development: VITE_API_BASE_URL=http://localhost:8000/api/v1
.env.production: VITE_API_BASE_URL=<生产环境URL>
```
## 疑问澄清(需人工确认)
### 关键决策点 ⚠️
#### Q1: 前端项目文件夹命名
- **选项A**: `frontend-vue3` (明确技术栈)
- **选项B**: `frontend` (简洁)
- **选项C**: `web` (通用)
- **推荐**: **frontend-vue3** (方便未来可能的多前端共存)
#### Q2: 知识库文档摄取功能
后端支持 `background: true` 异步摄取,前端需要:
- **选项A**: 只显示提交成功,不跟踪任务状态
- **选项B**: 实现任务状态轮询需要后端job状态API
- **推荐**: **选项A**简化实现后端当前未提供job查询API
#### Q3: 对话历史加载
后端支持分页 `limit``offset`,前端需要:
- **选项A**: 一次性加载所有消息
- **选项B**: 实现滚动加载/分页加载
- **推荐**: **选项B**(遵循最佳实践,限制初始加载量)
#### Q4: Agent日志展示
Agent执行返回 `agent_id`,日志需要单独查询:
- **选项A**: 执行后自动展示日志
- **选项B**: 提供"查看详情"按钮
- **推荐**: **选项A**(用户体验更流畅)
#### Q5: 错误处理粒度
- **选项A**: 简单的全局Toast提示
- **选项B**: 详细的错误信息展示(如表单验证错误)
- **推荐**: **选项B**(便于调试和用户理解)
## 技术实现方案
### 技术栈确定
- **核心框架**: Vue 3.3+ (Composition API)
- **构建工具**: Vite 5.x
- **UI库**: Element Plus 2.x
- **HTTP客户端**: Axios 1.x
- **路由**: Vue Router 4.x
- **CSS方案**: Element Plus内置 + 少量自定义CSS
### 开发环境要求
- Node.js 18+
- npm 9+ 或 pnpm 8+
### 集成约束
- 确保CORS配置正确后端已配置allow_origins=["*"]
- API调用需处理异步状态loading, error
- 表单验证遵循后端API契约
## 验收标准
### 功能完整性
- [ ] 所有后端API都有对应的前端调用
- [ ] 模型管理:创建、列表、详情、更新、删除
- [ ] 知识库管理:创建、列表、删除、摄取、查询、状态查看
- [ ] 对话管理:创建会话、发送消息、查看历史
- [ ] Agent执行提交任务、查看结果和日志
### 用户体验
- [ ] 页面布局清晰,导航便捷
- [ ] 表单验证友好,错误提示明确
- [ ] 加载状态可见Loading指示器
- [ ] 操作反馈及时(成功/失败提示)
### 代码质量
- [ ] 遵循Vue3 Composition API规范
- [ ] API调用统一封装
- [ ] 组件结构清晰,复用性良好
- [ ] 环境配置分离(.env
### 部署就绪
- [ ] 项目可独立构建npm run build
- [ ] 开发服务器可正常启动npm run dev
- [ ] 无硬编码的敏感信息
- [ ] README包含启动和构建说明
## 风险识别
### 技术风险
1. **后端API可能的变更**: 当前基于文档理解,实际调用可能发现不一致
- **缓解措施**: 先实现基础功能,迭代调整
2. **异步任务状态跟踪**: 文档摄取后台任务无法追踪状态
- **缓解措施**: 提供手动刷新按钮
### 依赖风险
1. **Node.js版本兼容性**: 需要Node 18+
- **缓解措施**: 在文档中明确说明
2. **UI库版本**: Element Plus可能有breaking changes
- **缓解措施**: 锁定具体版本号
## 下一步行动
等待人工确认以下关键决策:
1. 前端文件夹命名推荐frontend-vue3
2. 文档摄取任务是否需要状态跟踪(推荐:否)
3. 对话历史加载方式(推荐:分页加载)
4. Agent日志展示方式推荐自动展示
5. 错误处理粒度(推荐:详细展示)
**确认后将进入Architect阶段生成详细的架构设计文档。**