所有权地图 - Archyl Docs

通过交互式气泡、依赖关系线和覆盖率跟踪,可视化团队和用户在架构中的所有权

所有权地图

所有权地图为您提供整个架构中所有权分配的全景视图。团队和用户以交互式气泡的形式呈现,气泡大小反映其拥有的元素数量。悬停可显示所有者之间的依赖关系线,点击可深入查看每个团队或个人负责的具体元素。

核心概念

所有者

每个 C4 元素(系统、容器、组件)都可以分配给一个或多个所有者:

所有者类型 描述
团队 组织内的团队。适用于表示小组、公会或领域团队。
用户 单个用户。适用于独立维护者或个人责任追踪。

一个元素可以同时拥有团队所有者和用户所有者。没有任何所有者的元素将被标记为未分配,并计入覆盖率缺口。

覆盖率

覆盖率衡量的是架构元素中已分配至少一个所有者的比例。所有权地图顶部显示:

  • 总体覆盖率百分比 — 绿色(80% 以上)、橙色(50-79%)或红色(低于 50%)
  • 按层级分类统计 — 系统、容器和组件的独立统计数据
  • 已分配 / 总数 — 用于快速参考的原始数字

依赖关系

当不同团队拥有的元素之间存在 C4 关系时,所有权地图会在这些所有者之间绘制依赖关系线。这有助于发现跨团队耦合——例如,"前端团队的服务依赖于平台团队的 API Gateway。"

依赖关系具有以下特点:

  • 从独立的 C4 关系聚合为所有者之间的连线
  • 按底层关系数量加权(越粗 = 依赖越多)
  • 悬停时显示,以保持概览界面简洁

使用所有权地图

概览

导航至全局架构 -> 所有权选项卡。概览以彩色气泡的形式展示所有团队和用户:

  • 气泡大小反映所有者负责的元素数量
  • 气泡颜色按团队/用户自动分配
  • 如果可用,气泡内会显示团队/用户图标或头像

气泡采用力导向布局定位,自然地将关联的所有者聚集在一起。

悬停

将鼠标悬停在任意气泡上可以:

  1. 查看包含所有者全名和元素数量的提示框
  2. 显示连接到关联所有者的依赖关系线(带有动画虚线和数量标记)
  3. 淡化无关气泡,使所有权关系更加突出

放大查看

点击任意气泡可放大查看该所有者的元素详情:

  1. 圆形展开动画从气泡过渡到全屏详情面板
  2. 顶部区域显示所有者图标、名称、类型(团队/用户)和统计卡片
  3. 统计卡片可作为过滤器使用——点击"系统"、"容器"或"组件"仅显示对应类型
  4. 元素以卡片网格形式按 C4 层级分组展示,包含:
    • 元素名称和描述
    • 项目名称
    • 共同所有权标签(同样拥有此元素的其他团队/用户)
  5. Escape 键或点击返回回到概览

搜索

搜索栏在气泡层级进行过滤。可以输入以下任意组合:

  • 所有者名称 — 例如 "Platform" 或 "Alice"
  • 元素名称 — 例如 "API Gateway"
  • 项目名称 — 例如 "Payment Service"

搜索使用全文匹配:所有搜索词必须出现在气泡的所有者名称、元素名称或项目名称中。

未分配元素

点击顶部的未分配开关可显示一个特殊的灰色气泡,其中包含所有没有任何所有者的元素。这有助于识别需要关注的覆盖率缺口。

分配所有权

通过图表

  1. 在 C4 图表上右键点击任意系统、容器或组件
  2. 在详情面板中打开所有者部分
  3. 点击添加所有者并选择团队或用户
  4. 所有权地图将自动更新

通过所有权地图详情视图

放大查看某个团队或用户时,列出的元素会显示其当前所有权。导航到对应项目图表上的元素即可修改所有者。

通过 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% 所有权覆盖率视为持续性目标,而非一次性任务

后续步骤