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

8.6 KiB
Raw Permalink Blame History

前端项目对齐文档 (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: 对话历史加载

后端支持分页 limitoffset,前端需要:

  • 选项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阶段生成详细的架构设计文档。