feat: 整体废弃 leader 业务角色

leader 角色 (项目负责人) 业务上已不再使用, 整体下线。仅保留 sys_dept.leader 字段 (部门负责人, RuoYi 标准字段, 与角色无关)。

前端清理 (15 文件):
- 路由: 删除 /leader 块 + 4 子路由 (router L56-61)
- 菜单: 删除 AdminLayout 中 leader 菜单 (5 行)
- 视图: 删除整个 views/leader/ 目录 (Home/Projects/Meetings/Account.vue 共 ~32KB)
- Login.vue: 删默认 role='leader', 删 leader 角色选项, 删 autoRole 的 leader 分支, 删 roleHome 的 leader 项
- PortalShell.vue + 5 个 portal/* (Home/Publicity/ArticleView/PublicityDetail/SpecialPlanDetail): admin fallback '/leader/home' → '/admin/workbench', 删 leader 项, 同步更新 admin 入口 (/leader/home → /admin/workbench)
- 5 处 ROLE_LABEL 字典删 leader: '项目负责人' (AdminLayout/Account/Roles/Users/Workbench)
- Roles.vue 注释同步

后端清理 (7 文件):
- BizDashboardController: 删除 /leader dashboard 端点 (整个方法)
- BizPersonController: BUSINESS_MAIN_ROLES 删 leader
- BizExecutorController/BizProjectPlanController/ISysUserService/SysUserExtendVo/SysUser: 注释同步删 leader

测试:
- test_20rounds.py: 删 leader 路由断言 + view_map + role_home + role_view 共 5 处

未做 / 后续:
- DB: sys_user.role_type='leader' 现存账号是测试账号, 用户确认可忽略, 后续手动清理
- 文档: proto/html/leader.html 等原型文件保留 (历史)
- _self/*.md 笔记提及 leader 不动 (笔记)
This commit is contained in:
郭庆泰
2026-08-20 22:02:24 +08:00
parent af1ee0a5f7
commit 44a020da68
25 changed files with 29 additions and 857 deletions
+2 -6
View File
@@ -85,7 +85,6 @@ def test_round(n):
# 7. 前端路由覆盖
expected_routes = [
'/', '/publicity', '/login', '/register-expert', '/register-supplier', '/register-sponsor',
'/leader/home', '/leader/projects', '/leader/meetings', '/leader/account',
'/manager/workbench', '/manager/plans', '/manager/projects', '/manager/meetings',
'/manager/experts', '/manager/exec-units', '/manager/support-units',
'/manager/support-intent', '/manager/exec-intent', '/manager/accounts',
@@ -98,7 +97,6 @@ def test_round(n):
for r in expected_routes:
path_only = r.lstrip('/')
# 路由 path 可能有/也可能没有(顶级 parent vs child),name 也可作为 path 替代
# 期望 router 中存在 path: 'leader/home' 或 name: 'leader-home'
name_guess = path_only.replace('/', '-')
if not any(p in router_file for p in [
f"path: '{path_only}'", f"path: '/{path_only}'",
@@ -188,7 +186,6 @@ def test_round(n):
# ============ 新增: 角色页 field 覆盖率 ============
view_map = {
# 角色: [(view文件, 原型HTML, 必须出现的字段)]
'leader': ('Home.vue', 'leader-home.html', ['项目总数量','已结算数量','已结题数量','未执行会议','已执行会议','消息通知']),
'manager': ('Workbench.vue', 'workbench.html', ['项目总数量','已结算的会议','已结题的项目','待结算的会议','未执行会议','待审核的专家']),
'doctor': ('Review.vue', None, ['项目评审','评审意见','评分']),
'executor': ('Meetings.vue', None, ['会议管理']),
@@ -236,7 +233,7 @@ def test_round(n):
# ============ 新增: 角色路由自动跳转 ============
login_js = Path('/home/john/ry8080/ry-vue3/src/views/auth/Login.vue').read_text()
check('登录按角色路由', 'leader' in login_js and 'manager' in login_js, '')
check('登录按角色路由', 'manager' in login_js, '')
# ============ 新增: 业务表结构校验 ============
try:
@@ -282,7 +279,7 @@ def test_round(n):
check('流程5-认证端点', 'msg' in r, f"code={r.get('code')}")
# ============ 新增: 角色权限检查(每个角色 home 可访问)============
for role_home in ['/leader/home','/manager/workbench','/doctor/review','/executor/meetings','/sponsor/home']:
for role_home in ['/manager/workbench','/doctor/review','/executor/meetings','/sponsor/home']:
path_only = role_home.lstrip('/')
name_guess = path_only.replace('/', '-')
check(f'角色 home: {role_home}', any(p in router_file for p in [
@@ -301,7 +298,6 @@ def test_round(n):
# ============ 新增: 角色 × view 映射完整性 ============
expected_role_views = {
'leader': ['Home.vue','Projects.vue','Meetings.vue','Account.vue'],
'manager': ['Workbench.vue','Plans.vue','Projects.vue','Meetings.vue','Experts.vue','ExecUnits.vue','SupportUnits.vue','SupportIntent.vue','ExecIntent.vue','Accounts.vue'],
'doctor': ['Review.vue','Score.vue'],
'executor': ['Meetings.vue','Labor.vue'],