From f5a8afe835b5942a1883f952a037b7d5a65bb6a4 Mon Sep 17 00:00:00 2001 From: Stev_Wang <304865932@qq.com> Date: Tue, 3 Nov 2026 14:03:13 +0800 Subject: [PATCH] =?UTF-8?q?refactor(web):=20=E4=BE=A7=E6=A0=8F=E4=B8=8E?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=A8=A1=E5=9D=97=E5=90=8D=E7=94=B1=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=9D=83=E9=99=90=E6=94=B9=E4=B8=BA=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景:角色权限只描述模块的一部分能力,侧栏同级均为模块级命名(用户与组织 / 客户 / 行业树);角色页实际覆盖角色 CRUD、权限点、数据范围、特殊权限与 SoD。 改动: - 侧栏、面包屑、页面标题统一为「角色管理」,页面内权限点 / 数据范围 / 特殊权限分区名不变; - 用户详情与超管授予弹窗中的模块引用同步改为「角色管理」; - 开发计划页面清单与 A2 实施报告同步; - 更新导航与面包屑单测、A2 e2e 标题断言。 验证:format:check / lint / typecheck / test 全绿;5173 实测侧栏、面包屑、页标题均为「角色管理」。 --- README.md | 2 +- apps/web/src/navigation/breadcrumbs.spec.ts | 6 +++--- apps/web/src/navigation/breadcrumbs.ts | 4 ++-- apps/web/src/navigation/nav-config.spec.ts | 4 ++-- apps/web/src/navigation/nav-config.ts | 2 +- apps/web/src/pages/system/roles/RolesPage.tsx | 2 +- apps/web/src/pages/system/users/UserDetailTabs.tsx | 2 +- .../pages/system/users/dialogs/SuperAdminGrantDialog.tsx | 2 +- docs/开发计划/灵犀_A2角色权限与数据范围_实施报告_V0.1.md | 2 +- docs/开发计划/灵犀_信息流素材生产平台_开发计划_V0.1.md | 2 +- e2e/a2-roles.spec.ts | 4 ++-- 11 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index fe27580..0487c20 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ | **脚本** | 要素卡 / 卖点库 / 模板 / 生成 / 质量校核 / 审核入库 / 版本 | | **素材** | 图片线(PSD 套版、抠图、规格矩阵)、视频线(逐镜生成、变体)、快筛与预览 | | **资产** | 15 类资产的库、版本、引用、复审与复用度量 | -| **平台管理** | 组织账号、客户、角色权限、AI 配置、数据字典、审计、行业包与表单设计器 | +| **平台管理** | 组织账号、客户、角色管理、AI 配置、数据字典、审计、行业包与表单设计器 | > 早期文档中的「四大模块(脚本生成 / 素材生产 / 编辑 / 管理)」已于 PRD V1.6 重构为「脚本 / 素材 / 资产 / 平台管理」三主线 + 一底座。 diff --git a/apps/web/src/navigation/breadcrumbs.spec.ts b/apps/web/src/navigation/breadcrumbs.spec.ts index acfd851..15ea7e2 100644 --- a/apps/web/src/navigation/breadcrumbs.spec.ts +++ b/apps/web/src/navigation/breadcrumbs.spec.ts @@ -3,12 +3,12 @@ import { describe, expect, it } from 'vitest'; import { getRoleSectionTrail, getUserSectionTrail } from './breadcrumbs'; describe('面包屑子路由补全', () => { - it('角色新建页:工作台 / 管理中心 / 角色权限 / 新建角色', () => { + it('角色新建页:工作台 / 管理中心 / 角色管理 / 新建角色', () => { const trail = getRoleSectionTrail('/system/roles/new'); expect(trail?.map((entry) => entry.label)).toEqual([ '工作台', '管理中心', - '角色权限', + '角色管理', '新建角色', ]); expect(trail?.[2]?.path).toBe('/system/roles'); @@ -19,7 +19,7 @@ describe('面包屑子路由补全', () => { expect(trail?.map((entry) => entry.label)).toEqual([ '工作台', '管理中心', - '角色权限', + '角色管理', '角色编辑', ]); }); diff --git a/apps/web/src/navigation/breadcrumbs.ts b/apps/web/src/navigation/breadcrumbs.ts index 6503e37..8acb7e2 100644 --- a/apps/web/src/navigation/breadcrumbs.ts +++ b/apps/web/src/navigation/breadcrumbs.ts @@ -8,7 +8,7 @@ export function getRoleSectionTrail(pathname: string): BreadcrumbEntry[] | null return [ { key: 'home', label: '工作台', path: ROUTES.home }, { key: 'system', label: '管理中心' }, - { key: 'roles', label: '角色权限', path: ROUTES.system.roles }, + { key: 'roles', label: '角色管理', path: ROUTES.system.roles }, { key: 'role-new', label: '新建角色' }, ]; } @@ -16,7 +16,7 @@ export function getRoleSectionTrail(pathname: string): BreadcrumbEntry[] | null return [ { key: 'home', label: '工作台', path: ROUTES.home }, { key: 'system', label: '管理中心' }, - { key: 'roles', label: '角色权限', path: ROUTES.system.roles }, + { key: 'roles', label: '角色管理', path: ROUTES.system.roles }, { key: 'role-detail', label: '角色编辑' }, ]; } diff --git a/apps/web/src/navigation/nav-config.spec.ts b/apps/web/src/navigation/nav-config.spec.ts index cd155f4..f004560 100644 --- a/apps/web/src/navigation/nav-config.spec.ts +++ b/apps/web/src/navigation/nav-config.spec.ts @@ -33,12 +33,12 @@ describe('导航配置', () => { ); }); - it('角色权限菜单使用 role:view,只读角色也能进入角色页', () => { + it('角色管理菜单使用 role:view,只读角色也能进入角色页', () => { const rolesItem = NAV_MODULES.find((module) => module.key === 'system')?.items.find( (item) => item.key === 'roles', ); expect(rolesItem?.permission).toBe('role:view'); - expect(findActiveNav(NAV_MODULES, '/system/roles/new')?.item?.label).toBe('角色权限'); + expect(findActiveNav(NAV_MODULES, '/system/roles/new')?.item?.label).toBe('角色管理'); expect(findActiveNav(NAV_MODULES, '/system/roles/01HZZZZZZZZZZZZZZZZZZZZZZZ')?.module.key).toBe( 'system', ); diff --git a/apps/web/src/navigation/nav-config.ts b/apps/web/src/navigation/nav-config.ts index 6ac0025..8ec3eb5 100644 --- a/apps/web/src/navigation/nav-config.ts +++ b/apps/web/src/navigation/nav-config.ts @@ -256,7 +256,7 @@ export const NAV_MODULES: readonly NavModule[] = [ }, { key: 'roles', - label: '角色权限', + label: '角色管理', path: '/system/roles', icon: IconShield, permission: Permission.ROLE_VIEW, diff --git a/apps/web/src/pages/system/roles/RolesPage.tsx b/apps/web/src/pages/system/roles/RolesPage.tsx index 45c8d88..9ea0bca 100644 --- a/apps/web/src/pages/system/roles/RolesPage.tsx +++ b/apps/web/src/pages/system/roles/RolesPage.tsx @@ -170,7 +170,7 @@ export function RolesPage(): ReactNode {
-

角色权限

+

角色管理

配置功能权限、数据范围与特殊权限,变更即时生效并留痕

diff --git a/apps/web/src/pages/system/users/UserDetailTabs.tsx b/apps/web/src/pages/system/users/UserDetailTabs.tsx index 25d18c9..a887bc4 100644 --- a/apps/web/src/pages/system/users/UserDetailTabs.tsx +++ b/apps/web/src/pages/system/users/UserDetailTabs.tsx @@ -93,7 +93,7 @@ export function UserRolesTab({