fix: 统一前端菜单类型判断
This commit is contained in:
@@ -42,3 +42,33 @@
|
||||
## Concerns
|
||||
|
||||
- 全仓类型检查仍因已确认的 827 条基线错误返回退出码 2;本任务四个改动文件错误为 0,生产构建成功。
|
||||
|
||||
## 审查修复
|
||||
|
||||
### 实现
|
||||
|
||||
- 将 `ServerMenuItem.type` 收紧为必填 `number | string`。
|
||||
- 新增统一的 `isMenuPermission` predicate,仅接受数值 `1` 或字符串 `"1"`。
|
||||
- AppStore 构树前过滤、顶层路由转换和递归子路由转换统一调用该 predicate;数值/字符串 `2`、缺失 `type` 和其他值均严格排除。
|
||||
|
||||
### 验证
|
||||
|
||||
1. `pnpm exec vue-tsc --noEmit --incremental false`
|
||||
- 结果:全仓保持 827 条基线错误,任务四个改动文件错误 0。
|
||||
2. `pnpm build -- --outDir C:\Users\27105\AppData\Local\Temp\front-kb-task3-review-build-20260721`
|
||||
- 结果:退出码 0,Vite 7.3.1 成功转换 9055 个模块并完成生产构建。
|
||||
3. 内联 Node + 最小 Vite SSR 加载器直接调用实际 `isMenuPermission`、`buildTree` 和 `transformMenuToRoutes`。
|
||||
- 覆盖:数值 `1`、字符串 `"1"`、数值 `2`、字符串 `"2"`、缺失 `type`,并同时验证顶层和递归子路由。
|
||||
- 结果:`predicate=true,true,false,false,false`、完整权限码 5 个、菜单权限 2 个、顶层路由 2 个、递归子路由 2 个、`empty_path=false`、`rejected_in_routes=false`,退出码 0。
|
||||
4. `git diff --check`
|
||||
- 结果:退出码 0。
|
||||
|
||||
### 自审
|
||||
|
||||
- `type` 在接口层必填,运行时仅 `1` 和 `"1"` 能进入菜单链路;缺失值没有兼容放行。
|
||||
- 三个过滤位置共享同一 predicate,不存在数值/字符串判断漂移。
|
||||
- 权限码仍在过滤前完整保存,未扩展无关 API 或路由重构,源码冻结后未再修改。
|
||||
|
||||
### Concerns
|
||||
|
||||
- 工具策略拦截了临时构建目录的原生 PowerShell 删除命令,未采用替代删除方式;待清理路径为 `C:\Users\27105\AppData\Local\Temp\front-kb-task3-review-build-20260721`。
|
||||
|
||||
Reference in New Issue
Block a user