# @defra/fcp-audit-publisher 中文文档

规范地址：https://npmcn.com/package/%40defra/fcp-audit-publisher/

版本：1\.0\.14
npm 元数据更新时间：2026-11-02T12:28:31.074Z
中文译文更新时间：2026-11-11T21:03:41.913Z
软件包许可：OGL-UK-3\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40defra/fcp-audit-publisher
原文对照：https://npmcn.com/package/%40defra/fcp-audit-publisher/?lang=original
项目主页：https://github.com/DEFRA/fcp-audit-publisher#readme
源码仓库：https://github.com/DEFRA/fcp-audit-publisher

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

- 包体积（解压后）：23 kB，10 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：未声明
- 运行依赖：1 个
- peer 依赖：@aws-sdk/client-sns \>=3
- 首次发布：2026-05-05T08:57:20.409Z
- 最新版本发布：2026-11-02T12:28:30.724Z
- 近 30 天下载量：10680（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：19（近 12 个月 19 个）

## 中文简介

一个图书馆,用于验证和/或向财务和方案预算审计处公布财务和方案预算审计活动.

## 安装

```sh
npm install @defra/fcp-audit-publisher
```

也可以使用：`pnpm add @defra/fcp-audit-publisher`、`yarn add @defra/fcp-audit-publisher`、`bun add @defra/fcp-audit-publisher`

## README

[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=defra_fcp-audit-publisher&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=defra_fcp-audit-publisher) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=defra_fcp-audit-publisher&metric=bugs)](https://sonarcloud.io/summary/new_code?id=defra_fcp-audit-publisher) [![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=defra_fcp-audit-publisher&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=defra_fcp-audit-publisher) [![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=defra_fcp-audit-publisher&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=defra_fcp-audit-publisher) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=defra_fcp-audit-publisher&metric=coverage)](https://sonarcloud.io/summary/new_code?id=defra_fcp-audit-publisher) [![Dependabot](https://img.shields.io/badge/dependabot-enabled-025E8C?logo=dependabot)](https://github.com/DEFRA/fcp-audit-publisher/blob/main/.github/dependabot.yml)

# FCP 审计出版商

一个图书馆,用于验证和/或向财务和方案预算审计处公布财务和方案预算审计活动.

## 安装

```bash
npm install fcp-audit-publisher
```

## 使用量

### 无害环境管理

```js
import { validateAuditEvent, publishAuditEvent } from '@defra/fcp-audit-publisher'
```

### 常见JS

```js
const { validateAuditEvent, publishAuditEvent } = require('@defra/fcp-audit-publisher')
```

* * *

## `validateAuditEvent(event)`

对照 FCP 审计事件计划验证 JSON 对象.

```js
const result = validateAuditEvent({
  correlationid: 'abc-123',
  datetime: '2025-12-01T12:51:41.381Z',
  environment: 'prod',
  version: '1.0.0',
  application: 'FCP001',
  component: 'my-service',
  ip: '192.168.1.100',
  audit: {
    entities: [{ entity: 'application', action: 'created', entityid: 'APP-001' }]
  },
  security: null
})
```

### 返回值

关于成功:

```js
{ valid: true, value: { /* normalised event */ } }
```

失败时 :

```js
{
  valid: false,
  errors: [
    '"datetime" is required',
    '"application" is required'
  ]
}
```

* * *

## `publishAuditEvent(event, config)`

应用默认,验证事件,再将其发布到AWS SNS话题.

呼叫者负责建造和重用 `SNSClient`。 。 。 .

```js
import { SNSClient } from '@aws-sdk/client-sns'
import { publishAuditEvent } from '@defra/fcp-audit-publisher'

const snsClient = new SNSClient({ region: 'eu-west-2' })

const result = await publishAuditEvent(
  {
    audit: {
      entities: [{ entity: 'application', action: 'created', entityid: 'APP-001' }]
    },
    security: null
  },
  {
    snsClient,
    sns: { topicArn: 'arn:aws:sns:eu-west-2:123456789012:your-sns' },
    application: 'FCP001',
    component: 'my-service',
    environment: 'prod',
    ip: '192.168.1.100',
    generateCorrelationId: true
  }
)

console.log(result.messageId)
```

丢出一个 `Error` 如果配置无效,或默认后事件无效.

### 配置引用

| 选项 | 类型 | 需求 | 说明 |
| --- | --- | --- | --- |
| `snsClient` | `SNSClient` | 对 | 预构 AWS SDK `SNSClient` 举个例子 打电话的人有自己的生命周期 |
| `sns.topicArn` | 字符串 | 对 | SNS主题的 ARN 发布到 |
| `version` | 字符串 | 没有 | 默认事件计划版本 。 被事件本身所压倒 `version` 字段 |
| `application` | 字符串 | 没有 | 默认应用程序名称 。 被事件本身所压倒 `application` 字段 |
| `component` | 字符串 | 没有 | 默认组件名称 。 被事件本身所压倒 `component` 字段 |
| `environment` | 字符串 | 没有 | 默认环境. 被事件本身所压倒 `environment` 字段 |
| `ip` | 字符串 | 没有 | 默认IP地址 。 被事件本身所压倒 `ip` 字段 |
| `generateCorrelationId` | 布尔 | 没有 | 何时 `true`,生成 UUID v4 为 `correlationid` 如果事件没有 |

### 默认优先

对于可以默认的字段,从最低到最高的顺序是:

**库默认 ~ 配置值 ~ 事件值**

| 外地 | 库默认 | 配置覆盖 | 页:1 |
| --- | --- | --- | --- |
| `version` | `'1.0.0'` | `config.version` |  |
| `datetime` | `new Date().toISOString()` | —— 说 | 仅在缺席时才适用 |
| `correlationid` | —— 说 | `generateCorrelationId: true` 生成一个 UUID | 仅在缺席时才适用 |
| `application` | —— 说 | `config.application` |  |
| `component` | —— 说 | `config.component` |  |
| `environment` | —— 说 | `config.environment` |  |
| `ip` | —— 说 | `config.ip` | 只能用于报告自己IP地址的服务,ie Cron工作或背景服务. 处理用户或其他服务的请求时不会. |

* * *

## `eventSchema`

内部使用的原乔伊计划 `validateAuditEvent`导出于 `fcp-audit` 仅服务.

```js
import { eventSchema } from '@defra/fcp-audit-publisher'
```

其他消费者不应直接进口或依赖这种产品——使用 `validateAuditEvent`编号 :`publishAuditEvent` 换句话说.

* * *

## 事件计划

所有事件必须满足以下计划(通过Joi认证): :

| 外地 | 类型 | 需求 | 制约因素 |
| --- | --- | --- | --- |
| `correlationid` | 字符串 | 对 | 最大 50 个字符 |
| `datetime` | ISO 日期字符串 | 对 |  |
| `environment` | 字符串 | 对 | 小写, 最大 20 个字符 |
| `version` | 字符串 | 对 | 最大 10 个字符 |
| `application` | 字符串 | 对 | 最大 30 个字符 |
| `component` | 字符串 | 对 | 最大 30 个字符 |
| `ip` | 字符串 | 对 | 最大 20 个字符 |
| `user` | 字符串 | 没有 | 最大 50 个字符 |
| `sessionid` | 字符串 | 没有 | 最大 50 个字符 |
| `audit` | 对象或无效 | 无\* | 见下文审计计划 |
| `security` | 对象或无效 | 无\* | 见下文安全计划 |

\* 至少其中一个 `audit` 或者说 `security` 必须是在场的,而不是无名的.

### `audit` 对象

| 外地 | 类型 | 需求 | 制约因素 |
| --- | --- | --- | --- |
| `entities` | 数组 | 对 | 分钟 1项 |
| `entities[].entity` | 字符串 | 对 | 小写,最大120个字符 |
| `entities[].action` | 字符串 | 对 | 小写,最大120个字符 |
| `entities[].entityid` | 字符串 | 没有 | 最大 120 个字符 |
| `accounts` | 对象 | 没有 | 键 : `sbi`, (中文(简体) ), `frn`, (中文(简体) ), `vendor`, (中文(简体) ), `trader`, (中文(简体) ), `organisationId`, (中文(简体) ), `crn`, (中文(简体) ), `personId` |
| `status` | 字符串 | 没有 | 最大 120 个字符 |
| `details` | 对象 | 没有 | 自由窗体 |

### `security` 对象

| 外地 | 类型 | 需求 | 制约因素 |
| --- | --- | --- | --- |
| `pmccode` | 字符串 | 对 | 最大 4 个字符( 断开连字符) |
| `priority` | 整数 | 没有 | 默认为 `0` |
| `details.transactioncode` | 字符串 | 没有 | 最大 4 个字符 |
| `details.message` | 字符串 | 没有 | 最大 120 个字符 |
| `details.additionalinfo` | 字符串 | 没有 | 最大 120 个字符 |

* * *

## 许可证

本资料系根据下列公开政府规定公布: [http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3 互联网档案馆的存檔,存档日期2013-12-21](http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3)

## 常见问题

### @defra/fcp-audit-publisher 是什么？

一个图书馆,用于验证和/或向财务和方案预算审计处公布财务和方案预算审计活动\.

### 如何安装 @defra/fcp-audit-publisher？

在项目目录运行 npm install @defra/fcp-audit-publisher，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@aws-sdk/client-sns（\>=3）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @defra/fcp-audit-publisher 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/defra\_\_fcp-audit-publisher 是否存在。

### @defra/fcp-audit-publisher 支持 ESM 还是 CommonJS？

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

### @defra/fcp-audit-publisher 可以商用吗？

@defra/fcp-audit-publisher 使用 OGL-UK-3\.0 许可。声明的许可为 OGL-UK-3\.0，请阅读许可原文确认使用条件。以上为概括，不构成法律意见，请以许可原文为准。

### @defra/fcp-audit-publisher 的下载量有多少？

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

### @defra/fcp-audit-publisher 还在维护吗？

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

