/** 与后端 PermissionCatalog 保持一致:目录 / 菜单 / 按钮 */ export const permissionTree = [ { code: 'dir:overview', name: '概览', type: 'dir', children: [ { code: 'menu:dashboard', name: '数据概览', type: 'menu', path: '/dashboard', icon: 'dashboard', children: [] } ] }, { code: 'dir:org', name: '组织架构', type: 'dir', children: [ { code: 'menu:users', name: '用户管理', type: 'menu', path: '/users', icon: 'users', children: [ { code: 'btn:user:create', name: '新增用户', type: 'btn' }, { code: 'btn:user:edit', name: '编辑用户', type: 'btn' }, { code: 'btn:user:reset_password', name: '重置密码', type: 'btn' }, { code: 'btn:user:delete', name: '删除用户', type: 'btn' } ] }, { code: 'menu:departments', name: '部门管理', type: 'menu', path: '/departments', icon: 'departments', children: [ { code: 'btn:dept:create', name: '新增部门', type: 'btn' }, { code: 'btn:dept:edit', name: '编辑部门', type: 'btn' }, { code: 'btn:dept:delete', name: '删除部门', type: 'btn' } ] }, { code: 'menu:roles', name: '角色管理', type: 'menu', path: '/roles', icon: 'roles', children: [ { code: 'btn:role:create', name: '新增角色', type: 'btn' }, { code: 'btn:role:edit', name: '编辑角色', type: 'btn' }, { code: 'btn:role:delete', name: '删除角色', type: 'btn' } ] } ] }, { code: 'dir:business', name: '业务数据', type: 'dir', children: [ { code: 'menu:conversations', name: '会话管理', type: 'menu', path: '/conversations', icon: 'conversations', children: [ { code: 'btn:conv:view_all', name: '查看全部会话', type: 'btn' }, { code: 'btn:conv:view_subordinate', name: '查看下级部门会话', type: 'btn' } ] }, { code: 'menu:memberships', name: '会员等级', type: 'menu', path: '/memberships', icon: 'memberships', children: [ { code: 'btn:membership:create', name: '新增会员等级', type: 'btn' }, { code: 'btn:membership:edit', name: '编辑会员等级', type: 'btn' }, { code: 'btn:membership:delete', name: '删除会员等级', type: 'btn' } ] } ] }, { code: 'dir:system', name: '系统管理', type: 'dir', children: [ { code: 'menu:models', name: 'AI 模型', type: 'menu', path: '/models', icon: 'models', children: [ { code: 'btn:model:create', name: '新增模型', type: 'btn' }, { code: 'btn:model:edit', name: '编辑模型', type: 'btn' }, { code: 'btn:model:delete', name: '删除模型', type: 'btn' }, { code: 'btn:model:test', name: '测试连接', type: 'btn' } ] }, { code: 'menu:permissions', name: '权限管理', type: 'menu', path: '/permissions', icon: 'permissions', children: [ { code: 'btn:perm:create', name: '新增权限', type: 'btn' }, { code: 'btn:perm:edit', name: '编辑权限', type: 'btn' }, { code: 'btn:perm:delete', name: '删除权限', type: 'btn' } ] }, { code: 'menu:settings', name: '系统设置', type: 'menu', path: '/settings', icon: 'settings', children: [ { code: 'btn:settings:save', name: '保存设置', type: 'btn' } ] } ] } ] export function emptyPermissions() { return { can_access_admin: false, dirs: [], menus: [], buttons: [] } } export function flattenMenus(tree = permissionTree) { const list = [] for (const dir of tree) { for (const menu of dir.children || []) { list.push({ ...menu, dir: dir.code, dirName: dir.name }) } } return list } export function summarizePermissionLabels(perms = {}) { const labels = [] if (perms.can_access_admin) labels.push('后台') for (const dir of permissionTree) { if ((perms.dirs || []).includes(dir.code)) labels.push(dir.name) } for (const menu of flattenMenus()) { if ((perms.menus || []).includes(menu.code)) labels.push(menu.name) } return labels }