This commit is contained in:
2025-12-09 14:46:02 +08:00
parent c7a22a288a
commit abe314fdc8
76 changed files with 7601 additions and 1667 deletions

View File

@@ -17,7 +17,7 @@
- **工程化完善**TS 强类型、模块化 API、统一请求封装、权限化菜单/路由
- **设计统一**:全局“超现代风格”主题,卡片 / 弹窗 / 按钮 / 输入 / 分页风格一致
- **业务可复用**
- 知识库管理:分类树 + 列表搜索 + 编辑/发布
- 文章管理:分类树 + 列表搜索 + 编辑/发布
- YOLO 模型:模型管理、模型类别管理、告警处理中心、检测历史管理
- AI 助手:多会话列表 + 消息记录 + 多布局对话界面(含错误调试信息)
- 认证体系:登录/注册、验证码
@@ -246,6 +246,72 @@ npm run dev
- 修改 `src/styles/variables.scss` 中的主色、背景色、圆角、阴影
- 如需大改导航栏、卡片风格,优先在全局样式里做统一,而不是每页重新写
## 🧩 模块选择与模板模式
- **模块配置文件**
- 路径:`src/config/hertz_modules.ts`
- 内容:
- 使用 `HERTZ_MODULES` 统一管理“管理端 / 用户端”各功能模块
- 每个模块包含:`key`(模块标识)、`label`(展示名称)、`group`admin/user、`defaultEnabled`(是否默认启用)
- 运行时通过 `isModuleEnabled` / `getEnabledModuleKeys` 控制路由和菜单是否展示对应模块。
- **模块选择页面(功能 DIY**
- 页面:`src/views/ModuleSetup.vue`
- 路由:`/template/modules`
- 说明:
1. 勾选需要启用的模块,未勾选的模块在菜单和路由中隐藏(仅运行时屏蔽,不改动源码)。
2. 点击“保存配置并刷新”可多次预览效果;点击“保存并跳转登录”会在保存后跳转到登录页。
3. 选择结果会以 `hertz_enabled_modules` 的形式保存在浏览器 Local Storage 中。
- **模板模式开关**
- 通过环境变量控制:`VITE_TEMPLATE_SETUP_MODE`
- 建议在开发环境 (`.env.development`) 中开启:
```bash
VITE_TEMPLATE_SETUP_MODE=true
```
- 当模板模式开启且浏览器中 **没有** `hertz_enabled_modules` 记录时,路由守卫会在首次进入时自动重定向到 `/template/modules`,强制先完成模块选择。
- 如果已经配置过模块,下次 `npm run dev` 将直接进入系统。如需重新进入模块选择页:
1. 打开浏览器开发者工具 → Application → Local Storage
2. 选择当前站点,删除键 `hertz_enabled_modules`
3. 刷新页面即可再次进入模块选择流程。
## ✂️ 一键裁剪npm run prune
> 适用于已经确定“哪些功能模块不再需要”的场景,用于真正瘦身前端代码体积。建议在执行前先提交一次 Git。
- **脚本位置与命令**
- 脚本:`scripts/prune-modules.mjs`
- 命令:
```bash
npm run prune
```
- **推荐使用流程**
1. 启动开发环境:`npm run dev`。
2. 打开 `/template/modules`,通过勾选确认“需要保留的模块”,用“保存配置并刷新”反复调试菜单/路由效果。
3. 确认无误后,关闭开发服务器。
4. 在终端执行 `npm run prune`,按照 CLI 提示:
- 选择要“裁剪掉”的模块(通常是你在模块选择页面中未勾选的模块)。
- 选择裁剪模式:
- **模式 1仅屏蔽**
- 修改 `admin_menu.ts` / `user_menu_ai.ts` 中对应模块的 `moduleKey`,加上 `__pruned__` 前缀
- 注释组件映射行,使这些模块在菜单和路由中完全隐藏
- **不删除任何 `.vue` 文件**,方便后续恢复
- **模式 2删除**
- 在模式 1 的基础上,额外删除对应模块的视图文件,如 `src/views/admin_page/UserManagement.vue` 等
- 这是不可逆操作,建议先在模式 1 下验证,再使用模式 2 做最终瘦身
- **影响范围(前端)**
- 管理端:
- `src/router/admin_menu.ts` 中对应模块的菜单配置和组件映射
- `src/views/admin_page/*.vue` 中不需要的页面(仅在删除模式下移除)
- 用户端:
- `src/router/user_menu_ai.ts` 中对应模块配置
- `src/views/user_pages/*.vue` 中不需要的页面(仅在删除模式下移除)
## 📜 NPM 脚本
```json
@@ -253,7 +319,8 @@ npm run dev
"scripts": {
"dev": "vite",
"build": "vue-tsc -b && vite build",
"preview": "vite preview"
"preview": "vite preview",
"prune": "node scripts/prune-modules.mjs"
}
}
```