版本:v2.9.0
HAMi WebUI 开发者指南
项目定位
HAMi WebUI 是 HAMi 的 Web 可视化与运维界面,主要用于对节 点、GPU 资源与任务(Workloads)进行监控、查看与管理展示。
项目采用前后端分离:浏览器前端负责页面与交互,后端 BFF 负责静态资源托管与 API 透传。
总体架构与运行流程
系统架构图
该图展示了 HAMi WebUI 的整体架构,包括前端界面、后端服务及底层集群资源。系统通过对 GPU 使用数据的采集与处理,实现对资源状态的统一展示与可视化分析。
仓库结构
HAMi WebUI 仓库结构说明,介绍项目各模块的职责划分及前后端协作方式,包括 BFF 层、前端应用与后端服务的整体组织结构。
- 根目录(Node/NestJS):BFF 层,负责
- 托管
public/下的静态资源 - 统一将
/api*请求透传到后端服务 - 开发环境下将前端页面请求转发到 Vite 开发服务器
- 托管
packages/web(前端):Vue3 + Vite- 页面/组件/路由组织
- 通过 Axios 调用
/api/vgpu/*(由 BFF 代理转发到后端)
server:Go 侧服务
运行端口
本地开发环境运行端口说明,列出了 HAMi WebUI 各模块在开发模式下的访问地址,包括 BFF 服务、前端开发服务器以及后端业务服务。
- BFF:
http://localhost:3000/ - 前端开发服务器(Vite):
http://localhost:8080/ - 后端业务服务(被 BFF 代理):
http://127.0.0.1:8000
请求与静态资源
请求转发与静态资源处理机制说明,介绍前端构建产物的输出位置、BFF 的静态资源托管方式,以及前端请求通过代理转发至后端服务的流程。
- 前端构建产物会输出到根目录
public/(Vite 配置outDir: '../../public',assets 目录为public/static) - BFF 静态资源托管:
src/main.ts中app.useStaticAssets(join(__dirname, '..', 'public')) - API 透传:
- 前端请求一般以
/api/vgpu/...为入口 - BFF 使用
ApiProxyMiddleware将请求代理到后端业务服务(开发/生产 proxy 配置均为target: http://127.0.0.1:8000,并做^/api/vgpu -> ''的路径重写)
- 前端请求一般以
前端技术栈与模块组织
栈
前端技术栈说明,介绍 HAMi WebUI 在前端开发中所使用的核心框架与工具,包括状态管理、路由、国际化及请求处理等基础能力。
- Vue 3:组合式 API + script setup
- Vue Router:路由配置在
packages/web/src/router/index.js+ 模块路由在packages/web/projects/vgpu/router.js - Vuex:
packages/web/src/store(包含布局/全局状态与 localStorage 持久化) - i18n:
packages/web/src/locales/index.js(en.js/zh.js) - Axios:
packages/web/src/utils/request.js(统一处理后端返回code/msg/data的错误逻辑) - UI 框架:
- TDesign:
packages/web/src/plugins/tdesign.js(优先使用) - Element Plus:
packages/web/src/plugins/element.js
- TDesign:
目录组织
前端目录组织规范说明,定义了通用基础层与业务模块层的代码划分方式,帮助统一项目结构并提升代码可维护性与扩展性。
- 通用基础层(
packages/web/src/)layout/:全局布局(Sidebar / TopBar / AppMain)components/:通用组件(例如 BackHeader / BlockBox / Echarts-plus / Message / Confirm 等)hooks/:通用 hooks(例如useFetchList)utils/