所有权地图
所有权地图为您提供整个架构中所有权分配的全景视图。团队和用户以交互式气泡的形式呈现,气泡大小反映其拥有的元素数量。悬停可显示所有者之间的依赖关系线,点击可深入查看每个团队或个人负责的具体元素。
核心概念
所有者
每个 C4 元素(系统、容器、组件)都可以分配给一个或多个所有者:
| 所有者类型 | 描述 |
|---|---|
| 团队 | 组织内的团队。适用于表示小组、公会或领域团队。 |
| 用户 | 单个用户。适用于独立维护者或个人责任追踪。 |
一个元素可以同时拥有团队所有者和用户所有者。没有任何所有者的元素将被标记为未分配,并计入覆盖率缺口。
覆盖率
覆盖率衡量的是架构元素中已分配至少一个所有者的比例。所有权地图顶部显示:
- 总体覆盖率百分比 — 绿色(80% 以上)、橙色(50-79%)或红色(低于 50%)
- 按层级分类统计 — 系统、容器和组件的独立统计数据
- 已分配 / 总数 — 用于快速参考的原始数字
依赖关系
当不同团队拥有的元素之间存在 C4 关系时,所有权地图会在这些所有者之间绘制依赖关系线。这有助于发现跨团队耦合——例如,"前端团队的服务依赖于平台团队的 API Gateway。"
依赖关系具有以下特点:
- 从独立的 C4 关系聚合为所有者之间的连线
- 按底层关系数量加权(越粗 = 依赖越多)
- 悬停时显示,以保持概览界面简洁
使用所有权地图
概览
导航至全局架构 -> 所有权选项卡。概览以彩色气泡的形式展示所有团队和用户:
- 气泡大小反映所有者负责的元素数量
- 气泡颜色按团队/用户自动分配
- 如果可用,气泡内会显示团队/用户图标或头像
气泡采用力导向布局定位,自然地将关联的所有者聚集在一起。
悬停
将鼠标悬停在任意气泡上可以:
- 查看包含所有者全名和元素数量的提示框
- 显示连接到关联所有者的依赖关系线(带有动画虚线和数量标记)
- 淡化无关气泡,使所有权关系更加突出
放大查看
点击任意气泡可放大查看该所有者的元素详情:
- 圆形展开动画从气泡过渡到全屏详情面板
- 顶部区域显示所有者图标、名称、类型(团队/用户)和统计卡片
- 统计卡片可作为过滤器使用——点击"系统"、"容器"或"组件"仅显示对应类型
- 元素以卡片网格形式按 C4 层级分组展示,包含:
- 元素名称和描述
- 项目名称
- 共同所有权标签(同样拥有此元素的其他团队/用户)
- 按 Escape 键或点击返回回到概览
搜索
搜索栏在气泡层级进行过滤。可以输入以下任意组合:
- 所有者名称 — 例如 "Platform" 或 "Alice"
- 元素名称 — 例如 "API Gateway"
- 项目名称 — 例如 "Payment Service"
搜索使用全文匹配:所有搜索词必须出现在气泡的所有者名称、元素名称或项目名称中。
未分配元素
点击顶部的未分配开关可显示一个特殊的灰色气泡,其中包含所有没有任何所有者的元素。这有助于识别需要关注的覆盖率缺口。
分配所有权
通过图表
- 在 C4 图表上右键点击任意系统、容器或组件
- 在详情面板中打开所有者部分
- 点击添加所有者并选择团队或用户
- 所有权地图将自动更新
通过所有权地图详情视图
放大查看某个团队或用户时,列出的元素会显示其当前所有权。导航到对应项目图表上的元素即可修改所有者。
通过 API
使用元素所有者端点以编程方式分配所有权:
设置团队所有者:
PUT /api/v1/c4/systems/:id/owners
Content-Type: application/json
Authorization: Bearer <token>
{
"teamOwnerIds": ["<team-uuid-1>", "<team-uuid-2>"],
"userOwnerIds": ["<user-uuid-1>"]
}
相同的端点模式适用于容器(/c4/containers/:id/owners)和组件(/c4/components/:id/owners)。
最佳实践
尽早分配所有权
- 在创建或发现新系统时设置团队所有权
- 将所有权纳入 AI 发现审查流程
- 目标是在所有 C4 层级中实现 80% 以上的覆盖率
优先使用团队而非个人用户
- 团队不受人员变动影响——个人所有权会造成知识孤岛
- 将团队设为主要所有者,在需要时添加个人用户以明确责任
- 将团队映射到组织实际的小组或领域结构
审查跨团队依赖关系
- 定期将鼠标悬停在每个团队上查看依赖关系线
- 两个团队之间的高依赖数量可能表明紧密耦合
- 利用此洞察来指导服务边界决策和 API 契约工作
持续跟踪覆盖率
- 关注顶部的覆盖率百分比
- 在未分配元素累积之前及时处理
- 将 100% 所有权覆盖率视为持续性目标,而非一次性任务