You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
14 KiB
14 KiB
矩阵:A7-1 用户管理 + A7-2 权限管理(票 02)
- 口径:拍板⑤——接口存在性 + 入参逐字段为主,出参仅记明显缺失块;深 tag 顺带核(拍板④)。
- 双源:文本库
.scratch/opportunity-bugfix/lanhu-pages/A7-1*.md / A7-2*.md(证据=控件 id)+ 截图shots/a7-1*.png / a7-2*.png(结构验证)。 - 类型标注:缺接口 / 缺入参 / 缺出参块 / 校验差距 / 幻影(代码有原型无)/ tag 待修 / ✅已覆盖。
- 正式树 7 页全盘;backup「数据共享」3 页不在本票(留票 06 拍板)。
一、A7-1-1 用户列表(文本库 194 行)
| # | 原型要素 | 证据 | 应有接口 | 现状 | 差距 |
|---|---|---|---|---|---|
| 1 | 左栏钉钉部门树(点击过滤右侧列表) | u67/u360 | 部门树 | GET /api/system/depts/tree | ✅ |
| 2 | 统计卡片:部门总数/在职员工/离职员工/待分配员工 | u209-u212/u360 | 用户统计 | GET /users/stats(UserStatsDTO 四指标对齐) | 缺出参块:三个时间戳(最近同步×2、最近移交,u209-u211)DTO 无字段 |
| 3 | 筛选:姓名/手机号码/部门/所属角色/状态/职务 | u107/u84/u109/u110/u146/u155 | 列表查询 | POST /users/page(UserPageParam: deptId/employmentStatus/loginFrom/loginTo) | 缺入参:username、mobile、roleId、title;loginFrom/loginTo 原型无此筛选(代码多余项,可留) |
| 4 | 职务下拉枚举值域(营销副总裁/维度管理总监/…) | u156 | — | 无 | 缺口(挂账):值域来源待定(OA title 去重 or 字典) |
| 5 | 表格列:姓名/手机号/部门/所属角色/状态/最后登录时间 | u183-u188 | — | UserListDTO 全字段齐 | ✅ |
| 6 | 行内「分配角色」弹窗(在职/待分配) | u197-u200/u362 | 保存该用户角色 | POST /users/assign-roles(单用户全量替换) | ✅ |
| 7 | 弹窗角色清单带「影响 N 人」「启用中」 | u266-u289 | 角色列表 | — | 依赖 A7-2-1 的角色 status/userCount 缺口(见三) |
| 8 | 「批量配置角色」弹窗:多选员工+增量授予(「不会覆盖其已有角色」) | u201/u254-u314/u296 | 批量分配 | — | 缺接口:POST /users/batch-assign-roles(userIds+roleIds,增量语义) |
| 9 | 行内「移交数据」弹窗(已离职):接收人+待移交数量(线索/客户/商机/项目) | u317-u338/u368 | 移交预览+执行 | — | 缺接口×2:移交预览(分域数量)、移交执行(userId+receiverId,跨域改 owner) |
| 10 | 「导出数据」按钮(筛选区右侧) | u108/u360 | 导出 | — | 缺接口:用户列表导出(同筛选入参,返文件流) |
二、A7-1-2 同步任务(文本库 189 行)
| # | 原型要素 | 证据 | 应有接口 | 现状 | 差距 |
|---|---|---|---|---|---|
| 1 | 「立即同步」+确认弹窗+同步进度弹窗(任务编号/进度 60%) | u76/u270-u314 | 发起同步(任务化) | POST /sync/dingtalk(同步阻塞,返 DtSyncResultDTO 计数) | ✅核心可用;缺出参块:任务编号、进度百分比(任务化改造,重接口——票 06 拍板本期边界) |
| 2 | 同步记录列表:筛选(任务编号/开始时间/触发方式/执行状态)+列(任务编号 SYNC-MMDD-序号/开始时间/触发方式/执行状态/部门变更/人员变更/异常数/详情)+分页 | u88-u135/u323 | 分页查询同步记录 | — | 缺接口:GET /sync/tasks/page(需新建任务记录表) |
| 3 | 「详情」弹窗:执行结果/失败对象/接口错误/处理结果/进度/重新同步 | u285-u306/u328 | 任务详情 | — | 缺接口:GET /sync/tasks/detail?id=;「重新同步」复用发起同步 |
| 4 | 同步设置区:自动同步启停/每日执行时间/重试规则(间隔≥1min、次数≥1)/并发规则/当前计划/下次执行/最近修改 | u230-u260/u331 | 设置查询+保存 | — | 缺接口×2:GET/POST /sync/settings;需定时调度支持(重接口——票 06 拍板) |
三、A7-2-1 角色管理(文本库 195 行)
| # | 原型要素 | 证据 | 应有接口 | 现状 | 差距 |
|---|---|---|---|---|---|
| 1 | 顶部统计:角色总数/启用中/已停用/零使用人员角色数 | u23-u33/u204 | 角色统计 | — | 缺接口:GET /roles/stats(或 page 附带统计块) |
| 2 | 筛选:角色名称(keyword)/角色类型/状态 | u35/u207/u204 | 分页查询 | POST /roles/page(RoleParam 仅继承 BaseParam:keyword✅) | 缺入参:roleType(系统级/管理级/业务级/功能级)、status |
| 3 | 列表列:角色名称/角色类型/角色说明/在职使用人数/状态/最后更新 | u39-u58/u204 | — | RoleDTO(roleName/remark/updateTime✅) | 缺出参块:roleType、status、userCount(在职使用人数,离职不计——u204 定义) |
| 4 | 新建角色弹窗:名称(2-30 唯一)/类型(必填单选)/说明 | u137-u146/u204 | 保存 | POST /roles/saveOrUpdate(roleName✅ remark✅) | 缺入参:roleType;校验差距:名称长度/唯一性服务端校验 |
| 5 | 复制角色:来源角色+新名称,复制类型/说明/功能权限/数据范围/敏感权限,不复制人员,生成停用草稿 | u149-u160/u204 | 复制 | — | 缺接口:POST /roles/copy(sourceRoleId+roleName) |
| 6 | 停用/启用角色(确认弹窗;启用校验:≥1 有效业务菜单权限+四域数据范围有效) | u163-u186/u204 | 状态切换 | — | 缺接口:POST /roles/enable、/roles/disable(status 概念现缺) |
| 7 | 删除角色(仅在职使用人数=0;二次校验) | u189-u199/u204 | 删除 | POST /roles/delete(级联清理✅) | 校验差距:使用人数=0 才可删的服务端校验 |
| 8 | 「处理使用人员」→ 跳组织与人员页按角色筛选 | u80/u204 | 用户列表按角色筛 | — | 同一(3)缺 roleId 入参(见一#3) |
| 9 | 处理使用人员弹窗:选择/姓名/所属部门/职位/当前参与商机数 | u281-u314 | 用户列表 | POST /users/page | 部分覆盖;「当前参与商机数」列为域内统计(挂账,低优先) |
四、A7-2-2 编辑角色(基本信息)(文本库 83 行)
| # | 原型要素 | 证据 | 应有接口 | 现状 | 差距 |
|---|---|---|---|---|---|
| 1 | 页头:角色编号/状态/在职使用人数/创建时间/最后更新 | u19-u54/u69 | 详情 | GET /roles/detail(RoleDTO:roleCode/createTime/updateTime✅) | 缺出参块:status、userCount(同三#3) |
| 2 | 权限摘要(功能模块+数据范围只读) | u56-u63/u69 | 详情 | detail 返 resourceIds+moduleScopes | 前端可自算;资源名称需 resources/list 配合(可接受,不强求新端点) |
| 3 | 编辑基本信息(启用角色仅名称/说明可改;草稿可改类型) | u69 | 保存 | POST /roles/saveOrUpdate | 校验差距:启用角色字段可改性校验(roleType 落地后) |
| 4 | 「保存为停用」按钮 | u266 | 保存 | saveOrUpdate | 依赖 status 概念(同三#6) |
五、A7-2-3 编辑角色(功能权限)(文本库 110 行)
| # | 原型要素 | 证据 | 应有接口 | 现状 | 差距 |
|---|---|---|---|---|---|
| 1 | 第二栏菜单树(按业务模块+已选数量) | u98-u125/u74 | 资源树 | GET /resources/list | ✅ |
| 2 | 第三栏权限点分组(搜索/仅看已选;「当前有效」=启用且上级启用) | u155/u74 | 资源树 | listAll 返全量含 status | ✅(前端过滤+派生「上级已停用」可接受) |
| 3 | 保存功能权限:一次提交全部菜单+权限点;服务端补齐祖先+校验菜单↔权限点依赖 | u74(3.2/3.6) | 保存授权 | POST /roles/assign-resources(祖先补全✅ ADR-0005) | 校验差距:选权限点必须选所属菜单的依赖校验 |
| 4 | 取消模块权限二次确认+「当前影响:18 名使用人员」 | u23-u36/u74 | 影响人数 | — | 依赖三#3 userCount 出参 |
| 5 | 权限合并规则(多角色并集;仅启用角色计入) | u74(3.5) | 计算侧 | PermissionResolver(现有鉴权行为,不在本票深核) | 挂账:核对仅启用角色计入 |
六、A7-2-4 编辑角色(数据范围)(文本库 58 行)
| # | 原型要素 | 证据 | 应有接口 | 现状 | 差距 |
|---|---|---|---|---|---|
| 1 | 四域(线索/客户/商机/项目)×四档(仅本人/本部门/本部门及下属部门/全部数据);联系人跟随客户不单独配 | u27-u48/u54 | 模块清单+档位保存 | GET /api/data-scope/modules + detail.moduleScopes + saveOrUpdate.moduleScopesJson(档位 1-4 校验✅) | ✅(模块清单不含联系人即合规) |
| 2 | 缩小范围保存确认+影响人数 | u19/u54 | 影响人数 | — | 依赖三#3 userCount 出参 |
七、A7-2-2 权限点管理(文本库 490 行)
| # | 原型要素 | 证据 | 应有接口 | 现状 | 差距 |
|---|---|---|---|---|---|
| 1 | 筛选:名称模糊/编码模糊/状态(全部/启用/停用)+分页+命中补父级(父级不计入总数) | u25-u29/u197(3.1) | 树查询 | GET /resources/list(无参全量) | 缺入参:name、code、status、current、size;补父级行为(服务端或前端实现待定) |
| 2 | 列表列:名称/类型/编码/路由路径/API URL/描述/状态/操作 | u235-u247/u197(3.2) | — | ResourceNodeDTO 字段全齐 | ✅ |
| 3 | 新增一级菜单:菜单形态(目录/页面)/名称/图标必填/编码/描述/路由(页面必填)/排序 | u379-u397/u200(4.2) | 保存 | POST /resources/saveOrUpdate(type=CATALOG/MENU、icon、perms、route、sort✅;perms 三类必填+全局唯一已实现——ResourceServiceImpl 注释引 v29 u200/u206) | 校验差距:图标必填、路由页面必填校验;新增默认停用(u197 3.3-6,待核 service 现状) |
| 4 | 新增二级菜单(所属上级只读)/新增权限点(API URL 必填) | u427-u499/u200(4.3-4.4) | 保存 | saveOrUpdate(parentId、apiUrl✅) | ✅(apiUrl 必填校验待核) |
| 5 | 编辑:类型/编码只读;页面型一级有直挂权限点禁改目录 | u203 | 保存 | saveOrUpdate(编辑模式 perms 只读已实现) | ✅核心;「禁改目录」校验待核 |
| 6 | 独立「启用/停用」操作(确认弹窗带编码+角色引用数;被引用禁停用;停用菜单整棵下级暂时退出) | u118-u185/u208-u211 | 状态切换 | — | 缺接口:POST /resources/enable、/resources/disable(含引用校验);现无独立端点 |
| 7 | 删除校验:仅停用可删;无下级;有角色引用禁止删除(展示引用角色清单:名称/状态/在职人数/前往配置) | u64-u101/u218-u219 | 删除 | POST /resources/delete(子节点检查✅;级联清理引用——与原型「禁止删除」语义相反) | 校验差距(语义相反):改为引用即阻止;「仅停用可删」校验 |
| 8 | 角色引用查询(删除/启停弹窗数据源) | u85-u98 | 引用清单 | — | 缺接口:GET /resources/references?id=(返回引用角色列表) |
| 9 | 图标上传 | u626-u641 | 上传 | POST /resources/icon/upload | ✅ |
| 10 | 页面仅平台超管可访问 | u818/u191(2) | — | ResourceController 类级 hasRole('ADMIN') | ✅ |
八、深 tag 对账(拍板④:核对存量端点挂「A7 后台管理/…」完整路径)
| 端点 | 现挂 tag | 正式树路径 | 判定 |
|---|---|---|---|
| /users/* 4 端点 | A7 后台管理/用户管理 | A7 后台管理>A7-1 用户管理>A7-1-1 用户列表 | ✅(页面粒度:可细化 /用户管理/用户列表) |
| /depts/tree、save、delete | A7 后台管理/部门管理 | 正式树无「部门管理」页(部门树仅作 A7-1-1 左栏) | tag 待修+挂账:save/delete 原型无入口(对应未画的「组织架构」页 u67) |
| /sync/dingtalk、/users/admin-role | A7 后台管理/运维 | A7 后台管理>A7-1 用户管理>A7-1-2 同步任务 | tag 待修:sync 应挂「用户管理/同步任务」;admin-role 原型无对应页(挂账) |
| /roles/* 5 端点、/data-scope/modules | A7 后台管理/权限管理/角色管理 | A7 后台管理>A7-2 权限管理>A7-2-1 角色管理 | ✅ |
| /resources/* 4 端点 | A7 后台管理/权限点管理 | A7 后台管理>A7-2 权限管理>A7-2-2 权限点管理 | tag 待修:缺一级「权限管理」→「A7 后台管理/权限管理/权限点管理」 |
九、缺口汇总(本分区)
缺接口(9)
- POST /users/batch-assign-roles —— 批量增量分配角色(A7-1-1)
- 移交数据预览 + 移交执行(2 端点,跨域改 owner)(A7-1-1)
- 用户列表导出(A7-1-1)
- GET/POST /sync/settings + /sync/tasks/page + /sync/tasks/detail(3 端点,依赖任务化+调度,重接口)(A7-1-2)
- GET /roles/stats(A7-2-1)
- POST /roles/copy(A7-2-1)
- POST /roles/enable + /roles/disable(A7-2-1)
- POST /resources/enable + /resources/disable(A7-2-2 权限点)
- GET /resources/references?id=(A7-2-2 权限点)
缺入参(3 项)
- UserPageParam:+username、mobile、roleId、title(A7-1-1 筛选 6 项对齐)
- RoleParam:+roleType、status(A7-2-1 筛选)
- (RoleDTO 表单)+roleType(新建角色必填单选)
缺出参块(2 项)
- UserStatsDTO:+lastSyncTime×2、lastTransferTime(统计卡片时间戳)
- RoleDTO/RoleParam 出参:+status、userCount、roleType(角色列表三列+A7-2 各弹窗「影响 N 人」数据源)
校验差距(4 项)
- 角色名称 2-30 唯一;角色删除前使用人数=0;启用校验(≥1 业务菜单权限+四域数据范围);功能权限保存的菜单↔权限点依赖校验
- 资源删除语义改写:有引用禁止(现级联清理,语义相反)+仅停用可删;启停带引用校验
- 资源新增默认停用、图标/路由/apiUrl 必填校验(待核现状后补)
tag 待修(2 处)
- /resources/* 补一级「权限管理」;/sync/* 改挂「用户管理/同步任务」(+dept/save、delete 挂账待拍板)
幻影/挂账(3 项)
- /depts/save、/depts/delete:原型无入口(未画的「组织架构」页)
- /users/admin-role:原型无对应页
- 职务下拉值域来源、处理使用人员弹窗「当前参与商机数」列