maestro/scripts/build-bench-fixtures.ts
2026-06-03 05:08:00 +00:00

44 lines
1.4 KiB
TypeScript

#!/usr/bin/env -S npx ts-node
/**
* Generate binary fixtures for benchmark tasks.
* Usage: npx ts-node scripts/build-bench-fixtures.ts
*
* Generates bench/fixtures/sales.xlsx with deterministic data so that
* "Q1 売上トップ3" is well-defined: ProductC > ProductA > ProductE.
*/
import ExcelJS from 'exceljs';
import { join } from 'path';
async function main(): Promise<void> {
const wb = new ExcelJS.Workbook();
wb.creator = 'bench-fixture-builder';
wb.created = new Date('2026-04-01T00:00:00Z');
const sheet = wb.addWorksheet('Sheet1');
sheet.columns = [
{ header: '商品名', key: 'name', width: 12 },
{ header: 'カテゴリ', key: 'category', width: 10 },
{ header: 'Q1売上(千円)', key: 'sales', width: 14 },
];
const rows = [
{ name: 'ProductA', category: '食品', sales: 12000 },
{ name: 'ProductB', category: '雑貨', sales: 8500 },
{ name: 'ProductC', category: '食品', sales: 15000 },
{ name: 'ProductD', category: '雑貨', sales: 9000 },
{ name: 'ProductE', category: '食品', sales: 11000 },
{ name: 'ProductF', category: '雑貨', sales: 7000 },
];
for (const row of rows) sheet.addRow(row);
const out = join(process.cwd(), 'bench', 'fixtures', 'sales.xlsx');
await wb.xlsx.writeFile(out);
// eslint-disable-next-line no-console
console.log(`Wrote ${out}`);
}
main().catch((err) => {
// eslint-disable-next-line no-console
console.error(err);
process.exit(1);
});