Skip to main content

Pages 产品需求文档(PRD)

1. 文档信息​

项目内容
文档版本V0.1
文档状态草案(Draft)
产品负责人Producer(范围、优先级和体验决策)
文档负责人DOC
评审人PLN、设计与 QA owner
目标版本Pages v1;发布日期待确认
适用范围Project 内 Page 的树形组织、导航、创建、移动和受管 Spec Page

1.1 变更记录​

版本日期修改人变更说明
V0.12026-09-15DOC将既有 Pages 产品合同整理为标准 PRD 草案,并把交互、数据/API 和验证细节拆入关联文档

本文只定义 Pages 的产品问题、范围、用户行为和验收结果。数据/API 字段、详细交互与测试步骤由关联文档拥有。

2. 背景与目标​

2.1 背景​

Project 内的 Page 既承载协作文档,也需要按主题形成可导航层级。如果层级依赖 URL、额外 Folder 实体或外部 wiki 模型,用户会面对资源身份变化、文档与容器二选一以及权限边界不一致等问题。

Pages v1 以同一 Page 实体组成树:Page 可以同时拥有内容和子 Page,层级由 Page.parent 表示,资源身份始终 由 Page ID 保持稳定。

2.2 用户问题​

用户问题用户影响产品需要提供的结果
内容缺少稳定层级用户难以从 Project 入口定位相关 Page展示可展开的 Page Tree 和祖先面包屑
文档与容器被拆成不同对象用户需要额外维护 Folder 或空目录页同一个 Page 同时支持内容与子级
移动层级可能改变链接已分享入口或业务关联失效移动后继续使用不变的 Page ID URL
非法移动可能形成跨 Project 引用或环树无法遍历并可能越权泄露所有移动在写入前校验 Project、权限和无环约束
Automation 生成的 Spec 缺少受管目标可能生成重复页面或写入错误对象Plane 预先绑定唯一 Page target 并在服务端校验结果

2.3 产品目标​

  • 用户可以在 Project 内浏览根 Page 与子 Page,并通过面包屑返回任一可见祖先。
  • 有权用户可以创建根 Page、创建子 Page、移动 Page 和调整同级顺序。
  • Page 移动只改变树关系和排序,不改变 Page 身份或直达 URL。
  • 系统拒绝跨 Project、自引用、后代成环、越权和错误同级定位的移动请求。
  • 受管 Automation Spec 始终写入 Plane 预先绑定的 Page,不允许执行端自行选择目标。

2.4 成功指标​

以下为草案测量框架。涉及体验时延、树规模和观察窗口的目标尚未冻结,不能据此宣称已达到发布门。

指标计算口径草案目标
核心任务闭环率无需修改 URL 或创建额外 Folder 即完成创建、导航或移动的有效任务数 / 同类任务数目标待 Producer 确认
稳定链接保持率移动后仍能通过原 Page ID URL 打开的 Page 数 / 成功移动 Page 数100%
非法关系写入数被持久化的跨 Project、自引用或成环 parent 关系数0
权限泄露数树或面包屑向用户暴露无权访问 Page 身份或内容的事件数0
受管 Spec 目标一致率服务端校验通过且写入冻结 Page target 的 Spec 结果数 / 成功应用的 Spec 结果数100%
树操作反馈时延页面提交创建或移动至显示成功、失败或冲突结果的时间P95 目标、负载和浏览器矩阵待确认

指标事实来自 Plane 持久化关系、权限检查、服务端审计事件和浏览器端到端观测。目标环境、树规模、统计窗口及 无效样本边界由 Producer、PLN 与 QA owner 在进入批准评审前确定。

3. 用户与使用场景​

3.1 目标用户​

用户核心任务权限边界
Page 读者浏览树、打开 Page、沿面包屑定位内容只能看到有权访问的 Project 和 Page
Page 编辑者创建、编辑、移动和排序 Page必须同时满足 Project 与目标位置的写权限

3.2 用户故事​

  • 作为 Page 读者,我希望沿树和面包屑定位内容,以便理解当前 Page 在 Project 中的位置。
  • 作为 Page 编辑者,我希望创建根 Page 或子 Page,以便用一个既可写内容又可容纳子级的对象组织知识。
  • 作为 Page 编辑者,我希望移动 Page 并调整顺序,同时保持分享链接不变。

3.3 核心场景​

  1. 从 Project Pages 树打开一个根 Page 或子 Page。
  2. 在当前 Page 下创建子 Page,或在根级创建 Page。
  3. 把 Page 移到新的父级、根级或同级指定位置。
  4. 从面包屑返回某个可见祖先。

4. 产品范围​

4.1 本期候选范围​

编号功能用户结果优先级目标版本
FR-001Page Tree 与面包屑用户可以浏览有权访问的 Page 层级并返回祖先P0Pages v1
FR-002创建根 Page 与子 Page编辑者可以在合法位置创建 PageP0Pages v1
FR-003移动与同级排序编辑者可以调整 parent 和同级位置,且链接不变P0Pages v1
FR-004身份、权限与关系保护非法或越权请求被拒绝且不产生部分写入P0Pages v1
FR-005受管 Spec PageEpic 专用路径已退役,历史产物保留退役不再实施

4.2 明确不做​

  • 不提供可读 slug/path URL,不把面包屑解释为可解析资源路径。
  • 不新增 Folder table,不建立 document/folder 双模型,也不引入 wiki engine。
  • 不让树层级替代 Project 权限或成为权限继承机制。
  • 不在本期定义删除或归档包含子级 Page 的最终策略。
  • 不承诺跨 Project 复制或迁移 Page Tree。
  • 不允许 Automation 执行端自行选择 Page、标题、URL 或扩大 Page 写权限。

5. 功能需求​

5.1 FR-001 Page Tree 与面包屑​

用户故事:作为 Page 读者,我希望看到当前 Project 的 Page Tree 和当前 Page 的祖先链,以便快速定位内容。

前置条件:用户可以访问当前 Project 及相应 Page。

主流程:

  1. 用户进入 Project Pages,页面展示其有权访问的根 Page 与后代。
  2. 用户展开树或打开 Page,页面显示从 Project Pages 根到当前 Page 的面包屑。
  3. 用户选择可见祖先,系统通过该祖先的 Page ID URL 打开页面。

异常与边界:树和面包屑不得通过祖先名称、数量或占位节点泄露无权访问的 Page;折叠和展开不改变树关系。

验收标准:

  • Given Project 中存在多层 Page,When 有权用户打开子 Page,Then 页面展示可见祖先链并允许返回任一可见祖先。
  • Given 用户无权访问某个 Page,When 系统构建树和面包屑,Then 不展示该 Page 的身份或内容。

5.2 FR-002 创建根 Page 与子 Page​

用户故事:作为 Page 编辑者,我希望在根级或现有 Page 下创建 Page,以便组织协作文档。

前置条件:用户拥有当前 Project 和目标父级所需的写权限。

主流程:

  1. 用户选择根级或一个当前 Page 作为创建位置。
  2. 系统校验 Project、权限和父级有效性。
  3. 系统创建 Page,并在树与面包屑中展示新位置。

异常与边界:父级不存在、属于另一 Project 或用户无权访问时不创建 Page;已有子级的 Page 仍可承载内容。

验收标准:

  • Given 用户有权编辑 Project,When 在根级创建 Page,Then 新 Page 作为根节点出现并可写入内容。
  • Given 用户选择同 Project 的可写 Page,When 创建子 Page,Then 新 Page 的 parent 指向该 Page,父 Page 仍可显示自身内容。
  • Given 目标父级无效或越权,When 用户提交创建,Then 系统拒绝请求且不产生 Page。

5.3 FR-003 移动与同级排序​

用户故事:作为 Page 编辑者,我希望移动 Page 或调整同级顺序,以便维护清晰的内容结构。

前置条件:用户有权修改 Page,并可访问目标父级和定位 Page。

主流程:

  1. 用户选择新的父级、根级或同级 before/after 位置。
  2. 系统校验目标属于同一 Project、不会形成环且定位 Page 与目标同级。
  3. 系统原子更新 parent 和同级顺序,刷新树与面包屑。

异常与边界:不得移动到自身或后代之下;before 与 after 互斥;并发版本冲突不得覆盖更新后的关系。

验收标准:

  • Given 合法目标位置,When 用户移动 Page,Then 树、排序和面包屑更新,原 Page ID URL 仍可打开同一 Page。
  • Given 目标是自身、后代、另一 Project 或错误同级定位,When 用户提交移动,Then 系统拒绝且原关系保持不变。

5.4 FR-004 身份、权限与关系保护​

用户故事:作为 Project 成员,我希望系统始终保持正确的 Page 身份和权限边界,以便可信地分享和浏览内容。

业务规则:

  • 一个 Page 最多有一个直接 parent,根 Page 的 parent 为空。
  • parent 与 child 必须属于同一 Project,关系必须无环。
  • Page ID 是资源身份;名称和祖先变化不改变直达 URL。
  • 创建或移动必须在同一操作中完成校验与写入,失败不得留下部分关系或部分排序。
  • Page Tree 不授予或扩大 Project 访问权限。

验收标准:

  • Given 任一 Project、权限、父级或版本校验失败,When 系统处理创建或移动,Then 请求 fail closed 且不产生部分写入。
  • Given Page 已被移动或重命名,When 用户访问原 Page ID URL,Then 打开同一 Page。

5.5 FR-005 受管 Spec Page(退役)​

Epic 专用生成与绑定流程删除。旧产物保留历史引用,需求方案转由 OpenSpec 管理;本 FR 不作为当前实现或验收要求。通用 Page 功能不受影响。

6. 权限与业务规则​

操作权限要求附加规则
浏览树与面包屑可访问当前 Project 与 Page只返回可见节点和祖先信息
创建 PageProject 与目标位置写权限父级必须属于同一 Project
移动或排序源 Page 和目标位置写权限无环、版本和同级定位校验

Page Tree 只负责组织和导航,不创建新的成员、角色或权限继承关系。

7. 非功能需求​

  • 一致性:创建与移动的关系、排序和审计必须原子提交;冲突不得静默覆盖。
  • 安全:Project 隔离和 Page 权限 fail closed;页面及 API 不泄露不可见祖先。
  • 可访问性:树、移动入口和面包屑需要支持键盘操作及明确焦点;具体矩阵由设计和 QA owner 确认。
  • 性能:树加载和移动反馈必须具备可测目标;最大树规模、P95 目标和分页/增量策略尚待确认。
  • 兼容性:移动与重命名不得改变 Page ID URL;不新增 path URL 兼容层。

8. 数据与埋点​

产品指标至少需要区分树加载、Page 创建、移动成功、移动拒绝、面包屑跳转和受管 Spec 应用结果。事件名称、 字段、保留周期和数据看板 owner 尚待确认;埋点不得记录无权访问的祖先名称或 Page 内容。

权威产品事实仍是 Plane 的 Page、parent、sort order、权限检查和服务端审计,前端埋点不能替代关系真相。

9. 整体验收标准​

  • 用户可以完成“进入树 → 打开子 Page → 沿面包屑返回祖先”的可访问闭环。
  • 编辑者可以完成“创建 → 移动 → 调整同级顺序”,且 Page ID URL 始终不变。
  • 跨 Project、自引用、后代成环、越权、错误同级和并发版本冲突均被拒绝且零部分写入。
  • Page 可以同时显示内容和子级,不产生 Folder 或 document/folder 双模型。
  • 受管 Spec 启用时,只能更新 Plane 冻结并校验的同一 Project Page target。

10. 发布计划​

项目草案计划
首个切片FR-001 至 FR-004;FR-005 是否随首版交付待 Producer 确认
灰度先在受控 Project 验证多层树、移动冲突和权限负向场景,再扩大范围
上线条件本期 FR 验收通过;树规模和体验指标锁定;设计、权限和测试证据齐备
产品回退关闭新增移动/树入口不得删除 Page、关系、内容或审计;技术回滚由实施文档定义
日期待排期,不改变已冻结的产品边界

11. 依赖与风险​

类型风险或依赖产品影响处理原则
Plane 数据模型parent、排序和版本能力尚需实现证据树可能不一致或移动被覆盖以数据库约束、事务与正式测试证明
权限不可见祖先参与树构建泄露 Page 身份或内容服务端按当前用户过滤并 fail closed
并发多用户同时移动同一或相邻 Page排序丢失或形成错误关系使用版本冲突和原子关系更新
大树体验未锁定规模与加载策略页面延迟或操作困难在发布前确定目标规模、时延和体验方案
Automationtarget 或结果合同不一致写入错误 Page 或产生重复 Spec由 Plane 预绑定并在服务端 exact 校验

12. 待确认事项​

待确认事项决策人最迟完成时间与影响
FR-005 是否进入 Pages v1 首个发布切片Producer范围评审前;影响首版范围,不影响 FR-001 至 FR-004 合同
删除或归档包含子级 Page 的策略Producer / PLN owner相应功能进入开发前;当前不在本期范围
最大树规模、加载策略和创建/移动反馈 P95Producer / PLN / QA ownerDevelopment Ready 前;阻塞性能验收
浏览器、桌面/移动端及键盘验收矩阵设计 / QA ownerVerification 计划冻结前;阻塞体验验收
埋点名称、字段、观察窗口与看板 ownerProducer / 数据 owner开发完成前;阻塞成功指标验收
跨 Project 复制或迁移是否进入后续版本Producer后续规划评审;不影响 Pages v1

13. 附录:关联资料​