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

6.7 KiB
Raw Permalink Blame History

前端项目共识文档 (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.jsVite构建配置
  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. 添加单元测试覆盖

共识确认完成,进入架构设计阶段。