Skip to main content

Pages · 需求与数据合同

Asset
ADP-PLN-DOC-DOC-0008
Feature
pages
领域
plane-core
文档状态
draft
文档 Owner
DOC
事实源
canonical-docs
更新
2026/10/14

本文承载 Pages PRD 的数据、API 和受管 Automation target 细节,不复制 产品背景、范围或发布决策。原子 REQ / AC 与正式 TEST Asset 尚待 PLN、DOC 和 QA owner 登记,因此本页保持 draft。

PRD 追踪草案​

PRD 功能本页合同仍缺少
FR-001 Page Tree 与面包屑Page 关系、读取模型、稳定 URL原子 REQ / AC / TEST
FR-002 创建根 Page 与子 Pageparent、Project 与权限校验原子 REQ / AC / TEST
FR-003 移动与同级排序move command、无环、同级排序和版本原子 REQ / AC / TEST
FR-004 身份、权限与关系保护关系约束、原子失败和资源身份原子 REQ / AC / TEST
FR-005 受管 Spec Page冻结 target、typed result 与服务端 applicator首版范围决策、原子 REQ / AC / TEST

Page 关系与身份​

领域产品合同Owner
Page 关系Page 保留 Project 归属和可选 parent;根 Page 的 parent 为空,一个 Page 最多一个直接父级Plane 产品数据模型与服务
同级排序同一 parent 下以 sort_order 表示稳定顺序;未指定位置时追加到末尾Plane 读写 API / service
关系校验创建或移动校验 Project、权限、父级存在性、非自引用和无环性;失败不得部分写入Plane 读写 API / service
资源身份Page 的直达 URL 使用 Page ID;名称、祖先和移动不改变身份Plane 路由与 UI

Page 可同时承载文档内容和子 Page。Page.parent 是 Page 间关系,不建立第二套 Folder 资源、Folder table 或 document/folder 类型。

读取与移动合同​

API产品合同
GET /pages/默认只返回当前 Project 中用户可见的根 Page;include_descendants=true 返回有权访问的完整 flat Page list,结果包含稳定 ID、parent 和 sort_order,由 UI 构建树与祖先链
POST /pages/{pageId}/move/接收 { parent_id: uuid|null, before_id?: uuid|null, after_id?: uuid|null };before_id 与 after_id 互斥,且定位 Page 必须与目标 parent 同级
  • 创建和移动必须校验源、目标、Project、用户权限、当前资源版本和完整 parent graph。
  • 并发版本冲突返回稳定错误,不覆盖更新后的 parent 或排序。
  • API Schema 的最终错误结构和版本控制字段由 Plane owner 固化;等价实现不得破坏上述公共行为。

旧受管 Spec Page 退役​

Epic 绑定的生成 Spec、冻结 Page target、Run Result applicator 和专用关联不再是活动合同。已有 Page 与历史产物保留普通只读/编辑权限;需求方案由 OpenSpec 管理,不建立 Plane Page 副本或 Epic 影子审批。通用 Page 树、权限和移动合同不变。

非目标​

  • 不生成或解析可读 slug/path URL。
  • 不新增 Folder 或 wiki engine。
  • 不规定缓存、前端组件拆分或批量加载的实现算法。
  • 不通过 Page 层级推导 Project access。
  • 不让 Automation 持有 Page 通用写凭据。