Skip to main content

Workspace 管理

Asset
ADP-PLN-FEAT-DOC-0053
Feature
workspace-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

BLOCKED
development · not ready
  • 原子需求与验收
  • 设计与工程合同
  • 代码与仓库定位
  • 里程碑与工作包
  • 验证计划
  • 无阻断决策
verification · not ready
  • Development Ready 已通过
  • 验收标准已覆盖
  • 正式测试已登记
  • Fixture 与环境已定义
  • 测试规格已物化到正式测试
release · not ready
  • Verification Ready 已通过
  • 实现修订可定位
  • 发布证据已登记
  • 兼容与迁移已定义
  • Runbook 与回滚已定义
查看阻断项(5)
  • Development Ready 缺少:原子需求与验收
  • Development Ready 缺少:设计与工程合同
  • Development Ready 缺少:代码与仓库定位
  • Development Ready 缺少:里程碑与工作包
  • Development Ready 缺少:验证计划

功能目标​

让已登录用户创建 Workspace,并让 Workspace Admin 在明确的租户边界内维护 Workspace 身份、基础设置与退出/删除前置条件。

功能结论​

主题当前结论
Producer / 用户已登录用户可创建 Workspace;Workspace Admin 管理 Workspace 设置与删除。
入口/{workspaceSlug}/settings;Workspace URL 在设置页展示并可复制。
可见结果查看或修改名称、Logo、组织规模和时区;slug 作为当前 URL identity 只读展示。
当前系统保证Workspace 数据带稳定 id/slug;slug 唯一;项目和成员通过 Workspace 外键隔离;未授权 UI 控件不可编辑。
明确不做不在本页拥有实例设置、计费、成员角色、部门、Project 配置或运行环境状态。
权威 owner本页拥有 Workspace identity、基础设置与生命周期边界;当前实现事实由 Plane source 持有。

当前落地状态、已批准合同与差距​

  • 当前落地状态:Plane Web 已提供 Workspace General Settings。当前表单允许 Admin 修改 name、logo、organization size、timezone;slug/URL 只读。后端模型保存 name、slug、logo、owner、organization size、timezone 和审计字段。
  • 已批准合同:本轮只批准该能力作为工作空间级 Feature,以及 Workspace 是成员、Project 和下游资源的租户边界;源码观察不自动升级为长期产品承诺。
  • 当前差距:Web 表单仅向 Admin 开放更新,但通用 Workspace API permission 对 PUT/PATCH 仍允许 Admin 与 Member;角色矩阵需要收敛后才能成为稳定合同。
  • 当前差距:源码存在软删除和 slug 改名行为,但 UI 文案、恢复能力、保留周期和不可逆边界尚未形成一致、已审核的用户合同。
  • 后续交付:先确认 Admin/Member 的目标更新权限、删除语义和 slug 是否永远不可改,再补齐 API schema、审计与真实 TEST 验收。

用户与权限​

行为当前 source evidence文档结论
创建 Workspaceauthenticated user 的 POST 被允许当前实现事实;是否需要实例配额或创建策略待决策。
查看 General SettingsWorkspace 设置路由可访问,字段按当前 Workspace 渲染读取必须绑定当前 active membership。
修改 name/logo/organization size/timezoneWeb 仅 Admin 可操作目标权限尚未批准;后端 Member 写权限是已知不一致。
删除 WorkspaceWeb 只向 Admin 展示删除区;后端 DELETE 要求 Admin删除前的依赖预览、恢复和数据保留合同待补。

Workspace ownership、Workspace Role 与资源级权限是不同事实。本页不把 owner 字段解释为绕过 Workspace Role 的万能权限,也不定义成员晋降级规则。

用户流程与系统响应​

  1. 用户选择 Workspace,进入 General Settings。
  2. 页面显示 Logo、名称、Workspace URL、组织规模和时区;非 Admin 当前只能查看。
  3. Admin 提交更新后,客户端只发送可编辑基础字段,并在成功后刷新当前 Workspace read model。
  4. 名称校验失败、权限不足、Workspace 不存在或租户不匹配时应拒绝写入;不得在另一个 Workspace 上回退执行。
  5. 删除是独立高影响动作,不应由普通保存触发;目标合同需先展示影响并确认唯一 Workspace identity。

稳定状态、数据与 API​

当前可核验的核心数据为 Workspace.id、name、slug、logo/logo_asset、owner、organization_size、timezone 及创建/更新/删除审计字段。slug 当前有全局唯一约束,name 最大长度与 slug 保留字由服务端模型/校验器控制。

实现提供 Workspace collection/item API 和 General Settings 更新服务;本页暂不冻结具体 URL、请求字段全集或错误码。稳定公共合同至少应保证:

  • request 中的 Workspace slug 与资源 Workspace 一致;
  • 更新只接受明确 allowlist 字段,不接受客户端改写 id、owner 或审计字段;
  • 名称、slug、timezone 和上传资源在服务端复验;
  • 并发更新、重复请求和删除中的 Workspace 返回可区分的稳定错误;
  • 删除/恢复语义在被批准前不得由 UI 文案或模型实现单方面代签。

跨层依赖​

  • 成员与角色拥有 active membership、Workspace Role、邀请与离开规则。
  • 部门拥有部门实体,不改变 Workspace identity。
  • 项目管理消费 Workspace timezone 与 identity,但不拥有它们。
  • 计费、集成、Webhook、导出和分析只能引用 Workspace,不得反向修改基础身份事实。

异常与停止条件​

  • Workspace 不存在、用户无 active membership、slug 与 resource id 不一致或权限不足时 fail closed。
  • 名称/slug 冲突、非法 timezone、上传资源失败时不报告保存成功。
  • 删除影响范围、恢复语义或数据保留未能证明时,停止在删除确认 gate;不得用普通更新替代。
  • UI 与 API 权限不一致期间,以服务端拒绝为安全边界,但不能把当前较宽权限写成已批准目标。

验证与权威来源​

当前实现核验入口:

  • Web 路由:apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/page.tsx
  • Web 表单:apps/web/core/components/workspace/settings/workspace-details.tsx
  • 数据模型:apps/api/plane/db/models/workspace.py
  • 权限与 API:apps/api/plane/app/permissions/workspace.py、apps/api/plane/app/views/workspace/
  • 前端类型:packages/types/src/workspace.ts

这些路径是当前 source evidence,不是发布或 TEST evidence。Docusaurus build 只证明页面可构建。

待决策问题​

  1. Workspace 基础设置的目标写权限是仅 Admin,还是 Admin + Member 的分级字段权限?
  2. slug 是否永久不可修改;若允许修改,旧链接、唯一性和审计如何处理?
  3. Workspace 删除是可恢复软删除还是不可恢复销毁,影响预览和保留期分别是什么?