# @beesolve/analytics-dashboard 中文文档

规范地址：https://npmcn.com/package/%40beesolve/analytics-dashboard/

版本：0\.8\.3
npm 元数据更新时间：2026-10-28T10:27:49.845Z
中文译文更新时间：2026-11-07T20:45:17.628Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40beesolve/analytics-dashboard
原文对照：https://npmcn.com/package/%40beesolve/analytics-dashboard/?lang=original
项目主页：https://github.com/BeeSolve/packages/tree/main/packages/analytics-dashboard#readme
源码仓库：https://github.com/BeeSolve/packages

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：6 MB，413 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：14 个
- peer 依赖：constructs ^10\.8\.1，aws-cdk-lib ^2\.275\.0
- 首次发布：2026-10-12T15:09:02.391Z
- 最新版本发布：2026-10-28T10:27:49.137Z
- 近 30 天下载量：2900（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：25（近 12 个月 25 个）

## 中文简介

CloudFront 分析仪表板 — SvelteKit 访问交通分析软件

## 安装

```sh
npm install @beesolve/analytics-dashboard
```

也可以使用：`pnpm add @beesolve/analytics-dashboard`、`yarn add @beesolve/analytics-dashboard`、`bun add @beesolve/analytics-dashboard`

## README

# @ beesolve/分析-dashboard

用于查看CloudFront交通分析的SvelteKit仪表板——部署在CloudFront后方的AWS Lambda上,并有电子邮件编码认证.

> \[尖叫声\] **前1.0——不稳定的API.** 这个软件包是 `0.x` 活动 发展。 打破的改变可以降落在任何 `0.x` 释放无主 版本凸起。 选中一个精确的版本并在升级前审查更改日志 . 一旦API稳定,包裹到达 `1.0.0`,它跟随语义 版本和此通知被删除 .

## 建筑

```
┌────────────┐     ┌──────────────┐     ┌─────────┐     ┌──────────┐
│ CloudFront │ ──► │ Lambda (SSR) │ ──► │ DynamoDB│     │   SES    │
└────────────┘     └──────────────┘     └─────────┘     └──────────┘
       │                     ▲                                ▲
       │          read-only  │ analytics table                │
       │          (AnalyticsProcessor.grantRead)      OTP emails via
       └── /auth/* ──► AuthGateway (authorizer)       @beesolve/email-service
```

仪表板读取 `@beesolve/analytics-processor` 迪纳摩DB表(时/日/月) 总计 + 分数 **只读**它自己的小DynatomDB 桌子持有 仪表板 `Users`编号 :`Setup` 记录(签名、角色).

## 先决条件

```bash
npm install \
  @beesolve/analytics-dashboard \
  @beesolve/analytics-processor \
  @beesolve/cdk-constructs \
  @beesolve/auth-service \
  aws-cdk \
  aws-cdk-lib \
  constructs
```

-   [`@beesolve/cdk-constructs`](https://npmcn.com/package/%40beesolve/cdk-constructs) —— 说 `CloudFrontAccessLoggingSettings` 带有标准日志 v2
-   [`@beesolve/analytics-processor`](https://npmcn.com/package/%40beesolve/analytics-processor) – Athena 查询结果汇总到 DynamoDB
-   [`@beesolve/auth-service`](https://npmcn.com/package/%40beesolve/service-auth) ——与会话管理层进行电子邮件码认证

## CDK 设置

```typescript
import { AnalyticsDashboard } from "@beesolve/analytics-dashboard/cdk";
import { requiredRecordFields } from "@beesolve/analytics-processor";
import { AnalyticsProcessor } from "@beesolve/analytics-processor/cdk";
import { AuthGateway } from "@beesolve/auth-service/cdk";
import { CloudFrontAccessLoggingSettings } from "@beesolve/cdk-constructs";
import { App, RemovalPolicy, Stack } from "aws-cdk-lib";

const frontendUri = process.env.FRONTEND_URI;
if (frontendUri == null) throw new Error("FRONTEND_URI environment variable is required");

const app = new App();
const stack = new Stack(app, "AnalyticsStack", {
  env: { account: "123456789012", region: "eu-central-1" },
});

// 1. Log the distribution to S3 as Parquet (standard logging v2)
const logging = new CloudFrontAccessLoggingSettings(stack, "Logging", {
  athena: { account: "123456789012", recordFields: requiredRecordFields },
});

// ...create your CloudFront `distribution`, spreading
// `...logging.cloudFrontLoggingSettings` into its props, then:
logging.enableV2Logging({
  distributionArn: `arn:aws:cloudfront::123456789012:distribution/${distribution.distributionId}`,
});

// 2. Aggregate logs into DynamoDB
const processor = new AnalyticsProcessor(stack, "Processor", {
  athenaDatabase: logging.glueDatabaseName!,
  athenaV2Table: logging.glueTableName!,
  athenaWorkgroup: logging.workgroupName!,
  logBucketArn: logging.logBucket.bucketArn,
  athenaResultsBucketArn: logging.athenaResultsBucket?.bucketArn,
});

// 3. Set up authentication
const auth = new AuthGateway(stack, "Auth", {
  stage: "prod",
  frontendUri,
  allowSignUp: false,
  authorizerCache: "disabled",
});

// 4. Deploy the dashboard
const dashboard = new AnalyticsDashboard(stack, "AnalyticsDashboard", {
  auth,
  processor,
  emailSender: {
    name: "Analytics Dashboard",
    emailAddress: "noreply@example.com",
  },
});
```

这个 `AnalyticsDashboard` 构建条款:

-   SvelteKit app on Lambda (通过 `kit-on-lambda`(中文(简体) )
-   带有 Auth 饼干执行的 CloudFront 分布
-   认证行为 `/auth/*` 路线
-   用于仪表板的专用DynamoDB表(+逆向GSI) `Users`编号 :`Setup`,通过 `ANALYTICS_USERS_TABLE` 编号 : `ANALYTICS_USERS_REVERSE_INDEX`
-   只读访问处理器分析表 `processor.grantRead(handler)` (单位:千美元)`ANALYTICS_TABLE_NAME` 编号 : `ANALYTICS_REVERSE_INDEX`(中文(简体) )
-   检察官办公室编码的电子邮件服务
-   事件Bridge 认证事件规则( 发送 OTP 电子邮件)

## 数据层( 远程函数)

仪表板通过SvelteKit远程功能读取其数据,而不是 `+page.server.ts` `load`编号 :`actions`定义 `src/lib/remote/*.remote.ts`数字 :

-   `getOverview({ grain, anchor?, size? })` ——每粒夹住窗口,计算边界 从主机中确定密钥( 没有 DynamoDB 光标), 并返回总计序列 加号 `prev`编号 :`next` 锚.
-   `getBreakdown({ dimension, grain, periodKey })` ——读出单一的分界线分解.
-   `users`编号 :`setup` 远程函数镜像 `@beesolve/dmarc-dashboard` (守军, `toRemoteError`, (中文(简体) ), `requireUser`编号 :`requireAdmin`) (中文(简体) ).

环境变量在 `src/env.ts` 通过 `defineEnvVars` (瓦利博特计划)和 从 `$app/env/private`数字 : `ANALYTICS_TABLE_NAME`, (中文(简体) ), `ANALYTICS_REVERSE_INDEX`, (中文(简体) ), `ANALYTICS_USERS_TABLE`, (中文(简体) ), `ANALYTICS_USERS_REVERSE_INDEX`。 。 。 .

## 第一次部署

SvelteKit大楼需要 `FRONTEND_URI` 环境变量(CloudFront URL),它直到第一次部署后才存在:

1.  设定 `FRONTEND_URI` 到占位符 URL( 例如). `https://placeholder.cloudfront.net`(中文(简体) )
2.  部署 — 从 CDK 输出注意 CloudFront URL
3.  更新 `FRONTEND_URI` 使用真实的 URL 并重新部署

## 回填历史

CloudFront 标准日志 v2 仅在升级后开始收集 Parquet 数据 `CloudFrontAccessLoggingSettings` 已经部署。 历史交通生活 已经收集 v1 (tab- delited) 日志. 运行一次性回填 `@beesolve/analytics-processor` 曾经, 作为操作员,在任何人依赖远程视图之前将表格从v1历史中填入:

```bash
# from the analytics-processor package, with AWS creds (AWS_PROFILE) in scope
bun run backfill -- --from 2026-01-01T00:00:00Z --to 2026-02-01T00:00:00Z
```

后填是可再接再励的,而且恰好是一模一样的 (每小时的一能标记),所以重新运行它 跳过已处理的小时。 请参看处理器 README的全旗参考.

## 地方发展

运行 SvelteKit dev 服务器对面 **真实** 已部署后端- 无固定装置 :

```bash
bun install
cp .env.local.example .env.local   # then fill in real values
aws sso login                      # (or export AWS_PROFILE) so SDK clients can reach AWS
bun run dev
```

当地没有Lambda授权人,所以 `@beesolve/auth-service` 输入 dev 会话 自动。 设定 `DEV_USER_EMAIL` 内 `.env.local` 改为 **真实** 用户在用户中的电子邮件 表格 —— 应用浏览它以解决用户的角色. 这是由守护 `import.meta.env.DEV` 绝不包含在已部署的包里.

## 特征

-   以小时/日/月/年谷物切换和滚动的预/下个窗口进行概览
-   显示点击、成功、出错和字节的站牌
-   分解分解: HTTP 状态、 国家、 设备以及顶端路径
-   电子邮件编码登录( 无密码) + 用户管理( 请, 删除)

## 许可证

[麻省理工学院](https://npmcn.com/package/LICENSE)

## 常见问题

### @beesolve/analytics-dashboard 是什么？

CloudFront 分析仪表板 — SvelteKit 访问交通分析软件

### 如何安装 @beesolve/analytics-dashboard？

在项目目录运行 npm install @beesolve/analytics-dashboard，或使用 pnpm add / yarn add / bun add。

### @beesolve/analytics-dashboard 支持 TypeScript 吗？

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

### @beesolve/analytics-dashboard 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @beesolve/analytics-dashboard 可以商用吗？

@beesolve/analytics-dashboard 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @beesolve/analytics-dashboard 的下载量有多少？

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

### @beesolve/analytics-dashboard 还在维护吗？

最新版本 0\.8\.3 发布于 2026/10/28（10 天前）；至今共发布 25 个版本，其中过去 12 个月发布了 25 个；首次发布于 2026/10/12。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

