Files
admin-ui/docs/SRC-STRUCTURE.md
2910410219 b6b2dfa2d9 优化用户技能管理功能
- 在技能 API 中新增 `getUserSkillDetail` 和 `updateUserSkill` 函数,支持获取和更新用户技能。
- 更新技能列表页面,改进搜索栏和技能表格展示,提升用户体验。
- 修改文件上传提示,明确支持的文件格式和要求。
2026-05-13 11:14:42 +08:00

18 KiB
Raw Blame History

src 目录结构说明

本文档详细说明了项目 src 目录下所有文件和文件夹的作用

📁 目录结构总览

src/
├── api/                 # API 接口层
├── assets/              # 静态资源
├── components/          # 公共组件
├── directives/          # 自定义指令
├── i18n/                # 国际化
├── layout/              # 布局组件
├── router/              # 路由配置
├── stores/              # 状态管理Pinia
├── theme/               # 样式主题
├── types/               # TypeScript 类型定义
├── utils/               # 工具函数
├── views/               # 页面视图
├── App.vue              # 根组件
└── main.ts              # 应用入口

🎯 核心文件

App.vue

  • 作用: Vue 应用根组件
  • 功能: 定义应用的最外层结构

main.ts

  • 作用: 应用入口文件
  • 功能:
    • 初始化 Vue 实例
    • 注册全局插件Router、Store、i18n
    • 挂载应用到 DOM

📡 API 接口层 (/api)

统一管理所有后端接口调用

api/
├── assets/              # 资产管理接口
├── cid/                 # CID 相关接口
├── common/              # 公共接口(文件上传等)
├── customerService/     # 客服系统接口
├── digitalHuman/        # 数字人相关接口
│   ├── audioAssets/     # 音频资产接口
│   ├── avatar/          # 数字人形象接口
│   ├── creation/        # 内容创作接口
│   ├── modelConfig/     # 模型配置接口
│   ├── skill/           # 技能管理接口 ⭐
│   └── videoAssets/     # 视频资产接口
├── knowledge/           # 知识库接口
│   ├── dataset/         # 数据集接口
│   ├── document/        # 文档接口
│   └── model/           # 模型接口
├── login/               # 登录认证接口
├── menu/                # 菜单接口
├── system/              # 系统管理接口
│   ├── cache/           # 缓存管理
│   ├── config/          # 系统配置
│   ├── dept/            # 部门管理
│   ├── dict/            # 字典管理
│   ├── menu/            # 菜单管理
│   ├── monitor/         # 系统监控
│   ├── personal/        # 个人中心
│   ├── post/            # 岗位管理
│   ├── role/            # 角色管理
│   ├── tenant/          # 租户管理
│   └── user/            # 用户管理
└── trade/               # 交易运营接口
    └── operation/       # 运营数据
        ├── analysis/    # 数据分析
        ├── distribution/# 分销数据
        ├── setting/     # 运营设置
        └── stats/       # 统计数据

关键文件:

  • 每个模块的 index.ts 包含该模块的所有接口定义
  • 使用 TypeScript 定义接口参数和返回值类型

🎨 静态资源 (/assets)

存放项目静态资源文件

assets/
├── 401.png              # 401 无权限页面图片
├── 404.png              # 404 页面未找到图片
├── bg.jpg               # 背景图
├── login-icon-two.svg   # 登录页图标
└── logo-mini.svg        # 小尺寸 Logo

🧩 公共组件 (/components)

可复用的 Vue 组件

components/
├── auth/                # 权限控制组件
│   ├── auth.vue         # 单个权限控制
│   ├── authAll.vue      # 全部权限控制
│   └── auths.vue        # 多权限控制
├── cropper/             # 图片裁剪组件
│   └── index.vue
├── editor/              # 富文本编辑器
│   ├── index.vue
│   └── toolbar.ts       # 工具栏配置
├── iconSelector/        # 图标选择器
│   └── index.vue
├── model/               # 模型选择器 ⭐
│   └── ModelSelector.vue
├── myCodeMirror/        # 代码编辑器
│   └── index.vue
├── noticeBar/           # 通知栏组件
│   └── index.vue
├── pagination/          # 分页组件
│   └── index.vue
├── skill/               # 技能选择器 ⭐
│   ├── NodeSkillSelector.vue  # 节点技能选择器
│   └── SkillSelector.vue      # 技能选择器
└── svgIcon/             # SVG 图标组件
    └── index.vue

使用说明:

  • 组件可在任何页面中导入使用
  • 部分组件已注册为全局组件

📜 自定义指令 (/directives)

Vue 自定义指令

directives/
└── debounce.ts          # 防抖指令

使用示例:

<el-button v-debounce="handleClick">点击</el-button>

🌍 国际化 (/i18n)

多语言支持

i18n/
├── lang/                # 语言包
│   ├── en.ts            # 英文
│   ├── zh-cn.ts         # 简体中文
│   └── zh-tw.ts         # 繁体中文
├── pages/               # 页面级国际化
│   ├── formI18n/        # 表单国际化
│   └── login/           # 登录页国际化
└── index.ts             # 国际化配置入口

支持语言:

  • 简体中文 (zh-cn)
  • 繁体中文 (zh-tw)
  • 英文 (en)

🏗️ 布局组件 (/layout)

应用整体布局结构

layout/
├── component/           # 布局基础组件
│   ├── aside.vue        # 侧边栏
│   ├── columnsAside.vue # 分栏侧边栏
│   ├── header.vue       # 头部
│   └── main.vue         # 主体内容区
├── footer/              # 页脚
│   └── index.vue
├── lockScreen/          # 锁屏功能
│   └── index.vue
├── logo/                # Logo 组件
│   └── index.vue
├── main/                # 主布局模式
│   ├── classic.vue      # 经典布局
│   ├── columns.vue      # 分栏布局
│   ├── defaults.vue     # 默认布局
│   └── transverse.vue   # 横向布局
├── navBars/             # 导航栏
│   ├── breadcrumb/      # 面包屑导航
│   │   ├── breadcrumb.vue   # 面包屑
│   │   ├── closeFull.vue    # 全屏切换
│   │   ├── index.vue        # 导航栏入口
│   │   ├── search.vue       # 搜索
│   │   ├── setings.vue      # 设置
│   │   ├── user.vue         # 用户信息
│   │   └── userNews.vue     # 用户消息
│   └── tagsView/        # 标签页视图
│       ├── contextmenu.vue  # 右键菜单
│       └── tagsView.vue     # 标签页
├── navMenu/             # 导航菜单
│   ├── horizontal.vue   # 横向菜单
│   ├── subItem.vue      # 子菜单项
│   └── vertical.vue     # 纵向菜单
├── routerView/          # 路由视图
│   ├── iframes.vue      # iframe 视图
│   ├── link.vue         # 外链视图
│   └── parent.vue       # 父级视图
└── index.vue            # 布局入口

布局模式:

  • 经典布局 (classic)
  • 分栏布局 (columns)
  • 默认布局 (defaults)
  • 横向布局 (transverse)

🛣️ 路由配置 (/router)

Vue Router 路由管理

router/
├── backEnd.ts           # 后端动态路由
├── frontEnd.ts          # 前端静态路由
├── index.ts             # 路由入口
└── route.ts             # 路由工具函数

路由模式:

  • 前端路由: 静态配置,适合固定菜单
  • 后端路由: 动态加载,根据权限生成

🗄️ 状态管理 (/stores)

Pinia 状态管理

stores/
├── interface/           # Store 接口定义
│   └── index.ts
├── bigUpload.ts         # 大文件上传状态
├── index.ts             # Store 入口
├── keepAliveNames.ts    # 页面缓存名称
├── requestOldRoutes.ts  # 旧路由请求
├── routesList.ts        # 路由列表状态
├── tagsViewRoutes.ts    # 标签页路由状态
├── themeConfig.ts       # 主题配置状态
└── userInfo.ts          # 用户信息状态

主要 Store:

  • userInfo: 用户登录信息、权限
  • themeConfig: 主题、布局配置
  • routesList: 动态路由列表
  • tagsViewRoutes: 标签页历史记录

🎨 样式主题 (/theme)

全局样式和主题配置

theme/
├── common/              # 公共样式
│   └── transition.scss  # 过渡动画
├── media/               # 响应式样式
│   ├── chart.scss       # 图表样式
│   ├── cityLinkage.scss # 城市联动
│   ├── date.scss        # 日期选择器
│   ├── dialog.scss      # 对话框
│   ├── error.scss       # 错误页
│   ├── form.scss        # 表单
│   ├── home.scss        # 首页
│   ├── index.scss       # 媒体查询入口
│   ├── layout.scss      # 布局
│   ├── login.scss       # 登录页
│   ├── media.scss       # 响应式断点
│   ├── pagination.scss  # 分页
│   ├── personal.scss    # 个人中心
│   ├── scrollbar.scss   # 滚动条
│   └── tagsView.scss    # 标签页
├── mixins/              # SCSS 混入
│   ├── button-text.scss # 按钮文本混入
│   └── index.scss       # 混入入口
├── app.scss             # 应用主样式
├── dark.scss            # 暗黑主题
├── element.scss         # Element Plus 样式覆盖
├── iconSelector.scss    # 图标选择器样式
├── index.scss           # 样式入口
├── loading.scss         # 加载动画
├── other.scss           # 其他样式
└── waves.scss           # 波纹效果

主题功能:

  • 支持亮色/暗色主题切换
  • 响应式布局适配
  • Element Plus 组件样式定制

📝 类型定义 (/types)

TypeScript 类型声明

types/
└── file-saver.d.ts      # file-saver 库类型定义

说明: 为第三方库提供 TypeScript 类型支持


🛠️ 工具函数 (/utils)

通用工具函数库

utils/
├── arrayOperation.ts    # 数组操作工具
├── assetSubscribe.ts    # 资产订阅工具
├── authDirective.ts     # 权限指令工具
├── authFunction.ts      # 权限判断函数
├── build.ts             # 构建相关工具
├── commonFunction.ts    # 公共函数
├── customDirective.ts   # 自定义指令注册
├── debounce.ts          # 防抖函数
├── diffUtils.ts         # 差异对比工具
├── directive.ts         # 指令工具
├── formatTime.ts        # 时间格式化
├── getStyleSheets.ts    # 获取样式表
├── gfast.ts             # GFast 框架工具
├── loading.ts           # 加载状态工具
├── other.ts             # 其他工具函数
├── request.ts           # HTTP 请求封装 ⭐
├── setIconfont.ts       # 设置图标字体
├── storage.ts           # 本地存储封装
├── theme.ts             # 主题切换工具
├── toolsValidate.ts     # 表单验证规则
└── wartermark.ts        # 水印工具

核心工具:

  • request.ts: Axios 封装,统一处理 HTTP 请求、错误拦截
  • storage.ts: localStorage/sessionStorage 封装
  • authFunction.ts: 权限判断函数
  • formatTime.ts: 日期时间格式化

📄 页面视图 (/views)

所有页面组件

核心业务模块

数字人模块 (/digitalHuman)

digitalHuman/
├── audioAssets/         # 音频资产管理
│   ├── component/
│   │   └── ttsDialog.vue    # TTS 对话框
│   └── index.vue
├── avatar/              # 数字人形象管理
│   └── index.vue
├── creation/            # 内容创作
│   └── index.vue
├── modelConfig/         # 模型配置
│   ├── modelModule/     # 模型模块管理
│   │   ├── component/
│   │   │   └── editModule.vue   # 编辑模型
│   │   └── index.vue
│   └── modelType/       # 模型类型管理
│       └── index.vue
├── skill/               # 技能管理 ⭐
│   └── index.vue
└── videoAssets/         # 视频资产管理
    └── index.vue

功能说明:

  • 音频资产: 管理 TTS 音频文件
  • 数字人形象: 配置数字人外观
  • 内容创作: 创建数字人内容
  • 模型配置: 管理 AI 模型(推理、图片、音频)
  • 技能管理: 管理技能模板zip 格式,包含 .md 文件)
  • 视频资产: 管理视频素材

知识库模块 (/knowledge)

knowledge/
├── component/
│   └── documentDetailDialog.vue  # 文档详情对话框
├── dataset/             # 数据集管理
│   ├── component/
│   │   └── editDataset.vue
│   └── index.vue
├── document/            # 文档管理
│   ├── component/
│   │   ├── documentChunks.vue    # 文档分块
│   │   ├── previewDocument.vue   # 文档预览
│   │   └── uploadDocument.vue    # 上传文档
│   ├── detail.vue       # 文档详情
│   └── index.vue
└── index.vue

客服系统 (/customerService)

customerService/
├── account/             # 客服账号管理
├── product/             # 产品管理
├── report/              # 报表统计
└── script/              # 话术管理

资产管理 (/assets)

assets/
├── asset/               # 资产管理
├── category/            # 资产分类
├── location/            # 库位管理
├── operation/           # 资产操作
│   └── count/           # 盘点管理
├── warehouse/           # 仓库管理
└── zone/                # 库区管理

交易运营 (/trade)

trade/
└── operation/
    ├── analysis/        # 数据分析
    │   ├── product/     # 产品分析
    │   ├── region/      # 区域分析
    │   └── shop/        # 店铺分析
    ├── distribution/    # 分销管理
    │   ├── effect/      # 分销效果
    │   └── order/       # 分销订单
    ├── order/           # 订单管理
    ├── setting/         # 运营设置
    │   ├── anchor/      # 主播管理
    │   ├── live-account/# 直播账号
    │   └── scheduling/  # 排期管理
    └── stats/           # 统计数据
        ├── anchor/      # 主播统计
        └── shop/        # 店铺统计

系统管理模块 (/system)

system/
├── config/              # 系统配置
├── dept/                # 部门管理
├── dict/                # 字典管理
├── menu/                # 菜单管理
├── monitor/             # 系统监控
│   ├── loginLog/        # 登录日志
│   ├── operLog/         # 操作日志
│   ├── server/          # 服务器监控
│   └── userOnline/      # 在线用户
├── personal/            # 个人中心
├── post/                # 岗位管理
├── role/                # 角色管理
├── tenant/              # 租户管理
└── user/                # 用户管理

其他模块

views/
├── ads/                 # 广告数据分析
├── chart/               # 图表示例
├── error/               # 错误页401, 404
├── fun/                 # 功能演示
│   ├── clipboard/       # 剪贴板
│   ├── codemirror/      # 代码编辑器
│   ├── countup/         # 数字滚动
│   ├── cropper/         # 图片裁剪
│   ├── echartsMap/      # 地图
│   ├── gridLayout/      # 网格布局
│   ├── printJs/         # 打印
│   ├── qrcode/          # 二维码
│   ├── splitpanes/      # 分割面板
│   └── tagsView/        # 标签页
├── home/                # 首页
├── login/               # 登录页
├── make/                # 组件制作
├── menu/                # 菜单示例
├── pages/               # 页面示例
│   ├── awesome/         # 精选组件
│   ├── drag/            # 拖拽
│   ├── dynamicForm/     # 动态表单
│   ├── element/         # Element 组件
│   ├── filtering/       # 筛选
│   ├── formAdapt/       # 表单适配
│   ├── formI18n/        # 表单国际化
│   ├── formRules/       # 表单验证
│   ├── iocnfont/        # 图标字体
│   ├── lazyImg/         # 图片懒加载
│   ├── listAdapt/       # 列表适配
│   ├── preview/         # 预览
│   ├── steps/           # 步骤条
│   ├── tableRules/      # 表格验证
│   ├── tree/            # 树形控件
│   ├── waterfall/       # 瀑布流
│   ├── waves/           # 波纹效果
│   └── workflow/        # 工作流
├── params/              # 参数传递
├── personal/            # 个人中心
├── report-engine/       # 报表引擎
├── tools/               # 工具页
└── visualizing/         # 数据可视化

🔑 关键文件说明

文件 作用 重要性
main.ts 应用入口,初始化 Vue、Router、Store
utils/request.ts HTTP 请求封装,统一错误处理
router/index.ts 路由配置,权限控制
stores/userInfo.ts 用户信息状态管理
stores/themeConfig.ts 主题配置状态管理
components/model/ModelSelector.vue 模型选择器组件
components/skill/SkillSelector.vue 技能选择器组件
views/digitalHuman/ 数字人核心业务模块

📚 开发规范

文件命名

  • 组件文件: PascalCase (如 ModelSelector.vue)
  • 工具文件: camelCase (如 request.ts)
  • 样式文件: kebab-case (如 login.scss)

目录组织

  • 每个业务模块独立目录
  • 组件相关文件放在 component/ 子目录
  • 接口定义放在对应的 api/ 目录

代码风格

  • 使用 TypeScript
  • 遵循 ESLint 规则
  • 使用 Prettier 格式化

🔄 更新日志

  • 2024-XX-XX: 创建文档
  • 添加数字人模块说明
  • 添加技能管理功能说明

📞 联系方式

如有问题,请联系开发团队。