201 lines
7.3 KiB
Markdown
201 lines
7.3 KiB
Markdown
# 模块需求卡生成规范
|
|
|
|
本规范用于后续生成各业务模块需求卡,统一采用 `港口码头主数据需求卡.md` 的非表格条目式格式。需求卡应便于产品、前端、后端、测试共同理解,重点描述功能行为、异常边界和反例,不写成测试用例表格。
|
|
|
|
## 一、文件命名
|
|
|
|
- 文件名格式:`{模块名称}需求卡.md`
|
|
- 示例:`港口码头主数据需求卡.md`、`币种汇率管理需求卡.md`
|
|
- 模块名称应使用业务侧可识别名称,避免仅使用接口名、表名或英文缩写。
|
|
|
|
## 二、文档结构
|
|
|
|
需求卡固定包含以下结构:
|
|
|
|
```md
|
|
# {模块名称}需求卡
|
|
|
|
## 目录
|
|
|
|
- [REQ-{模块编码}-01 {功能标题}](#req-模块编码-01-功能标题)
|
|
- [REQ-{模块编码}-02 {功能标题}](#req-模块编码-02-功能标题)
|
|
- [通用规则](#通用规则)
|
|
|
|
REQ-{模块编码}-01 {功能标题}
|
|
|
|
- 功能点:{对该功能的简要概括描述}
|
|
- 异常与边界:①{异常或边界 1};②{异常或边界 2};③{异常或边界 3}。
|
|
- 反例:①{不允许的规则或错误用法 1};②{不允许的规则或错误用法 2};③{不允许的规则或错误用法 3}。
|
|
|
|
REQ-{模块编码}-02 {功能标题}
|
|
|
|
- 功能点:{对该功能的简要概括描述}
|
|
- 异常与边界:①{异常或边界 1};②{异常或边界 2}。
|
|
- 反例:①{不允许的规则或错误用法 1};②{不允许的规则或错误用法 2}。
|
|
|
|
## 通用规则
|
|
|
|
- {模块通用规则 1}
|
|
- {模块通用规则 2}
|
|
- {模块通用规则 3}
|
|
```
|
|
|
|
目录生成要求:
|
|
|
|
- 标题后必须立即生成 `## 目录`。
|
|
- 目录必须包含所有 `REQ` 需求项和 `## 通用规则`,顺序与正文保持一致。
|
|
- 目录使用 Markdown 链接,锚点与正文标题保持可跳转对应关系。
|
|
- 后续新增、删除、调整 `REQ` 项时,必须同步更新目录。
|
|
|
|
## 三、编号规则
|
|
|
|
- 每个功能描述使用 `REQ-{模块编码}-{两位序号}`。
|
|
- `{模块编码}` 使用 3 到 8 位大写英文,优先取模块英文简称。
|
|
- 序号从 `01` 开始递增,不跳号。
|
|
- 同一模块内编号不得重复。
|
|
|
|
示例:
|
|
|
|
- 港口/码头主数据:`REQ-PORT-01`
|
|
- 币种汇率管理:`REQ-CURR-01`
|
|
- 车辆管理:`REQ-VEH-01`
|
|
|
|
## 四、功能拆分规则
|
|
|
|
功能拆分应围绕用户可感知的业务能力展开,一个编号只描述一个清晰功能点。
|
|
|
|
优先拆分以下类型:
|
|
|
|
- 列表展示
|
|
- 条件查询
|
|
- 新增或手工录入
|
|
- 编辑或更新
|
|
- 启用
|
|
- 停用
|
|
- 删除或禁止删除
|
|
- 批量导入
|
|
- 模板下载
|
|
- 批量导出
|
|
- 状态流转
|
|
- 编码或唯一性规则
|
|
- 必填和格式校验
|
|
- 业务关联校验
|
|
- 权限控制
|
|
- 审计追踪
|
|
|
|
不得把多个互相独立的操作硬塞进同一个需求项。例如“新增、编辑、删除”应拆成多个 `REQ`,除非它们确实共享同一套规则且业务风险很低。
|
|
|
|
## 五、字段写作规范
|
|
|
|
### 1. 功能点
|
|
|
|
用于描述该功能“做什么”,要求简短、明确、面向业务。
|
|
|
|
写法要求:
|
|
|
|
- 使用一句话概括功能。
|
|
- 说明操作对象和业务目的。
|
|
- 可列出关键字段,但不要堆砌全部数据库字段。
|
|
- 不写技术实现细节,例如组件名、接口路径、方法名。
|
|
|
|
推荐写法:
|
|
|
|
- `功能点:支持手工新增港口主数据,录入港口编码、港口名称、所属城市、经纬度、备注等信息,默认数据来源为手工导入,默认状态为启用。`
|
|
|
|
不推荐写法:
|
|
|
|
- `功能点:调用 /submit 接口保存表单。`
|
|
- `功能点:点击按钮打开弹窗,然后 avue-crud 触发 rowSave。`
|
|
|
|
### 2. 异常与边界
|
|
|
|
用于描述系统遇到异常、极端输入、权限限制、业务冲突时应如何处理。
|
|
|
|
写法要求:
|
|
|
|
- 使用 `①②③` 分点描述。
|
|
- 每点应描述“条件 + 处理方式”。
|
|
- 优先覆盖必填、格式、范围、重复、引用、权限、接口失败、文件格式、状态冲突等场景。
|
|
- 不只写“提示错误”,要尽量说明何时提示、是否阻止提交、是否刷新列表、是否保持原状态。
|
|
|
|
推荐写法:
|
|
|
|
- `异常与边界:①编码为空时阻止提交并提示;②重复编码时由后端校验并返回明确原因;③接口提交失败时保留用户输入,方便修正后重新提交。`
|
|
|
|
不推荐写法:
|
|
|
|
- `异常与边界:报错。`
|
|
- `异常与边界:需要校验。`
|
|
|
|
### 3. 反例
|
|
|
|
用于描述明确不允许发生的行为、错误用法或违反规则的输入。
|
|
|
|
写法要求:
|
|
|
|
- 使用 `①②③` 分点描述。
|
|
- 反例应直接表达“不允许什么”。
|
|
- 可以写非法输入示例,如 `CNSH1`、`-1`、`181`。
|
|
- 反例不写系统应如何处理,处理方式放在“异常与边界”。
|
|
|
|
推荐写法:
|
|
|
|
- `反例:①录入无上级港口的码头;②将 CNSHG 作为码头编码;③上级港口为 CNSHG 时录入 CNNGB-CT1。`
|
|
|
|
不推荐写法:
|
|
|
|
- `反例:用户乱填。`
|
|
- `反例:后台报错。`
|
|
|
|
## 六、通用规则写作规范
|
|
|
|
文末必须保留 `## 通用规则`,用于汇总跨多个功能项重复出现的模块级规则。
|
|
|
|
通用规则适合放:
|
|
|
|
- 编码规则
|
|
- 必填规则
|
|
- 金额、经纬度、备注等统一校验
|
|
- 数据来源规则
|
|
- 启停和删除约束
|
|
- 权限和审计约束
|
|
- 新增、更新、导入后刷新规则
|
|
|
|
通用规则不应替代具体功能项。若某规则会影响具体操作,应同时在对应 `REQ` 的“异常与边界”或“反例”中体现。
|
|
|
|
## 七、内容约束
|
|
|
|
- 不使用表格。
|
|
- 不写测试步骤、预期结果、测试数据列。
|
|
- 不写接口路径、组件名、代码方法名,除非用户明确要求。
|
|
- 不写冗长背景介绍,首屏直接进入需求卡内容。
|
|
- 不凭空增加用户未提及且现有业务无法推断的复杂能力。
|
|
- 当需求明确“不支持删除”时,应单独拆出“禁止删除”需求项,并在通用规则中再次强调。
|
|
- 当涉及导入时,通常需要同时拆出“批量导入”和“模板下载”。
|
|
- 当涉及状态时,通常需要分别拆出“启用”和“停用”。
|
|
- 当涉及用户可见审计字段时,优先使用姓名字段,避免直接展示用户 ID。
|
|
|
|
## 八、生成流程
|
|
|
|
1. 先理解用户提供的模块说明和现有参考需求卡。
|
|
2. 梳理模块核心对象、关键字段、数据来源、允许操作、不允许操作。
|
|
3. 按业务能力拆分 `REQ` 编号。
|
|
4. 在标题下生成 `## 目录`,覆盖所有 `REQ` 项和 `## 通用规则`。
|
|
5. 为每个 `REQ` 编写三行:功能点、异常与边界、反例。
|
|
6. 汇总重复规则到 `## 通用规则`。
|
|
7. 检查是否误用表格、是否遗漏用户强调的禁止项、是否出现互相矛盾描述,并确认目录链接与正文一致。
|
|
|
|
## 九、质量检查清单
|
|
|
|
- 是否在标题下生成 `## 目录`。
|
|
- 目录是否覆盖所有 `REQ` 项和 `## 通用规则`。
|
|
- 目录顺序是否与正文顺序一致,链接是否可跳转。
|
|
- 每个 `REQ` 是否只有一个明确功能主题。
|
|
- 每个 `REQ` 是否都有功能点、异常与边界、反例。
|
|
- 异常与边界是否包含处理方式,而不只是问题名称。
|
|
- 反例是否使用“不允许”口径。
|
|
- 编号是否连续且无重复。
|
|
- 是否覆盖新增、更新、导入、导出、启停、权限、审计等常见管理功能。
|
|
- 是否把用户明确禁止的能力写成了可用能力。
|
|
- 是否保持非表格格式。
|