# 模块需求卡生成规范 本规范用于后续生成各业务模块需求卡,统一采用 `港口码头主数据需求卡.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` 是否都有功能点、异常与边界、反例。 - 异常与边界是否包含处理方式,而不只是问题名称。 - 反例是否使用“不允许”口径。 - 编号是否连续且无重复。 - 是否覆盖新增、更新、导入、导出、启停、权限、审计等常见管理功能。 - 是否把用户明确禁止的能力写成了可用能力。 - 是否保持非表格格式。