PRD 总览¶
这一部分展示的是 python-git-reproduction 的产品需求文档,但它不是把一份超长 PRD 粗暴贴上来,而是拆成多个主题文件,以便阅读、维护和追踪实现进度。
为什么要拆 PRD¶
原始需求覆盖的内容非常多:
- 仓库目录结构;
- 四类核心对象;
- Index V2;
- 管道命令;
- 瓷器命令;
- merge;
- pack 与远端;
- 非功能性约束;
- 分阶段路线。
如果把这些全部塞在一份巨型文档里,几个问题很快就会出现:
- 读的人很难定位主题;
- 改动一个点容易影响整个文档;
- 任务很难映射回具体需求;
- 教学价值会下降,因为文档变成了大段文字堆积,而不是结构化知识。
所以拆分 PRD 不是格式癖,而是维护策略。
怎么使用这一部分¶
如果你是第一次接触这个项目,不建议一上来就从 PRD 开始读。
更好的顺序是:
- 先看英文首页或中文首页;
- 再看快速开始;
- 再看 Git Teaching、Build Git Teaching 或 Project 部分;
- 需要正式规格时,再回来查 PRD。
PRD 更适合作为“正式参考层”,不是“第一节入门课”。
PRD 当前结构¶
当前拆分主题包括:
00-overview:项目目标、范围和兼容性原则;01-repository-layout:.pygit仓库结构;02-object-database:blob、tree、commit、tag;03-index:Index V2 暂存区;04-plumbing-commands:底层命令;05-porcelain-commands:上层命令;06-merge:合并与冲突处理;07-packfile-remote:pack、fetch、push、clone 和远端范围;08-non-functional:性能、锁、校验、异常和测试要求;09-roadmap:实现路线。
每个文件只负责一个主题,这样后续更新更容易控制范围。
PRD 和 SDD 的关系¶
在这个项目里,PRD 不是装饰性文档。它是 SDD 流程的起点之一。预期关系应该是:
- PRD 先定义需求;
- 任务清单从 PRD 派生;
- 模块设计围绕需求展开;
- 代码实现落地;
- 测试和安全边界验证实现是否符合需求;
- 当边界变化时,反向更新 PRD 和文档。
如果没有这条关系,PRD 就很容易变成“写完没人看”的静态文件。
PRD 不等于功能已经全部完成¶
这一点必须特别注意。PRD 描述的是目标和期望行为,不天然等于“仓库当前已经全部实现”。
因此,读 PRD 时必须和这些内容一起看:
- 项目当前实现边界;
- 任务清单;
- SDD 工程要求;
- 当前测试和验证状态。
只有把这些一起看,才能区分“需求目标”和“当前已完成实现”。
建议阅读顺序¶
正式阅读 PRD 时,建议按这个顺序:
00-overview01-repository-layout02-object-database03-index04-plumbing-commands05-porcelain-commands06-merge07-packfile-remote08-non-functional09-roadmap
这个顺序能让你从“系统是什么”,一路走到“系统怎么运行、怎么约束、怎么扩展”。