# Finyx Frontend 代码架构说明文档 ## 项目简介 Finyx Frontend 是一个基于 Vue 3 + TypeScript + Vite 构建的企业级前端应用,主要提供智能问答、智能写作、智能审核和知识库管理等核心功能。 ## 技术架构 ### 核心技术栈 | 技术 | 版本 | 用途 | |------|------|------| | Vue | 3.3.4 | 前端框架 | | TypeScript | 5.1.6 | 类型系统 | | Vite | 6.3.5 | 构建工具 | | Element Plus | 2.9.1 | UI组件库 | | Pinia | 2.1.6 | 状态管理 | | Vue Router | 4.2.4 | 路由管理 | | Axios | 0.28.0 | HTTP客户端 | | CodeMirror | 6.0.1 | 代码编辑器 | | md-editor-v3 | 5.8.4 | Markdown编辑器 | ### 项目结构 ``` finyx_frontend/ ├── docs/ # 文档目录 ├── env/ # 环境变量配置 ├── mock/ # Mock数据 ├── public/ # 静态资源 ├── src/ │ ├── api/ # API接口定义 │ │ ├── dada.ts # 用户认证API │ │ ├── finyxbot.ts # Finyx Bot API │ │ ├── review.ts # 审核API │ │ └── writing.ts # 写作API │ ├── assets/ # 资源文件 │ │ ├── agent/ # 智能体相关图标 │ │ ├── dataset/ # 数据集图标 │ │ ├── fileType/ # 文件类型图标 │ │ ├── icons/ # SVG图标 │ │ └── logo/ # Logo资源 │ ├── bus/ # 事件总线 │ │ └── index.ts # 事件总线实例 │ ├── components/ # 全局组件 │ │ ├── app-avatar/ # 头像组件 │ │ ├── app-charts/ # 图表组件 │ │ ├── app-table/ # 表格组件 │ │ ├── card-box/ # 卡片组件 │ │ ├── markdown/ # Markdown组件 │ │ └── ... # 其他组件 │ ├── directives/ # 自定义指令 │ │ ├── clickoutside.ts # 点击外部指令 │ │ ├── infiniteScrollUp.ts # 无限滚动指令 │ │ ├── pathToSrc.ts # 路径转换指令 │ │ └── resize.ts # 尺寸监听指令 │ ├── enums/ # 枚举定义 │ │ └── application.ts # 应用枚举 │ ├── layout/ # 布局组件 │ │ ├── AppLayout.vue # 主布局 │ │ ├── AppNoMenu.vue # 无菜单布局 │ │ └── components/ # 布局子组件 │ ├── request/ # HTTP请求封装 │ │ ├── http.ts # 主请求封装 │ │ ├── reviewHttp.ts # 审核请求 │ │ ├── writingHttp.ts # 写作请求 │ │ └── fetchWithAbort.ts # 可取消请求 │ ├── router/ # 路由配置 │ │ ├── index.ts # 路由实例 │ │ └── routes.ts # 路由定义 │ ├── servers/ # 服务层API │ │ ├── base/ # 基础服务 │ │ │ └── api/ # 基础API(组织、员工、角色等) │ │ ├── finyx/ # Finyx业务服务 │ │ │ └── api/ # 业务API(知识库、智能体等) │ │ └── oauth/ # 认证服务 │ │ └── api/ # 认证API │ ├── stores/ # Pinia状态管理 │ │ ├── index.ts # Store入口 │ │ └── modules/ # Store模块 │ │ ├── dada.ts # 用户认证Store │ │ ├── docs.ts # 文档Store │ │ ├── chat.ts # 聊天Store │ │ ├── answerSetting.ts # 问答设置Store │ │ └── knowledge.ts # 知识库Store │ ├── styles/ # 全局样式 │ │ ├── index.scss # 样式入口 │ │ ├── variables.scss # CSS变量 │ │ ├── element-plus.scss # Element Plus样式覆盖 │ │ └── app.scss # 应用样式 │ ├── utils/ # 工具函数 │ │ ├── common.ts # 通用工具 │ │ ├── crypto.ts # 加密工具 │ │ ├── storage.ts # 存储工具 │ │ ├── time.ts # 时间工具 │ │ └── ... # 其他工具 │ ├── views/ # 页面组件 │ │ ├── chat/ # 聊天页面 │ │ ├── knowledge/ # 知识中心 │ │ ├── login/ # 登录页面 │ │ └── smart/ # 智能中心 │ ├── App.vue # 根组件 │ └── main.ts # 应用入口 ├── vite.config.ts # Vite配置 ├── tsconfig.json # TypeScript配置 └── package.json # 项目配置 ``` ## 核心模块说明 ### 1. 路由系统 (router/) #### 路由结构 - **智能中心** (`/smart`) - 智能问答 (`/smart/answer/index`) - 智能写作 (`/smart/writing/list`) - 智能审核 (`/smart/review/list`) - **知识中心** (`/knowledge`) - 知识库管理 (`/knowledge/dataset/index`) - 文档管理 (`/knowledge/document/index`) - 标签管理 (`/knowledge/tag/index`) #### 路由守卫 - 认证检查:未登录用户自动跳转登录页 - 权限验证:根据路由meta中的permission字段验证权限 - Token处理:支持通过query参数传递token ### 2. 状态管理 (stores/) #### Store模块 **dada Store** (`stores/modules/dada.ts`) - 用户认证信息 - Token管理 - 租户信息 - 用户基本信息 **docs Store** (`stores/modules/docs.ts`) - 文档相关状态 **chat Store** (`stores/modules/chat.ts`) - 聊天会话状态 - 消息历史 **answerSetting Store** (`stores/modules/answerSetting.ts`) - 智能问答设置 - 模型配置 **knowledge Store** (`stores/modules/knowledge.ts`) - 知识库状态 - 文档列表 ### 3. HTTP请求封装 (request/) #### 请求拦截器 - 自动添加认证头:Token、TenantId、AuthId、ApplicationId - 统一错误处理:处理token失效、权限错误等 #### 响应拦截器 - Token失效处理:自动清除token并跳转登录 - 错误码处理: - 11011-11016: 认证相关错误 - 11051: 权限不足 #### 请求方法 - `get`: GET请求 - `post`: POST请求 - `put`: PUT请求 - `del`: DELETE请求 - `exportExcel`: 导出Excel - `exportFile`: 导出文件 - `postStream`: 流式请求 ### 4. 服务层 (servers/) #### 服务分类 **base服务** (`servers/base/api/`) - 组织管理 (`zuzhi.ts`) - 员工管理 (`yuangong.ts`) - 角色管理 (`jiaose.ts`) - 岗位管理 (`gangwei.ts`) - 文件上传 (`wenjianshangchuan.ts`) - 业务附件 (`yewufujian.ts`) **finyx服务** (`servers/finyx/api/`) - 知识库 (`zhishiku.ts`) - 文档 (`wendang.ts`) - 智能体 (`zhinengti.ts`) - 智能写作 (`zhinengxiezuo.ts`) - 智能问答对话记录 (`zhinengtiduihuajilu.ts`) - 机器人服务 (`jiqirenfuwu.ts`) **oauth服务** (`servers/oauth/api/`) - 用户登录 (`denglutuichuzhuce.ts`) - 用户信息 (`yonghujibenxinxi.ts`) - 验证码 (`yanzhengma.ts`) ### 5. 组件系统 (components/) #### 全局组件 **布局组件** - `LayoutContainer`: 布局容器 - `LoginContainer`: 登录容器 **业务组件** - `CardBox`: 卡片盒子 - `CardBoxAgent`: 智能体卡片 - `CardBoxDataset`: 数据集卡片 - `AppTable`: 表格组件 - `AppAvatar`: 头像组件 **编辑器组件** - `MdEditor`: Markdown编辑器 - `MdPreview`: Markdown预览 - `CodemirrorEditor`: 代码编辑器 **其他组件** - `InfiniteScroll`: 无限滚动 - `AutoTooltip`: 自动提示 - `TagEllipsis`: 标签省略 - `DialogBox`: 对话框 ### 6. 页面模块 (views/) #### 智能中心 (smart/) **智能问答** (`smart/answer/`) - `index.vue`: 问答列表页 - `setting.vue`: 问答设置页 - 功能:创建智能体、配置模型、对话调试 **智能写作** (`smart/writing/`) - `list.vue`: 写作列表页 - `index.vue`: 写作编辑页 - 功能:文档生成、大纲编辑、内容润色 **智能审核** (`smart/review/`) - `list.vue`: 审核列表页 - `audit/index.vue`: 审核页面 - `extraction/index.vue`: 文档抽取页 - `plan.vue`: 审核方案页 - `rule/index.vue`: 规则详情页 - 功能:审核方案管理、规则配置、文档审核 #### 知识中心 (knowledge/) **知识库管理** (`knowledge/dataset/`) - `index.vue`: 知识库列表 - `view.vue`: 知识库详情 - `importDoc.vue`: 导入文档 - `viewParagraph.vue`: 查看分段 - 功能:知识库创建、文档导入、分段管理 **文档管理** (`knowledge/document/`) - `index.vue`: 文档列表 - `uploadDoc.vue`: 上传文档 - `reviewDoc.vue`: 预览文档 - 功能:文档上传、预览、分类管理 **标签管理** (`knowledge/tag/`) - `index.vue`: 标签列表 - `create.vue`: 创建标签 - `viewTag.vue`: 查看标签 - 功能:维度管理、标签创建、文档关联 #### 聊天模块 (chat/) - `index.vue`: 聊天主页面 - 功能:智能体对话、消息历史、会话管理 ### 7. 工具函数 (utils/) #### 常用工具 **common.ts** - 通用工具函数 **crypto.ts** - 加密解密工具 **storage.ts** - 本地存储封装(localStorage/sessionStorage) **time.ts** - 时间格式化工具 **message.ts** - 消息提示封装 **clipboard.ts** - 剪贴板操作 **uuid.ts** - UUID生成 ## 数据流 ### 请求流程 ``` 组件/页面 ↓ API调用 (api/*.ts) ↓ 服务层 (servers/*/api/*.ts) ↓ HTTP请求 (request/http.ts) ↓ 请求拦截器 (添加Token等) ↓ 后端API ↓ 响应拦截器 (错误处理) ↓ 返回数据 ``` ### 状态管理流程 ``` 组件触发Action ↓ Store Action ↓ API调用 ↓ 更新State ↓ 组件响应式更新 ``` ## 环境配置 ### 开发环境 - 端口:通过 `VITE_APP_PORT` 配置 - 代理:配置在 `vite.config.ts` 中 - Mock:可通过 `VITE_MOCK_DEV_SERVER` 启用 ### 生产环境 - 构建:`pnpm build:prd` - 压缩:Terser压缩,Gzip压缩 - 代码分割:按模块分割 - 打包:自动生成zip包 ## 安全机制 1. **Token管理** - Token存储在localStorage - 自动检测Token失效 - Token失效自动跳转登录 2. **权限控制** - 路由级权限验证 - API级权限验证(错误码11051) 3. **请求安全** - 自动添加认证头 - 请求超时处理 - 错误统一处理 ## 性能优化 1. **代码分割** - 路由懒加载 - 按模块分割chunk 2. **资源优化** - SVG图标雪碧图 - 图片资源压缩 - Gzip压缩 3. **构建优化** - Terser压缩 - Tree-shaking - 移除console.log ## 开发指南 ### 添加新页面 1. 在 `src/views/` 创建页面组件 2. 在 `src/router/routes.ts` 添加路由 3. 如需API,在 `src/api/` 或 `src/servers/` 添加接口 ### 添加新组件 1. 在 `src/components/` 创建组件 2. 如需全局注册,在 `src/components/index.ts` 注册 ### 添加新Store 1. 在 `src/stores/modules/` 创建store文件 2. 在 `src/stores/index.ts` 导出 ### 添加新API 1. 在 `src/servers/` 对应目录添加API文件 2. 使用 `src/request/http.ts` 的请求方法 ## 常见问题 ### 1. Token失效处理 Token失效会自动清除并跳转登录页,错误码:11011-11016 ### 2. 权限不足 权限不足返回错误码11051,会显示错误提示 ### 3. 请求超时 请求超时时间60秒,超时会显示错误并跳转登录 ### 4. 环境变量 环境变量文件在 `env/` 目录,通过 `VITE_` 前缀暴露 ## 更新日志 查看项目Git提交历史获取详细更新记录。