构建团队用量报表
按同一天的用户用量与团队关系关联,处理五席门槛和重复成员。
Usage metrics API 不提供一个已经完整聚合的团队报表。原始团队分析需要下载每日 user-teams 与 per-user 用量,按日期和实体关联。若只需 UI 中的团队采用分组,Impact 看板已有对应映射。
下载对应日期
| 数据 | REST 入口 |
|---|---|
| 组织团队关系 | GET /orgs/{org}/copilot/metrics/reports/user-teams-1-day?day=YYYY-MM-DD |
| 企业团队关系 | GET /enterprises/{enterprise}/copilot/metrics/reports/user-teams-1-day?day=YYYY-MM-DD |
| 组织逐用户用量 | GET /orgs/{org}/copilot/metrics/reports/users-1-day?day=YYYY-MM-DD |
| 企业逐用户用量 | GET /enterprises/{enterprise}/copilot/metrics/reports/users-1-day?day=YYYY-MM-DD |
接口先返回 download_links 与 report_day,再从具有有效期限的签名链接下载 NDJSON;用户和团队行不是直接嵌在首次 REST 响应中。本来源未给统一链接有效秒数,不自行设定。
关联键
组织将 organization_user_teams_1_day 与 organization_users_1_day 按 (user_id, day, organization_id) 关联;企业将 enterprise_user_teams_1_day 与 users_1_day 按 (user_id, day, enterprise_id) 关联。
组织团队报告仅含组织 teams;企业报告包含 enterprise teams 和 business teams。必须同时匹配三个键,不能仅凭用户名关联不同日期。
关联后按 team_id 分组,slug 用于显示;事件量用 SUM,人数用 COUNT(DISTINCT user_id)。实体预聚合报告没有 user_id / team_id,不能通过同一方法拆出团队。
门槛与重复
当天少于 5 个已授予 Copilot 席位用户的团队不会出现在 user-teams 中。这个门槛是席位用户数,不是当天必须五人活跃;缺少团队行也不表示其成员没有用量。
同一用户属于多个团队时,会贡献到每个团队。例如 Alice 在前端与后端,Bob 只在前端;前端可合计两人的活动,后端包含 Alice 的活动。两队相加会重复 Alice。
因此,低于门槛会漏掉团队结果中的部分活动,多团队关系又会重复活动,团队总和不保证与实体总和相等或固定偏大/偏小。实体总数应直接使用用户或实体报告。
处理多日窗口
逐日下载,按当天成员关系与用量关联后,再汇总需要的窗口。不要拿一个日期的团队快照关联用户 28 天总量,否则会把期间所有活动错归到该日团队。
事件量可以跨天相加;活跃人数必须对整个窗口的用户 ID 去重,不能相加每日人数。团队在期间跨过五席门槛时,只有进入报告的日期会贡献团队统计。
Inner join 只保留当日有活动的匹配结果;若需要列出已进入 user-teams 但当日无活动的团队,可以从团队关系 left join,把缺少的活动计数处理为零。此方法仍不能补回被五席门槛排除的团队。
拆分维度
语言、IDE、功能、模型使用不同明细数组,应展开所需数组并汇总对应条目的计数。语言与 IDE 不在同一数组,不能做笛卡尔乘积冒充真实的语言×IDE 联合事件;官方说明需分别查询并在应用中组合。
第三方 agent 用 agent_id 聚合嵌套 job 数;逐用户数据没有该 agent 的 session_count,不能推导团队会话数。