项目管理
- Asset
- ADP-PLN-FEAT-DOC-0032
- Feature
- project-management
- 领域
- plane-core
- 作用域
- application-level
- 文档状态
- draft
- 产品生命周期
- active
- 文档 Owner
- DOC
- 事实源
- canonical-docs
- 工程 Owner
- PLN
- Development Ready
- not-ready
- 更新
- 2026/10/14
FEATURE DEVELOPMENT PACKAGE
工程就绪状态
工程 Owner:PLN · 仓库:PLN
- 原子需求与验收
- 设计与工程合同
- 代码与仓库定位
- 里程碑与工作包
- 验证计划
- 无阻断决策
- Development Ready 已通过
- 验收标准已覆盖
- 正式测试已登记
- Fixture 与环境已定义
- 测试规格已物化到正式测试
- Verification Ready 已通过
- 实现修订可定位
- 发布证据已登记
- 兼容与迁移已定义
- Runbook 与回滚已定义
查看阻断项(5)
- Development Ready 缺少:原子需求与验收
- Development Ready 缺少:设计与工程合同
- Development Ready 缺少:代码与仓库定位
- Development Ready 缺少:里程碑与工作包
- Development Ready 缺少:验证计划
功能目标
在一个 Workspace 内创建和维护 Project identity、可见性、基础设置与生命周期,并让所有 Project 子能力引用同一个稳定 Project 边界。
功能结论
| 主题 | 当前结论 |
|---|---|
| 用户 | Workspace Admin/Member 当前可创建 Project;Project Admin 或 Workspace Admin 当前可更新和删除。 |
| 入口 | Workspace Project 列表、Project 导航,以及 /{workspaceSlug}/settings/projects/{projectId}。 |
| 可见结果 | 维护名称、identifier、描述、Logo、封面、network、timezone 与 Project Profile;Admin 可归档或删除。 |
| 当前系统保证 | Project 必须属于一个 Workspace;同一 Workspace 中 active Project 的 name 与 identifier 唯一;identifier 保存为大写;Project Profile 不改变 Project 边界。 |
| 明确不做 | 不在本页拥有成员权限、Feature 开关、状态、Project Automation enablement/runtime lifecycle/audit、Profile 模板详情、归档详情页或工作项业务事实。 |
| 权威 owner | 本页拥有 Project identity 与基础生命周期;子能力各自拥有配置和数据。 |
当前落地状态、已批准合同与差距
- 当前落地状态:Plane 提供 Project 创建、列表/详情、General Settings、archive/unarchive 和 delete API;Web General Settings 仅 Project Admin 可编辑并显示 archive/delete 控件。
- 已批准合同:Project 是项目级 Feature 的主边界,隶属且不可跨越 Workspace;规划正文由指定仓库持有,Plane 原生工作管理与人工验收保持独立。
- 当前差距:archive API 当前允许 Project Admin/Member,而 Web 控件仅向 Admin 展示;目标角色矩阵需要收敛。
- 当前差距:network 的 current
Secret(0)/Public(2)对列表可见、详情进入和自动加入之间存在细粒度行为,尚未形成用户可解释的稳定合同。 - 后续交付:确认创建权、network 语义、archive/delete 权限及恢复边界后,再固定 API schema 与验收场景。
Project 身份与基础字段
General Settings 分别显示只读的项目 UUID(支持复制)和可编辑的项目标识符。UUID 用于外部连接定位;标识符用于工作项编号。UUID 不授予访问权限;执行服务绑定和 Issue 委托见Automation 用户操作。
| 字段 | 当前 source evidence | Owner |
|---|---|---|
| id / workspace | 稳定 Project identity 与强制 Workspace 外键 | 本页 |
| name / identifier | Workspace 内 active 唯一;identifier 大写、最大 12 字符 | 本页 |
| description / logo / cover | General Settings 展示与编辑 | 本页 |
| network | 当前为 Secret 或 Public | 本页,但访问效果与成员与访问共同约束 |
| timezone | 创建时默认继承 Workspace timezone,可在 Project 设置修改 | 本页 |
| project_profile / project_profile_template_version | Project 信息架构画像与模板应用版本 | Project Profiles |
| archived_at / deleted_at | Project 生命周期标记 | 本页;归档导航由归档展开 |
| feature flags / defaults | cycles/modules/pages/intake/type/time tracking/default assignee/state 等 | 各专项 Feature,不在本页重复定义 |
用户与权限
- 当前 Workspace Admin 与 Member 可创建 Project;创建者自动成为 Project Admin。
- 如果创建请求指定不同的 project lead,当前 source 会将其加入 Project Admin;是否继续保持此耦合待决策。
- 当前 Project Admin 或 Workspace Admin 可更新 Project 基础字段和删除 Project。
- 当前 Project 列表按 Workspace Role、Project membership 与 network 筛选:Guest 只看到已加入 Project;Member 可看到已加入或 Public Project。
- retrieve 当前仍要求调用者是 Project member;Public 不是匿名公开,也不等于自动拥有 Project Role。
用户流程与系统响应
- 用户在 Workspace 内创建 Project,提交 name、identifier 等基础字段。
- 服务端验证 Workspace、唯一性与字段格式,创建 Project、创建者 Admin membership,并初始化默认 states。
- Project Admin 在 General Settings 修改基础字段;archived Project 当前拒绝普通更新。
- archive 后 Project 从主要导航移出但保留恢复入口;unarchive 恢复可见性。
- delete 是独立高影响动作;当前模型走软删除基础设施,但用户可恢复性和保留期未批准,不应从实现推断。
数据、API 与事件
当前 Project API 提供 collection/list-detail/item、identifier availability、archive/unarchive 与 delete,并产生 project activity/webhook。目标稳定合同至少要求:
- Project id、Workspace id/slug 和 actor membership 在每次请求中一致;
- name/identifier 唯一冲突返回稳定字段错误;
- archive、unarchive、update、delete 并发时使用当前 version 或等价条件写;
- archived Project 禁止新增下游业务数据,允许的只读/恢复路径明确;
- delete 的影响范围、恢复能力和历史引用可解释;
- Project activity/webhook 不泄露敏感配置,且不能替代保存结果。
跨层依赖
- Workspace 管理提供租户 identity 与默认 timezone。
- 成员与访问拥有 direct membership 和 role;Public network 不替代 membership。
- Feature 开关拥有 Cycles、Modules、Pages、Intake 等开关。
- 状态拥有创建时初始化的状态集合。
- Automation拥有项目执行服务绑定、Issue 委托开关与 Symphony 接入边界。它不是 Project 基础生命周期,也不保存 Project Workspace registry、DSH Profile/Application 或进程配置。
异常与停止条件
- Workspace 不匹配、actor 无创建/管理权限、name/identifier 冲突时 fail closed。
- archived Project 的普通更新、Project Automation enablement 变更或新工作项写入不得悄悄成功;归档项目不能被 Symphony 领取,已有执行按取消/终态规则停止,不从进程存在推断交付结果。
- network 变化将扩大可见范围时,若影响无法预览或权限 owner 不明确,应停止变更。
- archive/delete 与下游执行、审批或发布仍活跃时,不得由本页自动取消或伪造完成。
验证与权威来源
- Web 设置:
apps/web/app/(all)/[workspaceSlug]/(settings)/settings/projects/[projectId]/page.tsx - Web 表单与控制区:
apps/web/core/components/project/form.tsx、apps/web/core/components/project/settings/control-section.tsx - API:
apps/api/plane/app/views/project/base.py、apps/api/plane/app/urls/project.py - 模型与类型:
apps/api/plane/db/models/project.py、packages/types/src/project/projects.ts
当前 source 证明代码路径存在,不证明 production activation;Project lifecycle 仍需真实 TEST 验收。
待决策问题
- Project 创建权最终是 Workspace Admin only,还是 Admin + Member?
- Public Project 的“可发现、可进入、自动加入、可见工作项”应分别如何定义?
- archive 与 delete 的角色、影响预览、恢复期限和历史保留合同是什么?
规划与工作管理分工
游戏愿景、Game Brief、GDD、架构和 Story 拆分使用 BMGD 工作流,产物保存在所属项目指定的规划仓库。 AutoDev 平台自身的需求和设计使用 canonical docs 与 OpenSpec。Plane 不维护第二份路线图、版本需求、 分析产物、规划审批或规划状态机;自定义项目规划入口、API、配置和 live models 全部退役。
Plane 保留原生 Issue、Module、Cycle、Milestone、父子/依赖关系、负责人、实时业务状态与评论。 规划来源通过固定仓库引用连接;物化只建立协作对象,不形成双向规划同步或自动接受产品成果。 独立 AutoDev Core 的任务与运行由其 owning 请求和执行源管理,不复制到 Plane。
从权威文档建立工作
使用当前 v3 普通 Issue 物化候选或人工创建工作,来源绑定完整 Git commit、路径和 SHA-256。 kind 为 issue/task/bug,父子关系不强制 Epic。物化保持自动化关闭,委托由 Issue 开关明确发起。 BMGD 工作台的内容预览仍需所属仓库入库及实际 tracker 比对;接入 BMGD 不代表已经发布或委托。
人工验收与历史
Issue 业务按钮和里程碑人工验收保留。指定人根据固定需求引用、当前原生工作范围和实际交付证据作出决定; Issue 数量、CI 成功、MR 合并和 100% 进度均不代表产品体验已通过。里程碑验收不再要求 Plane 版本计划。
migration 0099 在删除 live planning tables 前,将最终规划、产物、批准、成员映射和命令回执一次性保存到
PlanningRetirement: 只读历史。此前 Run/Epic 退役时的原始快照保留,最终修订不覆盖旧审批依据。
活动版本成员及其活动子项转换为原生里程碑归属;与直接/Cycle/Module 归属冲突时迁移原子中止。
旧里程碑合同和决定也归档,当前验收指纹清空并记审计,不自动继承旧批准。
历史可从 project history-archive/ 查看;没有旧规划读写 API、兼容参数或执行回退路径。
里程碑原生工作范围与人工验收合同见里程碑。