Files
crawler-plugin/admin-frontend-vue
huangzd1997 a4f60ef21c fix(权限): 用户菜单权限“自己没掉”——分区落库时级联清理跨类型误删 + 编辑弹窗空授权提交
- 级联清理的有效集改为按目标「完整直接授权」计算(读库,含 admin/app 全类型)。
  此前 admin/app 分区落库把本次提交的 id 当成完整有效集,员工持有的另一类型授权
  会整体被判越权删除;两次分区落库互相补刀,最终清空员工全部菜单权限
  (生产表现:保存某非超管的权限后,他直建员工的菜单隔三差五自己消失)
- AdminUserService 改为两类落库完成后再统一级联一次,新增 cascadeSubordinateOverreach 入口
- 后台「编辑用户」弹窗:授权未加载完成/失败时禁用保存并明确提示,
  避免以空 columnIds 整树清空该用户授权(改动密码等操作也会连带触发)
- 回归测试:deferredCascadeKeepsSubordinateGrantsOfOtherMenuType、
  perTypeReplacementDoesNotCascadeBeforeAllTypesWritten、edit_user_dialog_blocks_save_until_auth_loaded

已知既有红测试(与本次改动无关,干净 HEAD 上同样复现,未新增):
ArchitectureBoundaryTest.taskToBusinessDependencyDoesNotGrow(110 > 基线 84)、
HttpClientTimeoutEffectiveTest.connectTimeoutFiresOnUnreachableHost(本机网络环境 60s)
2026-09-13 14:18:01 +08:00
..

Admin Frontend Vue

独立的后台管理前端工程,与客户端 frontend-vue 完全分离。

本地开发

npm install
$env:VITE_API_TARGET = "http://127.0.0.1:18080"
npm run dev

开发入口:http://localhost:5174/admin-vue/

构建

npm run build
npm test

构建产物在 dist/,部署到 Nginx 的 /admin-vue/ 根目录。该工程不写入客户端的 new_web_source,也不打进 Java JAR。

运行时契约

  • 登录态:复用同源 Cookie/Session。
  • 当前用户:GET /api/admin/current-user
  • 菜单树:GET /api/admin/current-user/menusJava 返回树形菜单。
  • 退出登录:POST /api/admin/logout
  • 前端路由:History 模式,基准路径 /admin-vue/
  • 权限粒度:菜单/页面级,不定义按钮级权限。

首批页面

  • /admin-vue/account/users
  • /admin-vue/account/menus
  • /admin-vue/account/groups

当前首批页面已接入 Java 现有用户、菜单和数据权限分组 API;Java 菜单接口完成树形响应和 Flyway 菜单迁移后,路由权限守卫即可按最终菜单树工作。