@atlaskit/teams-app-internal-analytics

中文文档
2.5.0发布于 2026/10/28Apache-2.0TypeScriptESM + CJS近 30 天下载 3万

团队应用软件和平台软件包用来处理人员和团队分析

中文使用文档
文档目录10 节
  1. 目录
  2. 概览
  3. 建筑
  4. 添加新事件
  5. 事件命名公约
  6. 分析背景
  7. 嵌入上下文
  8. 环境优先
  9. 测试分析
  10. 基本测试设置

团队 App 内部分析

Teams app和People & Teams平台软件包的综合分析软件包. 这个 软件包提供类型安全分析事件定义、上下文提供者和测试工具 跟踪用户互动和系统行为.

目录

概览

本软件包执行结构化分析系统,即:

  • 类型安全: 所有事件和属性都强烈输入
  • 声明: YAML 规格文件中定义的事件
  • 等级: 对丰富的元数据支持嵌入分析背景
  • 可测试:包括综合测试设施
  • 频道专用: 向专栏开火 peopleTeams 分析通道

建筑

analytics.spec.yaml          ← Event definitions (YAML)
        ↓
   Code Generation           ← Generates TypeScript types & hooks
        ↓
Generated Files:
├── analytics.types.ts       ← Type definitions for events
├── create-event-payload.ts  ← Event payload creation logic
└── use-analytics-events.ts  ← React hook for firing events
        ↓
    Consumers		     	 ← Use hook to fire analytics events
        ↓
Analytics Listeners          ← Events sent to 'peopleTeams' channel

添加新事件

  1. 定义事件 内 analytics.spec.yaml数字 :

事件定义文件规格

- button clicked (addUserToTeam):
    type: ui
    description: description of when this event fires
    attributes:
      <<: *PackageMetaDataContext
      newAttribute:
        type: string
        description: description of the new attribute
  1. 再生类型数字 :
yarn analytics:codegen
  1. 使用新事件数字 :
import React from 'react';
import { useAnalyticsEvents } from '@atlaskit/teams-app-internal-analytics';

function TeamMemberButton() {
    const { fireEvent } = useAnalyticsEvents();

    const handleClick = () => {
        fireEvent('ui.button.clicked.addUserToTeam', {
            testAttribute: 'memberInvite',
        });
    };

    return <button onClick={handleClick}>Invite Member</button>;
}

事件命名公约

事件遵循此命名模式 :

  • UI 事件数字 : ui.[actionSubject].[action].[actionSubjectId]
  • 音轨事件数字 : track.[actionSubject].[action].[actionSubjectId]
  • 业务活动数字 : operational.[actionSubject].[action].[actionSubjectId]
  • 屏幕事件数字 : screen.[screenName].viewed

分析背景

这个 PeopleTeamsAnalyticsContext 提供自动包含在 所有事件 由儿童部分发射.

嵌入上下文

<PeopleTeamsAnalyticsContext
    data={{
        source: 'teamsApp',
        attributes: { consumer: 'web' },
    }}
>
    <PeopleTeamsAnalyticsContext
        data={{
            source: 'teamsProfilePage',
            attributes: { teamId: 'team-123' },
        }}
    >
        <TeamProfile />
    </PeopleTeamsAnalyticsContext>
</PeopleTeamsAnalyticsContext>

结果事件有效载荷:

{
    "eventType": "ui",
    "actionSubject": "button",
    "action": "clicked",
    "actionSubjectId": "analyticsExample",
    "source": "teamsProfilePage",
    "attributes": {
        "packageName": "@atlassian/team-profile",
        "packageVersion": "X.X.X",
        "consumer": "web",
        "teamId": "team-123",
        "testAttribute": "yourValue",
        "sourceHierarchy": "teamsApp.teamsProfilePage"
    }
}

环境优先

当环境被嵌入时,有一个优先系统来确保正确的元数据被附加到 发送至GASv3的事件. 重复数据按下列顺序解决:

  1. 事件数据 (最高优先级)
  2. 内在上下文数据
  3. 外部环境数据

说明: 背景情况 attributes 只有在事件来自 peopleTeamsCtx 命名空间,例如 TeamsAppAnalyticsContext 从这个包裹。 其他事件有效载荷属性 喜欢 source 将附加到所有事件,而不论上下文名称空间.

测试分析

此套件包括测试帮助您校验分析事件被正确发送到 GASv3 (英语). 这些公用事业使用来自 PeopleTeamsAnalyticsListener,确保 事件有效载荷(包括所有提供的情况)与预期成果相匹配.

基本测试设置

import {
    createMockAnalyticsClient,
    renderWithAnalyticsListener,
} from '@atlaskit/teams-app-internal-analytics/test-utils';

const mockClient = createMockAnalyticsClient();

test('should fire analytics event on button click', async () => {
    const { user, mockClient, expectEventToBeFired } = renderWithAnalyticsListener(
        <PeopleTeamsAnalyticsContext data={{ source: 'teamsApp' }}>
            <ButtonWithAnalytics testId="analytics-button" />
        </PeopleTeamsAnalyticsContext>,
        { mockClient },
    );

    // Trigger the event
    await user.click(screen.getByTestId('analytics-button'));

    // Verify the event was fired correctly
    expectEventToBeFired('ui', {
        actionSubject: 'button',
        action: 'clicked',
        actionSubjectId: 'analyticsExample',
        source: 'teamsApp',
        attributes: expect.objectContaining({
            testAttribute: 'expectedValue',
        }),
    });
});

版本与发布记录

@atlaskit/teams-app-internal-analytics 共发布 65 个版本,首次发布于 2025/09/08;过去 12 个月发布了 42 个版本。

版本发布日期距今
2.5.0latest2026/10/2810 天前
2.4.42026/10/2315 天前
2.4.32026/10/071 个月前
2.4.22026/10/011 个月前
2.4.12026/08/262 个月前
2.4.02026/08/192 个月前

关于 @atlaskit/teams-app-internal-analytics 的常见问题

@atlaskit/teams-app-internal-analytics 是什么?

团队应用软件和平台软件包用来处理人员和团队分析

如何安装 @atlaskit/teams-app-internal-analytics?

在项目目录运行 npm install @atlaskit/teams-app-internal-analytics,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.2.0 || ^19.2.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@atlaskit/teams-app-internal-analytics 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@atlaskit/teams-app-internal-analytics 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@atlaskit/teams-app-internal-analytics 可以商用吗?

@atlaskit/teams-app-internal-analytics 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@atlaskit/teams-app-internal-analytics 的下载量有多少?

根据 npm 官方下载统计,@atlaskit/teams-app-internal-analytics 在 2026/10/07 – 2026/11/05 这 30 天内被下载 30,472 次,日均约 1,016 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@atlaskit/teams-app-internal-analytics 还在维护吗?

最新版本 2.5.0 发布于 2026/10/28(10 天前);至今共发布 65 个版本,其中过去 12 个月发布了 42 个;首次发布于 2025/09/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。