Files
ks-prd-draft/references/prd-draft-document-spec.md
2026-05-14 12:31:10 +08:00

98 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PRD 草案文档规范
## 适用范围
- 创建、修改或检查任意项目的 PRD、需求草案、产品需求、业务规则文档时遵守本文件。
- 本文件是通用兜底规范;如果项目已有更具体的需求模板、命名规则或文档结构,优先沿用项目规范。
- 本文件只约束需求草案阶段不替代数据模型、API 设计、技术方案、任务拆解或代码实现规范。
- 需求草案只整理业务目标、规则、数据、边界和闭环,不设计下游实现。
## 阶段
- `需求草案阶段`:收集和归并已确认需求;未确认项显式标注 `需补``待确认`;不要求同步修改代码和下游文档。
- `可进入下一阶段`需求草案已稳定阻塞问题已消除可作为后续数据、API、设计或实现工作的输入。
- `归档阶段`:需求已经确认并沉淀;新增需求或未确认变更应回到需求草案阶段处理。
- 如果项目使用不同阶段名称,保留项目名称,但仍遵守本文件的阶段边界。
## 文档结构
- 文档路径和文件名优先沿用项目既有约定;没有约定时,由用户确认目标路径。
- 一个需求文档应描述一个清晰业务主题;主题过宽时先建议拆分。
- 标题、元信息、章节结构优先沿用项目模板;没有模板时,可使用 `prd-draft-format-template.md` 的通用骨架。
- 不为了套模板创建空章节、空表格、伪造对象或重复内容。
- 不把同一批数据项、规则或流程在多个章节中重复抄写。
- 未确认事项必须保留在相关需求语境中,标记为 `需补``待确认`
## 需求表达
- 用业务语言描述需求:目标、参与方、触发条件、输入、处理规则、输出、状态、边界、异常、权限和生命周期。
- 用户用实现语言表达时,转译为业务需求:
- 表、字段、列、属性、model、struct 转为业务数据对象和数据项。
- API、Service、任务、队列、缓存、页面组件 转为业务能力、流程、交互、集成或展示需求。
- 索引、唯一约束、字段类型、请求响应结构 转为业务唯一性、校验规则、数据含义或交互约束。
- 如果某个技术名词本身就是项目通用业务术语,可以保留术语,但不要扩展成实现设计。
- 备选方案只能写成备选或待确认,不写成已确认结论。
## 数据表达
- 涉及保存、维护、读取、展示、统计或传递的数据时,必须说明数据的业务含义、来源、生成方式、更新时机和使用场景。
- 数据项统一表达为业务数据项不写数据库字段类型、ORM 类型、索引、迁移脚本或存储结构。
- 多值、多对多、明细记录、操作记录、绑定关系等独立存在的数据,应识别为独立业务对象或独立业务记录,不塞进主对象的单个数据项里。
- “唯一”只能表达为业务唯一性要求,不写索引、约束或数据库实现方式。
- 值域、状态、类型、来源、等级等要说明业务含义、可见范围、是否参与流程分支和状态流转。
## 既有资产
- 需求涉及既有业务对象、数据、页面、权限、状态、集成、模块复用或“新增 xxx 功能”时,必须先检查项目已有文档和事实来源。
- 如果复用既有承载,在需求中写明 `复用既有 <业务对象/流程/页面/模块/集成>`
- 如果无法确认是否复用,写明 `待确认:是否复用 <候选承载>`
- 只有确认没有合理既有承载,或用户明确确认不存在可复用承载时,才写成创建新的业务对象、流程、页面或集成能力。
- 与既有文档、实现、术语、权限或业务规则冲突的需求,必须先提示冲突,不得写成确定结论。
## 检查口径
检查 PRD draft 时至少覆盖:
- 完整性:目标、范围、参与方、触发、输入、处理、输出、权限、边界、异常、状态和生命周期是否齐全。
- 闭环:用户或系统从触发到结果是否能走通;成功、失败、取消、重复、历史数据和异常中断是否有合理结果。
- 数据:业务数据对象、数据项、来源、生成规则、使用场景、值域和状态是否完整。
- 合理性:是否符合主流产品习惯、正规业务流程、行业常识、权限常识和最小必要复杂度。
- 复用:是否已检查既有资产,是否误写成新增表、新增接口、新增页面或新增模块。
- 边界:是否遗漏空数据、重复提交、并发、撤销、回退、历史兼容、不可见、无权限和生命周期结束场景。
- 未确认项:是否还存在阻塞进入下一阶段的 `需补``待确认`、事实冲突或未闭环事项。
- 越界项:是否混入 API 路径、请求响应结构、SQL、字段类型、类名、文件结构、任务拆解或代码实现。
## 问题分级
- `阻塞问题`:不解决就无法进入下一阶段,例如核心目标不清、关键流程断裂、权限或数据规则冲突、事实来源冲突。
- `建议修正`:不一定阻塞,但会导致误解、返工或不符合主流做法,例如命名不清、边界缺失、重复表达、复杂度过高。
- `可后续确认`:不影响当前主链路,但后续设计或实现前需要补齐,例如提示文案、排序细节、默认展示数量。
## 检查输出格式
- 检查中一旦识别出真实问题、闭环缺口、业务 bug 风险、事实冲突或明显不合理点,不只指出问题,还要同步给出修正路径。
-`阻塞问题``建议修正` 中的每一个问题,必须提供恰好 3 个可执行方案,不能只给 1 个,也不能只说“可进一步讨论”。
- 每个问题的输出至少包含:
- 问题描述:当前问题是什么。
- 影响说明:为什么它会阻塞、返工或产生业务风险。
- 方案 A / 方案 B / 方案 C三个彼此可区分的处理方案。
- AI 推荐最优方案:明确只选一个最优方案。
- 推荐理由:说明为什么这个方案在当前上下文下最优,以及主要前提和取舍。
- `可后续确认` 如果本身已经形成明确决策分叉,也按同样格式提供 3 个方案和 AI 推荐;如果只是信息待补,不强制展开 3 个方案,但要说明影响和最晚确认时点。
- 除非用户明确要求“只列问题不要给方案”,否则检查输出不得只报问题不报方案。
## 禁止事项
- 禁止修改代码、测试、配置、数据库迁移、构建脚本、部署文件或生成物。
- 禁止在需求草案阶段写数据模型、API 文档、技术设计、实现计划或任务拆解,除非用户明确切换阶段。
- 禁止写 API path、HTTP method、鉴权实现、request/response schema。
- 禁止写 SQL DDL、字段类型、索引、唯一约束、迁移脚本。
- 禁止写类名、struct、component、router、service、job、queue、cache 或文件结构设计。
- 禁止为了套模板编造业务对象、数据项、字段清单、状态值、字典值或空章节。
- 禁止把未确认事项写成确定结论。
- 禁止把用户的功能需求在未检查既有资产前直接推导为新建表、新增接口、新建页面或新模块。
## 模板
创建新文档、重建正文结构或需要参考需求项写法时,读取 `prd-draft-format-template.md`