# @ekwo-ai/xbrl-cbso 中文文档

规范地址：https://npmcn.com/package/%40ekwo-ai/xbrl-cbso/

版本：0\.25\.2
npm 元数据更新时间：2026-11-13T14:10:19.148Z
中文译文更新时间：2026-11-14T02:50:05.965Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40ekwo-ai/xbrl-cbso
原文对照：https://npmcn.com/package/%40ekwo-ai/xbrl-cbso/?lang=original
项目主页：https://github.com/Ekwo-ai/ekwo-os/tree/main/packages/formats/xbrl-cbso#readme
源码仓库：https://github.com/Ekwo-ai/ekwo-os

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

- 包体积（解压后）：391 kB，56 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：0 个
- 首次发布：2026-09-18T16:07:53.166Z
- 最新版本发布：2026-11-13T14:10:18.690Z
- 近 30 天下载量：2474（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：31（近 12 个月 31 个）

## 中文简介

为比利时国家银行生成XBRL年度账户(CBSO分类法,缩写模型)——纯TypeScript,零依赖.

## 安装

```sh
npm install @ekwo-ai/xbrl-cbso
```

也可以使用：`pnpm add @ekwo-ai/xbrl-cbso`、`yarn add @ekwo-ai/xbrl-cbso`、`bun add @ekwo-ai/xbrl-cbso`

## README

# @ekwo-ai/xbrl-cbso (英语)

生成比利时国家银行比利时年度账户的XBRL文件 (中央资产负债表办公室, _加拿大统计局_ 编号 : _双语中心_ 编号 : _巴兰斯中央_, (中文(简体) ), 分类学 **26.0 (韩语)**资本公司简略模式**m01-f (英语)**) (中文(简体) ).

-   **纯 TypeScript, 零运行时间依赖性 .** 在Node 18、Deno、Bun和浏览器工作.
-   **从官方分类学中产生.** 该模型的297个报告代码(430个单元格, 其计量和维度成员直接删除 由 NBB 分类软件包 [`scripts/build-taxonomy.mjs`](https://npmcn.com/package/%40ekwo-ai/xbrl-cbso/scripts/build-taxonomy.mjs) ——不是用手抄写的. 来源 和方法: [`docs/sources.md`](https://npmcn.com/package/%40ekwo-ai/xbrl-cbso/docs/sources.md)。 。 。 .
-   **两道入地.** 报告守则`20/58`, (中文(简体) ), `9904`),或事实键入簿记系统 已经保存到每个语句行的旁边( e)`met:am1|bas:m9|rst:m2`) (中文(简体) ).
-   **部分表格欢迎.** 只有您提供的代码被发布; 存档填充其余部分 . `unknownCodes()` 告诉你模型会跳过哪个密码.
-   **内设检查.** 企业编号检查数字、ISO日期、比利时邮政编码和 表格的算术特征(`20/58 = 10/49`, (中文(简体) ), `9904 = 9903 + 780 − 680 − 67/77`(中文(简体) ).
-   **可选的PCMN层.** 将试算表(比利时最低会计科目表)改为 报告代码.

## 安装

```sh
npm install @ekwo-ai/xbrl-cbso
```

## 使用量

```ts
import { generateCbsoXbrl, checkBnbEquations, LegalForm, EnterpriseCourt } from '@ekwo-ai/xbrl-cbso';

const input = {
  entityNumber: '0123.456.749',
  denomination: 'Exemple Conseil',
  legalForm: LegalForm.SA_NV,          // 'lgf:m014'
  court: EnterpriseCourt.BRUSSELS_FR,  // 'cct:m31'
  address: { street: "Rue de l'Exemple", number: '1', postalCode: '1000', city: 'Bruxelles' },
  periodStart: '2025-01-01',
  periodEnd: '2025-12-31',
  prevPeriodStart: '2024-01-01',
  prevPeriodEnd: '2024-12-31',
  gaDate: '2026-05-15',   // general meeting approving the accounts
  deedDate: '2019-03-04', // deed of incorporation / latest amendment of the articles
  values: {
    '20/58': { n: 201500, p: 171000 }, // total assets, current and previous year
    '10/49': { n: 201500, p: 171000 },
    '9904':  { n: 57500,  p: 43600 },
    '9087':  { n: 3.5,    p: 3 },      // full-time equivalents
    // … any other code of the abridged model
  },
  administrators: [
    { kind: 'person', lastName: 'Dupont', firstName: 'Marie',
      street: 'Avenue des Tilleuls', number: '12', postalCode: '1180', city: 'Uccle' },
    { kind: 'company', name: 'Gestion Exemple', enterpriseNumber: '0400.000.086',
      street: 'Kerkstraat', number: '7', postalCode: '9000', city: 'Gent',
      representative: { lastName: 'Janssens', firstName: 'Pieter' } },
  ],
};

const violations = checkBnbEquations(input.values); // [] when the form adds up
const xml = generateCbsoXbrl(input);                 // string, UTF-8, ready to upload
```

见 [`examples/basic.ts`](https://npmcn.com/package/%40ekwo-ai/xbrl-cbso/examples/basic.ts) 用于可运行的版本(`npm run example`) (中文(简体) ).

### 从已经带有分类键的语句行

将 CBSO 事实密钥存储在其每行旁边的簿记系统 财务报表根本不需要了解报告代码。 拿着 线条为:

```ts
import { generateCbsoXbrl } from '@ekwo-ai/xbrl-cbso';

const xml = generateCbsoXbrl({
  ...identification,
  lines: [
    { xbrl_element: 'met:am1|bas:m2|ntr:m2', amount: 12000, previous_amount: 15000 }, // 22/27
    { xbrl_element: 'met:am1|bas:m5|ntr:m2', amount: 8000,  previous_amount: 10000 }, // 24
    { xbrl_element: 'met:am1|bas:m9|rst:m2', amount: 60000, previous_amount: 47500 }, // 40/41
  ],
});
```

一个关键是重要领域成员遵循的衡量标准 只将一个事实放入一栏(`dim:part`, (中文(简体) ), `dim:prd`)可能会被排除在外。 这个 解决了增加自己成员最少的一行,所以 `met:am1|bas:m2` 是标题 _行为责任_ (21/28),而不是一个 下有三行经. 一样适合两行的密钥被拒绝 无法猜测 :

```ts
resolveFactKey('met:am1|bas:m25', CBSO_26_M01F);
// CbsoFactKeyError: signature shared by 10/49, 20/58 — add the member that
// separates them (usually a "part:" member)
```

`met:am1|bas:m25|part:m1` 是资产总额, `|part:m3` 共计 负债. `resolveFactKey`, (中文(简体) ), `valuesFromFactKeys` 财务报告和审定财务报表 `factKeyOf` 为: 导出给想要自己进行绘图的呼叫者; `mergeValues` 显示备案文件将包含什么 `values` 财务报告和审定财务报表 `lines` 给予,和 拒绝两人不同意的代码.

### 试算表

```ts
import { valuesFromTrialBalance } from '@ekwo-ai/xbrl-cbso/pcmn';

// balance = debit − credit, for the current and the previous year
const values = valuesFromTrialBalance([
  { account: '400000', balance: 52000, priorBalance: 41000 },
  { account: '440000', balance: -31000, priorBalance: -28000 },
  { account: '700000', balance: -320000, priorBalance: -270000 },
  // …
]);
```

`valuesFromTrialBalance` 计算四个款(资产、权益和负债、收入) 以标准格式的签字协议的形式返回 生成器所期望的形状。 下级职能`computeBalanceSheet`, (中文(简体) ), `computeIncomeStatement`, (中文(简体) ), `computeAppropriation`,则 `ASSETS` 编号 : `LIABILITIES` 编号 : `INCOME_STATEMENT` 编号 : `APPROPRIATION` 用于自定义管道的出口.

不取自试算表的附件数字(固定资产变动) `8029`– 说吧 –`8395`, (中文(简体) ), 工作人员 `9087`,.)是平面代码: 添加到 `values` 你自己来.

## API 密码

| 导出 | 说明 |
| --- | --- |
| `generateCbsoXbrl(input, options?)` | 一个电话: `CbsoInput` XBRL弦乐 验证输入, 除非 `options.validate === false`。 。 。 . `options.lang` 套装 `xml:lang` (默认) `fr`) (中文(简体) ). |
| `checkBnbEquations(values, options?)` | 返回不添加的身份( E)`code`, (中文(简体) ), `column`, (中文(简体) ), `expected`, (中文(简体) ), `actual`, (中文(简体) ), `rule`) (中文(简体) ). 缺少的操作数为零,如在Filing中. |
| `unknownCodes(values)` | 简略模型不带编码(它们将被悄悄地跳过),排序. |
| `unfiledValues(input)` | 将被丢弃的数字:未知代码,或者模型没有其列的代码. |
| `resolveFactKey(key, template)` | `"met:am1|bas:m9|rst:m2"` → `"40/41"`投出一个 `CbsoFactKeyError` 当密钥符合多行时,命名候选人. |
| `valuesFromFactKeys(lines, template)`, (中文(简体) ), `factKeyOf(fact)`, (中文(简体) ), `parseFactKey(key)` | 这条路的碎片, 供呼叫者自己绘制地图. |
| `mergeValues(input, template?)` | `values` 加上已解决 `lines`; 当两人对一个代码有分歧时投出. |
| `validateInput(input)` | 丢出一个 `CbsoInputError` (单位:千美元)`path`, (中文(简体) ), `message`第一个问题. |
| `normalizeEnterpriseNumber`, (中文(简体) ), `isValidEnterpriseNumber` | `"BE 0123.456.749"` → `"0123456749"`; mod-97检查数字. |
| `LegalForm`, (中文(简体) ), `EnterpriseCourt` | 分类学成员根据接受的申报进行核查。 任何其他 `lgf:*` 编号 : `cct:*` 成员可以作为字符串被传递. |
| `XbrlCbso`, (中文(简体) ), `CBSO_26_M01F`, (中文(简体) ), `FRAMEWORK`, (中文(简体) ), `NAMESPACES` | Class API和捆绑模板,用于自定义或更新的分类. |

类型 : `CbsoInput`, (中文(简体) ), `FactKeyLine`, (中文(简体) ), `PostalAddress`, (中文(简体) ), `Administrator`, (中文(简体) ), `YearValues`, (中文(简体) ), `Declarations`, (中文(简体) ), `TemplateFact`, (中文(简体) ), `CbsoTemplate`。 。 。 .

`CbsoInput.values` 是留下的路径,它让呼叫者掌握自己的地图 从账户到模型的报告代码. `CbsoInput.lines` 已存在 因此,绘图可以生活在一个地方——生成声明的系统—— 而不是在这里复制。 两者都保留支持,可以合并.

## 如何运作

CBSO分类法载有报告代码(_卢布_ 编号 : _卢布里克语name_)在 **维度** 会 议 日 程 和 议 程 上下文(`dim:bas → bas:mXX`, (中文(简体) ), `dim:part`, (中文(简体) ), `dim:prd` ),从未出现过 元素名称: 数量全部 `met:am1` 编号 : `met:am2`数字 `met:int*` 编号 : `met:dec1`模板 列表中,对于缩略模型的430个单元格,每个单元格都列出准确的签名。 发电机:

1.  保留具有价值的模板事实(识别字段、报告代码);
2.  增加列举的识别事实(法律形式、法院、邮政编码、国家)和 董事会成员(类型维度按名称键);
3.  构建被调试的上下文, 只声明实际使用的名称空间和格式 数字按元素方面排列(数量为小数二分数,FTE为一分数,整数为一分数).

前一个财政年度是: **没有** a 第二期:两栏按背景报告 其期限为本年度的截止日期,以及 `dim:prd` (单位:千美元)`prd:m1` 编号 : `prd:m2`)说 该栏。 NBB本身的后缀有 `P` (a) 与《京都议定书》`8059P`, (中文(简体) ), `1003P`措施 和他们一年前的基码一样,所以他们是它的 `p` 数字. `14P` 没有在 该案例——"上一年结转的利润"是其自身的一行,并保留其 自己的代码.

要重建表格 与一个更新的分类软件包:

```sh
node scripts/build-taxonomy.mjs --package ~/nbb-cbso-26.0.15            # rewrite
node scripts/build-taxonomy.mjs --package ~/nbb-cbso-26.0.15 --check    # verify only
```

## 范围和限制

-   型号 **m01-f (英语)** 只有(简略的,有资本的公司). 完整和微型模型,以及 非盈利分类法尚未涵盖——但构建脚本需要 `--model` 财务报告和审定财务报表 `--framework`,所以另一个的桌子是一个命令离开.
-   这个 **识别** 事实(第1节)没有产生:它们没有报告代码,以及 被保存在接受的NBB档案中。 其他一切出自分类学.
-   只有经接受的档案中核实的法律形式和法院识别资料才被命名为常数; 在分类学上必须注意其他成员 `lgf` 编号 : `cct` 区域.
-   生成器不会对 XSD 进行验证 。 国家统计局 _归档_ 申请仍为 主管部门:将文件导入草稿,并在提交前核对其鉴定报告.

## 发展

```sh
npm install
npm run typecheck
npm test
npm run build
```

## 许可证

[麻省理工学院](https://npmcn.com/package/%40ekwo-ai/xbrl-cbso/LICENSE) 埃克沃·艾尔

## 常见问题

### @ekwo-ai/xbrl-cbso 是什么？

为比利时国家银行生成XBRL年度账户\(CBSO分类法,缩写模型\)——纯TypeScript,零依赖\.

### 如何安装 @ekwo-ai/xbrl-cbso？

在项目目录运行 npm install @ekwo-ai/xbrl-cbso，或使用 pnpm add / yarn add / bun add。

### @ekwo-ai/xbrl-cbso 支持 TypeScript 吗？

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

### @ekwo-ai/xbrl-cbso 支持 ESM 还是 CommonJS？

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

### @ekwo-ai/xbrl-cbso 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=18。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @ekwo-ai/xbrl-cbso 可以商用吗？

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

### @ekwo-ai/xbrl-cbso 的下载量有多少？

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

### @ekwo-ai/xbrl-cbso 还在维护吗？

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

