# 10.3 Web 管理界面 :::tip 概述 管理界面位于「工具 → 代码生成」(ui/src/views/tool/generator/):数据表清单分页浏览、代码预览、一键生成、批量生成。与 CLI 共用同一套生成核心。 ::: ## 页面功能 | 功能 | 接口 | 权限 | |------|------|------| | 数据表清单 | GET /api/generator/page | sys:generator:page | | 代码预览 | POST /api/generator/preview | sys:generator:generator | | 一键生成 | POST /api/generator/generate | sys:generator:generator | | 批量生成 | POST /api/generator/batchGenerate | sys:generator:batchGenerator | 页面文件:`ui/src/views/tool/generator/`(index.vue / edit.vue / columns.ts / querySchemas.ts——页面自身也是三件套模式)。 ## 使用流程 ```text 1. 打开「工具 → 代码生成」→ 数据表清单(含表注释/行数/引擎) 2. 选择目标表 → 「预览」查看将产出的文件与内容(不落盘) 3. 确认 → 「生成」→ 结果报告: Generated[] / Skipped[] / Overwritten[] / Failed[] Menu{Success, MenuId, Message} Dict[]{Dict, Name, Items, Status} Route{Success, Message} 4. 后端 go build + 重启 5. 角色管理勾选新权限节点 → 访问新菜单验证 ``` ## 预览的价值 ```text preview 返回 List[]{Path, Content}(渲染结果全文,不落盘): * 生成前核对文件路径与命名(域名/驼峰是否符合预期) * 核对筛选字段/枚举识别是否正确 * 作为 code review 的第一道关口 * 对照学习生成模板的产出风格 ``` ## 批量生成报告 ```text BatchGenerate 返回 List[]{Table, Success, Generated, Skipped, Overwritten, Failed, Message, Menu, Dict, Route} Message 格式:"生成 N,跳过 N,覆盖 N,失败 N" 批量语义: 每表独立成败(一表失败不影响其他) 幂等副作用逐表执行(菜单已存在则跳过) ``` ## 权限与安全 ```text 生成器权限码特例:sys:generator:generator | sys:generator:batchGenerator (非 sys:generator:generate——注意拼写) 日志 logType=generate(19 代码生成)——生成操作全留痕 生成器写文件系统(api/controller/logic 等目录)——收紧 generator 相关权限, 非管理员不应授予 ``` ## 界面操作注意 ::: warning 覆盖确认 `generator.overwrite: true` 时生成即覆盖同名文件(含手工修改过的)——批量覆盖前: 1. 确认 config.yaml overwrite 设置 2. 手工改动多的模块临时改回 false 3. 或先 git 提交/备份再覆盖 ::: ## 排障 | 症状 | 原因 | |------|------| | 表清单为空 | database 连接错/无表;非 MySQL 时注释列为空属正常 | | 预览报错 | 模板渲染失败——查表结构特殊列(类型/注释) | | 生成成功但菜单没出现 | 菜单创建成功但角色未勾选;或 parentMenuId 配置错(挂到了不存在的父级) | | 生成成功但路由 404 | router.go 注册行写入失败(看 Route.Message);或未重启 | | 字典没创建 | 枚举注释格式不对(须 `字段:1-x 2-y`);看 Dict 报告项状态 |