12 KiB
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: 导出ExcelexportFile: 导出文件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包
安全机制
-
Token管理
- Token存储在localStorage
- 自动检测Token失效
- Token失效自动跳转登录
-
权限控制
- 路由级权限验证
- API级权限验证(错误码11051)
-
请求安全
- 自动添加认证头
- 请求超时处理
- 错误统一处理
性能优化
-
代码分割
- 路由懒加载
- 按模块分割chunk
-
资源优化
- SVG图标雪碧图
- 图片资源压缩
- Gzip压缩
-
构建优化
- Terser压缩
- Tree-shaking
- 移除console.log
开发指南
添加新页面
- 在
src/views/创建页面组件 - 在
src/router/routes.ts添加路由 - 如需API,在
src/api/或src/servers/添加接口
添加新组件
- 在
src/components/创建组件 - 如需全局注册,在
src/components/index.ts注册
添加新Store
- 在
src/stores/modules/创建store文件 - 在
src/stores/index.ts导出
添加新API
- 在
src/servers/对应目录添加API文件 - 使用
src/request/http.ts的请求方法
常见问题
1. Token失效处理
Token失效会自动清除并跳转登录页,错误码:11011-11016
2. 权限不足
权限不足返回错误码11051,会显示错误提示
3. 请求超时
请求超时时间60秒,超时会显示错误并跳转登录
4. 环境变量
环境变量文件在 env/ 目录,通过 VITE_ 前缀暴露
更新日志
查看项目Git提交历史获取详细更新记录。