@ekwo-ai/xbrl-cbso

中文文档
0.25.2发布于 2026/11/13MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 2474

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

中文使用文档
文档目录9 节
  1. 安装
  2. 使用量
  3. 从已经带有分类键的语句行
  4. 试算表
  5. API 密码
  6. 如何运作
  7. 范围和限制
  8. 发展
  9. 许可证

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

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

  • 纯 TypeScript, 零运行时间依赖性 . 在Node 18、Deno、Bun和浏览器工作.
  • 从官方分类学中产生. 该模型的297个报告代码(430个单元格, 其计量和维度成员直接删除 由 NBB 分类软件包 scripts/build-taxonomy.mjs ——不是用手抄写的. 来源 和方法: 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层. 将试算表(比利时最低会计科目表)改为 报告代码.

安装

npm install @ekwo-ai/xbrl-cbso

使用量

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 用于可运行的版本(npm run example) (中文(简体) ).

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

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

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),而不是一个 下有三行经. 一样适合两行的密钥被拒绝 无法猜测 :

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 给予,和 拒绝两人不同意的代码.

试算表

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, (中文(简体) ), NAMESPACESClass 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 没有在 该案例——"上一年结转的利润"是其自身的一行,并保留其 自己的代码.

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

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 进行验证 。 国家统计局 归档 申请仍为 主管部门:将文件导入草稿,并在提交前核对其鉴定报告.

发展

npm install
npm run typecheck
npm test
npm run build

许可证

麻省理工学院 埃克沃·艾尔

版本与发布记录

@ekwo-ai/xbrl-cbso 共发布 31 个版本,首次发布于 2026/09/19;过去 12 个月发布了 31 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.25.2latest2026/11/13今天
0.25.02026/11/076 天前
0.24.12026/11/059 天前
0.24.02026/10/2816 天前
0.23.02026/10/2816 天前
0.22.02026/10/2817 天前

关于 @ekwo-ai/xbrl-cbso 的常见问题

@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 和提交记录判断。