@bsuite/charge-calc

中文文档
0.15.0发布于 2026/11/09UNLICENSEDTypeScriptES Module近 30 天下载 1757

供澳大利亚GTO和劳务经营者使用的电荷率计算和BOOT评估引擎. 包括FWC奖的参照物、故障式探测器、F17出口和GTO多位置变体(第193/193A节,《2009年公平工作法》).

中文使用文档
文档目录15 节
  1. 特征
  2. 安装
  3. 费率计算
  4. 命名的付费项目组ID
  5. BOOT 评估引擎
  6. 建筑
  7. 核心参照系统
  8. 失败模式检测器
  9. 建议者
  10. FWC 表格F17出口
  11. GTO 多位变量
  12. 测试覆盖率
  13. 软件包出口
  14. 构建
  15. 捐款

@ bsuite/ 充电- calc

用于澳大利亚GTO和劳动力雇用经营者的共享电荷率计算和BOOT评估引擎.

用于 风险管理7 (收费率建模)和 第80.3号公路 (公谊协委会授予工资比较).


特征

能力入境点主要出口
费率计算@bsuite/charge-calccalculateChargeRate, (中文(简体) ), buildCalcConfig
账单回收@bsuite/charge-calccalculateBilling, (中文(简体) ), calculateRecovery
FWC 取景奖@bsuite/charge-calc/awardsAwardRegistry, (中文(简体) ), fetchAward, (中文(简体) ), AwardScheduleZ
BOOT 评估引擎@bsuite/charge-calc/bootcompareBOOT, (中文(简体) ), compareGTOBOOT, (中文(简体) ), detectFailurePatterns, (中文(简体) ), generateRecommendations, (中文(简体) ), generateF17Data
共享类型@bsuite/charge-calc/types所有 Zod 策略和类型脚本

安装

pnpm add @bsuite/charge-calc

要求数 zod ^4.0.0 作为同伴的依赖.


费率计算

import { calculateChargeRate, buildCalcConfig } from '@bsuite/charge-calc';

const config = buildCalcConfig({
  baseHourlyRate: 28.50,
  casualLoading: 0.25,
  superRate: 0.12,
  workersCompRate: 0.021,
  publicLiabilityRate: 0.005,
  margin: 0.18,
});

const result = calculateChargeRate(config);
// result.chargeRate — all-up hourly charge rate
// result.breakdown — itemised cost components

命名的付费项目组ID

calculate() 接受CRM7自有软件 pay_item_groups.id 价值观使消费者能够 键速率,由命名的付费项目组 UUID 而不是类似 enum 字符串。 遗产 键在迁移时仍然可用.

import { calculate, DEFAULT_CONFIG } from '@bsuite/charge-calc';

const ordinaryPayItemGroupId = crm7PayItemGroups.ordinary.id;
const overtimePayItemGroupId = crm7PayItemGroups.overtime15.id;

const result = calculate({
  ...DEFAULT_CONFIG,
  ordinaryPayItemGroup: {
    id: ordinaryPayItemGroupId,
    name: 'Ordinary Time',
    code: 'ORD',
    category: 'ordinary_time',
    sortPriority: 10,
  },
  penalties: DEFAULT_CONFIG.penalties.map((penalty) =>
    penalty.id === 'ot15'
      ? {
          ...penalty,
          payItemGroup: {
            id: overtimePayItemGroupId,
            name: 'Overtime 1.5x',
            code: 'OT1.5',
            category: 'overtime_1_5',
            sortPriority: 20,
          },
        }
      : penalty,
  ),
});

result.rates[ordinaryPayItemGroupId]; // canonical named-group lookup
result.rates['ord']; // legacy compatibility alias
result.ratesByPayItemGroupId[overtimePayItemGroupId];

BOOT 评估引擎

BOOT( 更好的全面测试) 引擎执行在 2009年《公平工作法》第193和193A条 由公平工作委员会批准企业协议.

法律免责声明:引擎仅是一个决策支持工具. 它不构成法律咨询。 每一个结果都带着 humanReviewRequired: true 并且必须在依赖之前由合格的劳资关系专业人员审查。 见 F17_DISCLAIMER 全文.

建筑

src/boot/
├── types.ts           — Zod schemas: EATerms, AwardSchedule, RosterScenario, BOOTResult, GTOBOOTResult
├── compare.ts         — compareBOOT() — core BOOT comparator (ss.193A algorithm)
├── annual-value.ts    — computeAnnualEmployeeValue() — monetary value per scenario
├── non-monetary.ts    — compareNonMonetary() — span, rostering, leave entitlements
├── failure-detector.ts — detectFailurePatterns() — 8 known EA failure pattern codes
├── recommender.ts     — generateRecommendations() — prioritised remediation steps
├── f17-export.ts      — generateF17Data() — structured JSON for FWC Form F17
└── gto.ts             — compareGTOBOOT() — multi-placement GTO variant (s.193)

核心参照系统

import { compareBOOT } from '@bsuite/charge-calc/boot';
import type { AwardSchedule, EATerms, RosterScenario } from '@bsuite/charge-calc/boot';

const result = compareBOOT(
  [awardSchedule],    // AwardSchedule[] — modern award classification data
  eaTerms,            // EATerms — enterprise agreement to assess
  [typicalScenario, worstCaseScenario], // RosterScenario[]
  { marginalThreshold: 0.05 },          // optional MarginalConfig
);

// result.overallVerdict — 'pass' | 'fail' | 'marginal' | 'indeterminate'
// result.classResults   — per-classification breakdown with scenario-level detail
// result.warnings       — critical / warning / info diagnostics
// result.humanReviewRequired — always true (legally mandated)

判决规则:

  • pass ——所有情况下的EA年值 裁决额,超过边际阈值(违约5%)
  • marginal - EA通过但不超过5%的门槛值——建议调节条款
  • fail ——任何情况下EA年度价值 < 裁决
  • indeterminate ——缺少授标分类数据

失败模式检测器

import { detectFailurePatterns } from '@bsuite/charge-calc/boot';

const patterns = detectFailurePatterns(bootResult, awards, ea, scenarios);
// patterns[].code — one of 8 known failure codes:
//   'higher_base_no_penalties' | 'loaded_rate_insufficient' | 'casual_overlooked'
//   'allowances_absorbed_unproven' | 'award_entitlements_omitted' | 'stale_modelling'
//   'vague_all_inclusive' | 'non_monetary_offset_claimed'

建议者

import { generateRecommendations } from '@bsuite/charge-calc/boot';

const recs = generateRecommendations(bootResult, patterns);
// Sorted by priority: critical → high → medium → low
// recs[].action — human-readable action description
// recs[].estimatedCost — dollar amount where calculable

FWC 表格F17出口

生成结构化的JSON数据,与FWC的F17比较电子表格格式相匹配,准备由演示文稿层进行PDF/XLSX渲染.

import { generateF17Data } from '@bsuite/charge-calc/boot';

const f17 = generateF17Data(bootResult, ea, 'IR Consultant Name');
// f17.header              — agreement metadata + mandatory disclaimer
// f17.classifications     — per-classification sheets with scenario matrix
// f17.scenarioMatrix      — rows × columns overview grid
// f17.summary             — pass/fail/marginal counts + totalDelta
// f17.qualitativeAssessment — non-monetary terms and notes

GTO 多位变量

由多个雇主主办的学徒集体培训组织。 第193条, 每个职位都必须通过 脚.

import { compareGTOBOOT } from '@bsuite/charge-calc/boot';

const gtoResult = compareGTOBOOT(
  {
    apprenticeId: 'abn-12345',
    currentYear: 2,
    placements: [
      {
        hostEmployerId: 'host-a',
        hostEmployerName: 'Acme Manufacturing',
        applicableAwards: [awardSchedule],
        scenarios: [typicalScenario],
        timeAllocation: 0.6,   // 60% of year at this host
      },
      {
        hostEmployerId: 'host-b',
        hostEmployerName: 'Beta Logistics',
        applicableAwards: [awardSchedule],
        scenarios: [typicalScenario],
        timeAllocation: 0.4,
      },
    ],
  },
  ea,
);

// gtoResult.overallVerdict       — fails if ANY placement fails
// gtoResult.weakestPlacement     — placement with worst delta
// gtoResult.weightedAggregateDelta — Σ(delta × timeAllocation)

测试覆盖率

在节点24上进行639个测试,TypeScript 6.0,Vite 8.

套间文件
核心计算src/__tests__/calculate.test.ts
计费src/__tests__/billing.test.ts
公用事业src/__tests__/utils.test.ts
类型src/__tests__/types.test.ts
一体化(第一阶段)src/__tests__/integration.test.ts
一体化(第二阶段)src/__tests__/integration-phase2.test.ts
黄金案件src/__tests__/golden.test.ts
变化因素src/__tests__/invariants.test.ts
BOOT——核心项目src/__tests__/boot/compare.test.ts
BOOT——年度价值src/__tests__/boot/annual-value.test.ts
BOOT-故障探测器src/__tests__/boot/failure-detector.test.ts
BOOT——建议者src/__tests__/boot/recommender.test.ts
BOOT — F17 导出src/__tests__/boot/f17-export.test.ts
BOTO — GTO (英语)src/__tests__/boot/gto.test.ts
BOOT——类型src/__tests__/boot/types.test.ts
BOOT——黄金案件src/__tests__/boot/golden-boot.test.ts
BOOT——变化无常src/__tests__/boot/invariants-boot.test.ts
pnpm test          # run all tests
pnpm test:coverage # generate coverage report

软件包出口

{
  ".":        "dist/index.js",           // charge-rate calc + billing + awards + boot
  "./types":  "dist/types.js",           // shared types only
  "./awards": "dist/awards/index.js",    // FWC award registry
  "./boot":   "dist/boot/index.js"       // BOOT assessment engine
}

构建

pnpm build      # tsc -p tsconfig.build.json → dist/
pnpm typecheck  # type-check only, no emit

捐款

见 捐款额 和根数 克劳德·姆德 项目范围标准.

修改此软件包时: 建出 + 凸起版本 package.json 将软件包释放的 PR 合并到 main 这样 .github/workflows/publish-charge-calc.yml 通过 npm 信任出版商出版(GitHub Actions OIDC, no) NPM_TOKEN• 更新消费者资料 package.json 文件 – 每页重生成锁文件 锁定文件生成 规则在CLAUDE.MD.

版本与发布记录

@bsuite/charge-calc 共发布 20 个版本,首次发布于 2026/03/02;过去 12 个月发布了 20 个版本。

版本发布日期距今
0.15.0latest2026/11/09今天
0.14.02026/08/182 个月前
0.13.02026/08/172 个月前
0.12.02026/08/063 个月前
0.11.02026/08/063 个月前
0.10.02026/08/053 个月前

关于 @bsuite/charge-calc 的常见问题

@bsuite/charge-calc 是什么?

供澳大利亚GTO和劳务经营者使用的电荷率计算和BOOT评估引擎. 包括FWC奖的参照物、故障式探测器、F17出口和GTO多位置变体(第193/193A节,《2009年公平工作法》).

如何安装 @bsuite/charge-calc?

在项目目录运行 npm install @bsuite/charge-calc,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:zod(^4.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@bsuite/charge-calc 支持 TypeScript 吗?

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

@bsuite/charge-calc 支持 ESM 还是 CommonJS?

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

@bsuite/charge-calc 可以商用吗?

@bsuite/charge-calc 使用 UNLICENSED 许可。作者声明为 UNLICENSED,即不授予公开使用许可(与公共领域的 Unlicense 不同)。使用前需获得作者授权。以上为概括,不构成法律意见,请以许可原文为准。

@bsuite/charge-calc 的下载量有多少?

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

@bsuite/charge-calc 还在维护吗?

最新版本 0.15.0 发布于 2026/11/09(今天);至今共发布 20 个版本,其中过去 12 个月发布了 20 个;首次发布于 2026/03/02。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。