第4章 权限需求文档的结构化拆解:用户故事、权限规则表、异常分支

4.1 业务背景与用户场景

权限模块常因需求描述模糊导致开发误解:产品经理仅写“管理员可查看所有数据”,开发则自行解释为“所有页面可见,未限制列级权限”。结果上线后出现数据泄露,返工成本高昂。本章聚焦于如何通过结构化拆解,将模糊的权限需求转化为可验证、可测试的文档。

典型用户场景(以企业CMS系统为例):

  • 场景A:内容编辑员只能编辑自己创建的文章,不能查看他人草稿;
  • 场景B:部门主管可查看本部门所有人员的提交记录,但不能删除;
  • 场景C:系统管理员拥有全平台权限,但需在操作日志中记录每一次修改。

4.2 用户访谈与问题定位

通过访谈实际用户(编辑、主管、审计)发现三个核心痛点:

  1. 权限颗粒度不明确:“能看”不等于“能复制”、“能导出”;
  2. 异常行为漏处理:当用户被撤销权限后,已打开的页面是否应立即锁定?
  3. 规则边界模糊:“查看本部门数据”如何定义跨部门项目时成员的区域?
✏️ 需求拆解要点:在用户访谈后,需将每一条口述需求映射到至少三个维度——角色、资源、操作。缺少任一维度即为无效需求。

4.3 结构化拆解:三要素框架

将一条权限需求拆解为三个组成部分,每个部分对应独立的文档模块:

要素 示例 对应文档结构
1. 用户故事 作为内容编辑员,我希望只能编辑自己发布的文章,以避免误操作他人内容。 需求编号 + 故事卡片
2. 权限规则表 角色: 编辑 | 资源: 文章(article) | 操作: create/update/delete_own | 条件: creatorId==userId 表结构:角色、资源、操作、约束、生效时机
3. 异常分支 当编辑被停用后,已打开的编辑页面提交时返回401,并给出“权限已变更,请刷新”提示。 异常场景编号 + 预期行为

4.4 用户故事编写规范

用户故事应遵循「角色 – 目标 – 理由」标准模板,并附加验收条件(AC)。示例如下:

US-001:查看个人文章列表
角色:内容编辑员
目标:我希望在左侧菜单点击“我的文章”后,只看到我本人创建的文章(不含草稿状态)
理由:避免被其他编辑员的草稿干扰,提升工作效率
验收条件:
AC1:列表只显示 creator_id == 当前用户ID 的文章
AC2:列表不包含状态为“草稿”但 creator_id == 当前用户ID 的文章(此条由规则表另行定义)
AC3:如果当前用户是管理员,则列表显示全部文章

4.5 权限规则表设计模板

权限规则表是结构化的核心产出,采用行列交叉定义。以下为CMS系统简化版规则表:

资源 操作 编辑员 主管 管理员
文章(article) create ✓ ✓ ✓
文章(article) read 只读自己 本部门 全部
文章(article) update 自己创建 本部门 全部
文章(article) delete ✗ ✗ 全部

每条规则需额外附加约束条件(如:只能操作状态≠“已发布”的文章)和生效时机(如:资源加载时、提交时)。

4.6 异常分支清单

权限模块的异常分支常被遗漏,导致原型验证时无法覆盖边界。以下为必须考虑的异常类别:

  • 角色变更:用户角色在操作过程中被修改(如从编辑降为只读);
  • 资源状态变化:用户打开编辑页面后,该资源被管理员锁定或删除;
  • 权限过期:临时授权有时间限制,超时后仍执行写操作;
  • 并发冲突:同一角色由多个管理员同时编辑权限配置。
🚨 常见陷阱:不要将异常分支写成“系统报错”——必须明确错误码、前端提示文案、后续操作(如是否刷新页面、是否弹窗)。否则开发会将其留空,导致用户体验断裂。

4.7 交付物模板汇总

本章对应的交付物包含以下三个模板,可直接用于原型阶段的评审:

  1. 用户故事卡片(包含ID、角色、目标、理由、验收条件列表)
  2. 权限规则矩阵(Excel/表格形式,含角色×资源×操作,以及约束条件)
  3. 异常分支检查表(按优先级列出异常场景、预期前端行为、后端返回规格)

4.8 结构化拆解流程总图

下图展示了从原始需求到三要素产出的完整流程:

权限需求结构化拆解流程 原始权限需求 用户访谈 & 场景梳理 用户故事 权限规则表 异常分支 结构化需求文档(三要素合并) 原型验证 & 验收 每个要素都需包含验收条件与异常处理,否则需求无法进入原型阶段
📋 验收标准(本章交付物通过条件)
  • 每个角色至少关联3个操作(增/删/改/查/导出/审批等);
  • 权限规则表中每个单元格要么是“✓”、“✗”,要么是具体的约束条件(不能空缺);
  • 异常分支清单不少于5条,且每个异常都写明了前端反馈内容与HTTP状态码/错误码;
  • 用户故事中的验收条件已转化为规则表中的明确行或列入异常分支。

4.9 本章指标验证方法

建议使用需求覆盖矩阵来验证拆解是否完整:

需求覆盖矩阵(示例)
需求编号 | 是否包含用户故事 | 是否映射规则表行 | 是否覆盖异常分支
US-001    | ✓                | 3行(read/create/update) | 新增2条异常
US-002    | ✓                | 2行(read)             | 1条异常
...        | ...              | ...                    | ...

覆盖率要求:所有初级权限需求(用户访谈记录)至少对应一条规则表行,100% 关联。异常分支覆盖率不低于 80%,否则返工补充。