Releases · 用户入口与交互
- Asset
- ADP-DLV-DOC-DOC-0008
- Feature
- releases
- 领域
- delivery-integrations
- 文档状态
- draft
- 文档 Owner
- DOC
- 事实源
- canonical-docs
- 更新
- 2026/10/14
本文承载 Releases PRD 的真实入口、路由、页面结构与可见状态。
实现级事实按 PLN · 75c4f1c80ac12f1322fe7bac2132d49a875f3291 固定修订核验,界面文案以 Web 客户端当前
中文词条为准。
入口与路由
| 入口 | 位置 | 有效条件 |
|---|---|---|
| Project 导航项 | Project 侧边导航中的发布入口 | 仅当当前 Project 已启用 Releases 时渲染 |
| 发布列表页 | /{workspaceSlug}/projects/{projectId}/releases | 请求者是当前 Project 的 active 成员 |
| 发布详情页 | /{workspaceSlug}/projects/{projectId}/releases/{releaseId} | 条目存在且请求者有权访问该 Project |
| 功能开关 | Project Settings 功能列表中的 Releases 项 | 只有 Project Admin 可切换 |
| Milestone 侧读取 | Milestone 详情返回的关联 Release 列表 | Milestone 与 Release 同 Project |
导航渲染条件来自 apps/web/core/components/navigation/project-navigation-config.ts(release_view === true);
路由文件为 apps/web/app/(all)/[workspaceSlug]/(projects)/projects/(detail)/[projectId]/releases/page.tsx 与
同目录 releases/[releaseId]/page.tsx。
默认 Project 不启用 Releases:release_view 的模型默认值为 false
(apps/api/plane/db/models/project.py),而 game 项目 profile 模板默认启用该开关
(apps/api/plane/app/views/project/profile_template.py)。启用与否都必须由服务端校验,而不是仅靠隐藏入口。
页面与可见结果
发布列表
- 按状态分组展示条目:未发布、已发布、已取消;同组内按目标日期与稳定 ID 排序
(
apps/web/core/components/project-releases/overview.tsx、helpers.ts)。 - 每个条目展示名称、状态、目标日期(未设置时显示“未设目标日期”)、标签与负责人等可读信息。
- 无任何条目时展示“尚无发布”,并说明“规划项目发布,不改变里程碑交付状态”;分组为空时展示“此状态下没有发布”。
- 具备 Project Admin 权限时展示“创建发布”入口;Project Member 只读,不展示管理控件。
- Project 未启用 Releases 时,页面以该功能的说明文案替代列表,不展示任何条目或管理动作。
发布详情
详情页通过标签页组织信息(词条:概览、范围、变更日志、关联的里程碑):
| 区域 | 可见结果 | 主要动作 |
|---|---|---|
| 概览 | 名称、状态、标签、目标日期、实际发布日期、版本等字段 | “编辑发布”:打开表单修改状态、日期、标签、负责人与变更日志 |
| 范围 | 当前发布范围内的贡献工作项标识与状态 | “添加工作项”:按逗号、空格或换行批量粘贴工作项 ID;“移除工作项”从范围移出 |
| 变更日志 | 面向发布的变更说明 | 在编辑表单中维护 |
| 关联的里程碑 | 已关联 Milestone 的名称与目标日期 | “关联里程碑”与“取消关联”;说明文字明确“里程碑在明确关联到此发布前始终保持独立” |
创建与编辑表单
- 创建表单要求发布名称,名称空白时显示“发布名称不能为空。”。
- 标签输入提示使用项目标签(例如
v1.0.0、2026.08),不解析 SemVer。 - 负责人可选,且必须属于当前 Project。
- 编辑提交时使用当前
version;服务端冲突时界面必须展示可判定结果,而不是静默丢弃用户输入。
权限与可见性
| 用户 | 可见 | 可操作 |
|---|---|---|
| Project Admin | 列表、详情、功能开关、全部字段 | 创建、编辑、删除、范围与 Milestone 关联、启用/停用 |
| Project Member | 列表、详情与只读字段 | 无管理动作 |
| 非成员 / 其它 Workspace | 不展示该 Project 的发布数据 | 无 |
前端以 allowPermissions([ADMIN], PROJECT, …) 决定是否展示管理控件;服务端仍必须独立校验,隐藏控件不构成授权。
交互状态与反馈
- 加载态:列表与详情加载期间不展示过期条目内容;加载失败必须给出可重试的失败结果。
- 空态:无条目、分组为空、范围为空、变更日志为空、无关联 Milestone 各有独立文案。
- 未启用态:Project 未启用时展示功能说明,不展示创建与编辑控件。
- 权限态:无管理权限时只展示只读内容;服务端拒绝写入时界面展示真实错误。
- 冲突态:
version冲突或幂等冲突必须展示为需要刷新后重试的结果,不得静默覆盖或重复提交。 - 删除态:删除成功后条目与关联从列表和详情消失;重复提交不得产生第二条副作用。
无障碍与双语
- 列表区、编辑按钮、详情标签页、移除工作项按钮等交互元素提供稳定 accessible name。
- 关联与解除关联提供带对象名称的可读标签,不以颜色单独表达状态。
- 关键动作可通过键盘完成;对话框关闭后焦点回到触发位置。
- 中文与英文词条覆盖发布标题、状态、日期、标签、范围、变更日志、关联里程碑、空态与错误提示。
未核验与 unknown
- 列表默认分页大小、滚动或无限加载策略在浏览器矩阵下的实际表现。
- 状态分组的可视化样式细节、排序控件与批量操作是否属于 v1 范围。
- 移动端与窄屏布局、键盘全流程和屏幕阅读器实测结论。
- 是否存在未在
project-releases组件目录内声明的隐藏入口(例如 Work Item 详情侧的发布归属控件);当前核验 到的入口只有 Project 导航、Project Settings 功能开关与 Milestone 关联读模型。