# @beesolve/dmarc-dashboard 中文文档

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

版本：0\.10\.11
npm 元数据更新时间：2026-10-28T10:28:32.342Z
中文译文更新时间：2026-11-07T22:32:55.976Z
软件包许可：MIT

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

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

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

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

## 中文简介

DMARC 仪表板——用于查看DMARC 报告的 SvelteKit 应用程序

## 安装

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

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

## README

# @ beesolve/dmarc-dashboard (英语)

SvelteKit仪表板用于收看DMARC报告——部署在CloudFront后方的AWS Lambda上,并带有电子邮件编码认证.

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

## 建筑

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

## 先决条件

```bash
npm install \
  @beesolve/dmarc-dashboard \
  @beesolve/dmarc-reports \
  @beesolve/dmarc-consumer \
  @beesolve/auth-service \
  aws-cdk \
  aws-cdk-lib \
  constructs
```

-   [`@beesolve/dmarc-reports`](https://npmcn.com/package/%40beesolve/dmarc-reports) 将 DMARC 电子邮件输入 EventBridge
-   [`@beesolve/dmarc-consumer`](https://npmcn.com/package/%40beesolve/dmarc-consumer) - 继续向迪纳摩开发银行提交报告
-   [`@beesolve/auth-service`](https://npmcn.com/package/%40beesolve/service-auth) ——与会话管理层进行电子邮件码认证

## CDK 设置

```typescript
import { AuthGateway } from "@beesolve/auth-service/cdk";
import { DmarcConsumer } from "@beesolve/dmarc-consumer/cdk";
import { DmarcDashboard } from "@beesolve/dmarc-dashboard/cdk";
import { DmarcReports } from "@beesolve/dmarc-reports/cdk";
import { App, 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, "DmarcStack", {
  env: { account: "123456789012", region: "eu-central-1" },
});

// 1. Set up report ingestion (SES → S3 → EventBridge)
const dmarcReports = new DmarcReports(stack, "DmarcReports", {
  recipient: "rua@dmarc.example.com",
});

// 2. Set up consumer (EventBridge → SQS → Lambda → DynamoDB)
const consumer = new DmarcConsumer(stack, "DmarcConsumer");

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

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

这个 `DmarcDashboard` 构建条款:

-   SvelteKit app on Lambda (通过 `kit-on-lambda`(中文(简体) )
-   带有 Auth 饼干执行的 CloudFront 分布
-   认证行为 `/auth/*` 路线
-   检察官办公室编码的电子邮件服务
-   事件Bridge 认证事件规则( 发送 OTP 电子邮件)

## 数据层( 远程函数)

仪表板通过SvelteKit远程函数读取和写入其数据,而不是 `+page.server.ts` `load`编号 :`actions`定义 `src/lib/remote/*.remote.ts`, (中文(简体) ), 按域(`domains`, (中文(简体) ), `reports`, (中文(简体) ), `stats`, (中文(简体) ), `users`, (中文(简体) ), `setup`:

-   `query(...)` 用于读取(域列表、统计、报告细节、域概览)。 網址 过滤器,例如 `cursor`编号 :`date`编号 :`month` 被传递作为瓦利博特验证的论据.
-   `form(...)` 用于用户提交的突变(邀请用户,编辑用户,完整设置).
-   `command(...)` 对于事件处理器引用的程序变异(域更新).

每个函数通过 `getRequestEvent().locals` (单位:千美元)`locals.user`, (中文(简体) ), `locals.session`, (中文(简体) ), `locals.services`页:1 `hooks.server.ts` 众生. 行政和 每个域的守卫都生活在远程函数内。 变异后, 相关的 `query(...).refresh()` 需要单飞UI更新.

错误映射集中到 [`src/lib/server/httpErrors.ts`](https://npmcn.com/package/%40beesolve/dmarc-dashboard/src/lib/server/httpErrors.ts)数字 : `toRemoteError(error, { redirectOnUnauthorized })` 将域错误转换为 SvelteKit `error()`编号 :`redirect()`,以及 `requireUser(user)` 守备本届会议。 打电话 `toRemoteError(...)` 直接内置 a `catch` - 从来没有 `throw` 它的结果.

远程函数由 `experimental.remoteFunctions` 财务报告和审定财务报表 `compilerOptions.experimental.async` 内 `vite.config.ts`。仅保留 服务器负载为 `+layout.server.ts` (供应 `user`页:1 `setup/+page.server.ts` 重定向后卫, 和登录通用/排出负载 .

环境变量在 `src/env.ts` 通过 `defineEnvVars` (瓦利博特语) 和进口、打印和验证,从 `$app/env/private`。登录/ 校验 `/auth/*` 流打 认证服务 CloudFront 源并故意 离开远程功能层外.

## 第一次部署

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

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

## 地方发展

运行 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
```

`bun run dev` 网址:http://localhost:5173。 这个 `dev` 脚本运行 `bun --env-file=.env.local vite dev`这样 `.env.local` 装入 `process.env` 在服务器启动前。 两张表格的正文是用 `src/env.ts` (单位:千美元)`defineEnvVars`)并读取、打印和验证,从 `$app/env/private` 内 `hooks.server.ts`; 工作空间 SDK 客户端仍然从 `process.env` 在导入时间。 (`.env.local` 必须存在 - 它是本地 def 配置; 从 `.env.local.example`. ) (中文(简体) )

### 假冒会议

当地没有Lambda授权人,所以 `@beesolve/auth-service` 输入 dev 自动会话。 设定 `DEV_USER_EMAIL` 内 `.env.local` 改为 **真实** 用户的 dMARC 表格中的电子邮件 —— 应用程序浏览以解决用户的角色 (admin/user)和允许的域,所以你可以看到同样的UI,他们会。 这是 护卫 `import.meta.env.DEV` 绝不列入已部署的捆绑.

若为 `DEV_USER_EMAIL` 未设置, 认证服务会回到内置 `dev-user` 会话,它不会解决对桌子(导航隐藏) 只有管理员的链接和该用户的数据查询不返回任何内容).

### 必需的 vars

见 [`.env.local.example`](https://npmcn.com/package/%40beesolve/dmarc-dashboard/.env.local.example) 完整名单。 两张桌子 vars (英语:`DMARC_TABLE_NAME`, (中文(简体) ), `DMARC_REVERSE_INDEX`)将宣布为 `src/env.ts` 财务报告和审定财务报表 经验证 `defineEnvVars` 第一次从 `$app/env/private`编辑 认证/电子邮件/消费者 SDK 客户端在导入时分析自己的内存( 自动处理器) ARN, 电子邮件队列/ table/bucket, 任务队列), 因此所有任务队列必须全部存在或第一个 请求会扔出.

## 特征

-   域概览,包含汇总通过/失效数据
-   以页标显示的全域报告时间表
-   用户管理( 请, 删除)
-   电子邮件编码登录( 无密码)

## 资料来源:IP浓缩(ipinfo.io)

源IP可通过免费的ASN/组织名称和国家来丰富 (原始内容存档于2017-10-21). ipinfo.io Lite API. 这是可选的——没有密钥 ASN/ 国别列 改为: `—`。见 [文件/ipinfo-setup.md](https://npmcn.com/package/%40beesolve/dmarc-dashboard/docs/ipinfo-setup.md) 如何获得 键并配置在本地和部署中.

## 许可证

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

## 常见问题

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

DMARC 仪表板——用于查看DMARC 报告的 SvelteKit 应用程序

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

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

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

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

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

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

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

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

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

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

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

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

