Files
wifi-densepose/npm/packages/agentic-synth/examples/business-management/financial-planning.js
ruv d803bfe2b1 Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector
git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
2026-02-28 14:39:40 -05:00

633 lines
26 KiB
JavaScript

"use strict";
/**
* Financial Planning and Analysis Data Generation
* Simulates enterprise financial systems, budgeting, forecasting, and reporting
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateBudgetPlans = generateBudgetPlans;
exports.generateRevenueForecasts = generateRevenueForecasts;
exports.generateExpenseTracking = generateExpenseTracking;
exports.generateCashFlowProjections = generateCashFlowProjections;
exports.generateProfitLossStatements = generateProfitLossStatements;
exports.generateBalanceSheets = generateBalanceSheets;
exports.generateKPIDashboards = generateKPIDashboards;
exports.generateCompleteFinancialDataset = generateCompleteFinancialDataset;
const index_js_1 = require("../../src/index.js");
// Budget Planning Schema
const budgetPlanningSchema = {
budgetId: { type: 'string', required: true },
fiscalYear: { type: 'number', required: true },
fiscalPeriod: { type: 'string', required: true },
organization: { type: 'object', required: true, properties: {
companyCode: { type: 'string' },
businessUnit: { type: 'string' },
department: { type: 'string' },
costCenter: { type: 'string' },
profitCenter: { type: 'string' }
} },
budgetType: { type: 'string', required: true },
currency: { type: 'string', required: true },
version: { type: 'string', required: true },
status: { type: 'string', required: true },
revenue: { type: 'object', required: true, properties: {
productSales: { type: 'number' },
serviceSales: { type: 'number' },
subscriptionRevenue: { type: 'number' },
otherRevenue: { type: 'number' },
totalRevenue: { type: 'number' }
} },
costOfGoodsSold: { type: 'object', required: true, properties: {
materials: { type: 'number' },
labor: { type: 'number' },
overhead: { type: 'number' },
totalCOGS: { type: 'number' }
} },
operatingExpenses: { type: 'object', required: true, properties: {
salaries: { type: 'number' },
benefits: { type: 'number' },
rent: { type: 'number' },
utilities: { type: 'number' },
marketing: { type: 'number' },
travelExpenses: { type: 'number' },
professionalFees: { type: 'number' },
technology: { type: 'number' },
depreciation: { type: 'number' },
other: { type: 'number' },
totalOpEx: { type: 'number' }
} },
capitalExpenditure: { type: 'object', required: false, properties: {
equipment: { type: 'number' },
infrastructure: { type: 'number' },
technology: { type: 'number' },
totalCapEx: { type: 'number' }
} },
calculations: { type: 'object', required: true, properties: {
grossProfit: { type: 'number' },
grossMargin: { type: 'number' },
operatingIncome: { type: 'number' },
operatingMargin: { type: 'number' },
ebitda: { type: 'number' },
netIncome: { type: 'number' },
netMargin: { type: 'number' }
} },
owners: { type: 'object', required: true, properties: {
preparedBy: { type: 'string' },
reviewedBy: { type: 'string' },
approvedBy: { type: 'string' }
} },
createdDate: { type: 'string', required: true },
lastModifiedDate: { type: 'string', required: true }
};
// Revenue Forecasting Schema
const revenueForecastSchema = {
forecastId: { type: 'string', required: true },
forecastDate: { type: 'string', required: true },
forecastPeriod: { type: 'object', required: true, properties: {
startDate: { type: 'string' },
endDate: { type: 'string' },
periodType: { type: 'string' }
} },
businessUnit: { type: 'string', required: true },
region: { type: 'string', required: true },
currency: { type: 'string', required: true },
forecastType: { type: 'string', required: true },
methodology: { type: 'string', required: true },
confidence: { type: 'number', required: true },
revenueStreams: { type: 'array', required: true, items: {
streamId: { type: 'string' },
streamName: { type: 'string' },
category: { type: 'string' },
forecast: { type: 'object', properties: {
conservative: { type: 'number' },
expected: { type: 'number' },
optimistic: { type: 'number' }
} },
assumptions: { type: 'array' },
drivers: { type: 'array' },
risks: { type: 'array' }
} },
totals: { type: 'object', required: true, properties: {
conservativeTotal: { type: 'number' },
expectedTotal: { type: 'number' },
optimisticTotal: { type: 'number' }
} },
comparisonMetrics: { type: 'object', required: true, properties: {
priorYearActual: { type: 'number' },
yoyGrowth: { type: 'number' },
budgetVariance: { type: 'number' },
lastForecastVariance: { type: 'number' }
} },
modelInputs: { type: 'object', required: false, properties: {
marketGrowthRate: { type: 'number' },
pricingAssumptions: { type: 'number' },
volumeAssumptions: { type: 'number' },
marketShareTarget: { type: 'number' },
newCustomerAcquisition: { type: 'number' },
churnRate: { type: 'number' }
} },
preparedBy: { type: 'string', required: true },
approvedBy: { type: 'string', required: false },
lastUpdated: { type: 'string', required: true }
};
// Expense Tracking Schema
const expenseTrackingSchema = {
expenseId: { type: 'string', required: true },
transactionDate: { type: 'string', required: true },
postingDate: { type: 'string', required: true },
fiscalPeriod: { type: 'string', required: true },
organization: { type: 'object', required: true, properties: {
companyCode: { type: 'string' },
businessUnit: { type: 'string' },
department: { type: 'string' },
costCenter: { type: 'string' }
} },
expenseCategory: { type: 'string', required: true },
expenseType: { type: 'string', required: true },
glAccount: { type: 'string', required: true },
accountDescription: { type: 'string', required: true },
amount: { type: 'number', required: true },
currency: { type: 'string', required: true },
vendor: { type: 'object', required: false, properties: {
vendorId: { type: 'string' },
vendorName: { type: 'string' }
} },
budgetInfo: { type: 'object', required: true, properties: {
budgetedAmount: { type: 'number' },
spentToDate: { type: 'number' },
remainingBudget: { type: 'number' },
variance: { type: 'number' },
variancePercent: { type: 'number' }
} },
approval: { type: 'object', required: true, properties: {
requestedBy: { type: 'string' },
approvedBy: { type: 'string' },
approvalDate: { type: 'string' },
status: { type: 'string' }
} },
project: { type: 'object', required: false, properties: {
projectId: { type: 'string' },
projectName: { type: 'string' },
workPackage: { type: 'string' }
} },
description: { type: 'string', required: true },
reference: { type: 'string', required: false },
tags: { type: 'array', required: false }
};
// Cash Flow Projection Schema
const cashFlowProjectionSchema = {
projectionId: { type: 'string', required: true },
projectionDate: { type: 'string', required: true },
period: { type: 'object', required: true, properties: {
startDate: { type: 'string' },
endDate: { type: 'string' },
frequency: { type: 'string' }
} },
currency: { type: 'string', required: true },
openingBalance: { type: 'number', required: true },
operatingActivities: { type: 'object', required: true, properties: {
cashFromCustomers: { type: 'number' },
cashToSuppliers: { type: 'number' },
cashToEmployees: { type: 'number' },
operatingExpenses: { type: 'number' },
interestPaid: { type: 'number' },
taxesPaid: { type: 'number' },
netOperatingCashFlow: { type: 'number' }
} },
investingActivities: { type: 'object', required: true, properties: {
capitalExpenditures: { type: 'number' },
assetPurchases: { type: 'number' },
assetSales: { type: 'number' },
investments: { type: 'number' },
netInvestingCashFlow: { type: 'number' }
} },
financingActivities: { type: 'object', required: true, properties: {
debtProceeds: { type: 'number' },
debtRepayments: { type: 'number' },
equityIssuance: { type: 'number' },
dividendsPaid: { type: 'number' },
netFinancingCashFlow: { type: 'number' }
} },
netCashFlow: { type: 'number', required: true },
closingBalance: { type: 'number', required: true },
metrics: { type: 'object', required: true, properties: {
cashConversionCycle: { type: 'number' },
daysReceivablesOutstanding: { type: 'number' },
daysPayablesOutstanding: { type: 'number' },
daysInventoryOutstanding: { type: 'number' },
operatingCashFlowRatio: { type: 'number' }
} },
scenarios: { type: 'object', required: false, properties: {
baseline: { type: 'number' },
bestCase: { type: 'number' },
worstCase: { type: 'number' }
} },
assumptions: { type: 'array', required: false },
risks: { type: 'array', required: false }
};
// Profit & Loss Statement Schema
const profitLossSchema = {
statementId: { type: 'string', required: true },
statementDate: { type: 'string', required: true },
period: { type: 'object', required: true, properties: {
startDate: { type: 'string' },
endDate: { type: 'string' },
fiscalYear: { type: 'number' },
fiscalQuarter: { type: 'string' },
fiscalMonth: { type: 'string' }
} },
organization: { type: 'object', required: true, properties: {
companyCode: { type: 'string' },
companyName: { type: 'string' },
businessUnit: { type: 'string' },
segment: { type: 'string' }
} },
currency: { type: 'string', required: true },
revenue: { type: 'object', required: true, properties: {
productRevenue: { type: 'number' },
serviceRevenue: { type: 'number' },
otherRevenue: { type: 'number' },
totalRevenue: { type: 'number' }
} },
costOfRevenue: { type: 'object', required: true, properties: {
directMaterials: { type: 'number' },
directLabor: { type: 'number' },
manufacturingOverhead: { type: 'number' },
totalCostOfRevenue: { type: 'number' }
} },
grossProfit: { type: 'number', required: true },
grossMargin: { type: 'number', required: true },
operatingExpenses: { type: 'object', required: true, properties: {
salesAndMarketing: { type: 'number' },
researchAndDevelopment: { type: 'number' },
generalAndAdministrative: { type: 'number' },
totalOperatingExpenses: { type: 'number' }
} },
operatingIncome: { type: 'number', required: true },
operatingMargin: { type: 'number', required: true },
nonOperating: { type: 'object', required: false, properties: {
interestIncome: { type: 'number' },
interestExpense: { type: 'number' },
otherIncome: { type: 'number' },
otherExpenses: { type: 'number' },
netNonOperating: { type: 'number' }
} },
incomeBeforeTax: { type: 'number', required: true },
incomeTaxExpense: { type: 'number', required: true },
effectiveTaxRate: { type: 'number', required: true },
netIncome: { type: 'number', required: true },
netMargin: { type: 'number', required: true },
earningsPerShare: { type: 'object', required: false, properties: {
basic: { type: 'number' },
diluted: { type: 'number' }
} },
comparisonPeriod: { type: 'object', required: false, properties: {
priorPeriodRevenue: { type: 'number' },
priorPeriodNetIncome: { type: 'number' },
revenueGrowth: { type: 'number' },
incomeGrowth: { type: 'number' }
} }
};
// Balance Sheet Schema
const balanceSheetSchema = {
statementId: { type: 'string', required: true },
asOfDate: { type: 'string', required: true },
fiscalPeriod: { type: 'string', required: true },
organization: { type: 'object', required: true, properties: {
companyCode: { type: 'string' },
companyName: { type: 'string' }
} },
currency: { type: 'string', required: true },
assets: { type: 'object', required: true, properties: {
currentAssets: { type: 'object', properties: {
cashAndEquivalents: { type: 'number' },
shortTermInvestments: { type: 'number' },
accountsReceivable: { type: 'number' },
inventory: { type: 'number' },
prepaidExpenses: { type: 'number' },
otherCurrentAssets: { type: 'number' },
totalCurrentAssets: { type: 'number' }
} },
nonCurrentAssets: { type: 'object', properties: {
propertyPlantEquipment: { type: 'number' },
accumulatedDepreciation: { type: 'number' },
netPPE: { type: 'number' },
intangibleAssets: { type: 'number' },
goodwill: { type: 'number' },
longTermInvestments: { type: 'number' },
otherNonCurrentAssets: { type: 'number' },
totalNonCurrentAssets: { type: 'number' }
} },
totalAssets: { type: 'number' }
} },
liabilities: { type: 'object', required: true, properties: {
currentLiabilities: { type: 'object', properties: {
accountsPayable: { type: 'number' },
accruedExpenses: { type: 'number' },
shortTermDebt: { type: 'number' },
currentPortionLongTermDebt: { type: 'number' },
deferredRevenue: { type: 'number' },
otherCurrentLiabilities: { type: 'number' },
totalCurrentLiabilities: { type: 'number' }
} },
nonCurrentLiabilities: { type: 'object', properties: {
longTermDebt: { type: 'number' },
deferredTaxLiabilities: { type: 'number' },
pensionObligations: { type: 'number' },
otherNonCurrentLiabilities: { type: 'number' },
totalNonCurrentLiabilities: { type: 'number' }
} },
totalLiabilities: { type: 'number' }
} },
equity: { type: 'object', required: true, properties: {
commonStock: { type: 'number' },
preferredStock: { type: 'number' },
additionalPaidInCapital: { type: 'number' },
retainedEarnings: { type: 'number' },
treasuryStock: { type: 'number' },
accumulatedOtherComprehensiveIncome: { type: 'number' },
totalEquity: { type: 'number' }
} },
totalLiabilitiesAndEquity: { type: 'number', required: true },
ratios: { type: 'object', required: true, properties: {
currentRatio: { type: 'number' },
quickRatio: { type: 'number' },
debtToEquity: { type: 'number' },
workingCapital: { type: 'number' },
returnOnAssets: { type: 'number' },
returnOnEquity: { type: 'number' }
} }
};
// KPI Dashboard Data Schema
const kpiDashboardSchema = {
dashboardId: { type: 'string', required: true },
timestamp: { type: 'string', required: true },
period: { type: 'string', required: true },
businessUnit: { type: 'string', required: true },
financialKPIs: { type: 'object', required: true, properties: {
revenue: { type: 'object', properties: {
value: { type: 'number' },
target: { type: 'number' },
variance: { type: 'number' },
trend: { type: 'string' }
} },
profitMargin: { type: 'object', properties: {
value: { type: 'number' },
target: { type: 'number' },
variance: { type: 'number' },
trend: { type: 'string' }
} },
ebitdaMargin: { type: 'object', properties: {
value: { type: 'number' },
target: { type: 'number' },
variance: { type: 'number' },
trend: { type: 'string' }
} },
returnOnInvestment: { type: 'object', properties: {
value: { type: 'number' },
target: { type: 'number' },
variance: { type: 'number' },
trend: { type: 'string' }
} },
cashFlowFromOperations: { type: 'object', properties: {
value: { type: 'number' },
target: { type: 'number' },
variance: { type: 'number' },
trend: { type: 'string' }
} }
} },
operationalKPIs: { type: 'object', required: true, properties: {
revenuePerEmployee: { type: 'number' },
operatingExpenseRatio: { type: 'number' },
inventoryTurnover: { type: 'number' },
daysInventoryOutstanding: { type: 'number' },
assetTurnover: { type: 'number' }
} },
liquidityKPIs: { type: 'object', required: true, properties: {
currentRatio: { type: 'number' },
quickRatio: { type: 'number' },
cashRatio: { type: 'number' },
workingCapital: { type: 'number' },
daysWorkingCapital: { type: 'number' }
} },
leverageKPIs: { type: 'object', required: true, properties: {
debtToEquity: { type: 'number' },
debtToAssets: { type: 'number' },
interestCoverageRatio: { type: 'number' },
debtServiceCoverageRatio: { type: 'number' }
} },
efficiencyKPIs: { type: 'object', required: true, properties: {
daysReceivablesOutstanding: { type: 'number' },
daysPayablesOutstanding: { type: 'number' },
cashConversionCycle: { type: 'number' },
burnRate: { type: 'number' },
runwayMonths: { type: 'number' }
} },
alerts: { type: 'array', required: false, items: {
kpiName: { type: 'string' },
severity: { type: 'string' },
message: { type: 'string' },
threshold: { type: 'number' },
actualValue: { type: 'number' }
} }
};
/**
* Generate Budget Planning Data
*/
async function generateBudgetPlans(count = 50) {
const synth = (0, index_js_1.createSynth)({
provider: 'gemini',
apiKey: process.env.GEMINI_API_KEY
});
console.log(`Generating ${count} budget plans...`);
const result = await synth.generateStructured({
count,
schema: budgetPlanningSchema,
format: 'json'
});
console.log(`Generated ${result.data.length} budgets in ${result.metadata.duration}ms`);
console.log('Sample budget:', result.data[0]);
return result;
}
/**
* Generate Revenue Forecasts
*/
async function generateRevenueForecasts(count = 25) {
const synth = (0, index_js_1.createSynth)({
provider: 'gemini'
});
console.log(`Generating ${count} revenue forecasts...`);
const result = await synth.generateStructured({
count,
schema: revenueForecastSchema,
format: 'json'
});
console.log(`Generated ${result.data.length} forecasts in ${result.metadata.duration}ms`);
console.log('Sample forecast:', result.data[0]);
return result;
}
/**
* Generate Expense Tracking Data (time-series)
*/
async function generateExpenseTracking(count = 500) {
const synth = (0, index_js_1.createSynth)({
provider: 'gemini'
});
console.log(`Generating ${count} expense records...`);
const result = await synth.generateStructured({
count,
schema: expenseTrackingSchema,
format: 'json'
});
console.log(`Generated ${result.data.length} expenses in ${result.metadata.duration}ms`);
console.log('Sample expense:', result.data[0]);
return result;
}
/**
* Generate Cash Flow Projections
*/
async function generateCashFlowProjections(count = 12) {
const synth = (0, index_js_1.createSynth)({
provider: 'gemini'
});
console.log(`Generating ${count} cash flow projections...`);
const result = await synth.generateStructured({
count,
schema: cashFlowProjectionSchema,
format: 'json'
});
console.log(`Generated ${result.data.length} projections in ${result.metadata.duration}ms`);
console.log('Sample projection:', result.data[0]);
return result;
}
/**
* Generate P&L Statements
*/
async function generateProfitLossStatements(count = 12) {
const synth = (0, index_js_1.createSynth)({
provider: 'gemini'
});
console.log(`Generating ${count} P&L statements...`);
const result = await synth.generateStructured({
count,
schema: profitLossSchema,
format: 'json'
});
console.log(`Generated ${result.data.length} statements in ${result.metadata.duration}ms`);
console.log('Sample P&L:', result.data[0]);
return result;
}
/**
* Generate Balance Sheets
*/
async function generateBalanceSheets(count = 12) {
const synth = (0, index_js_1.createSynth)({
provider: 'gemini'
});
console.log(`Generating ${count} balance sheets...`);
const result = await synth.generateStructured({
count,
schema: balanceSheetSchema,
format: 'json'
});
console.log(`Generated ${result.data.length} balance sheets in ${result.metadata.duration}ms`);
console.log('Sample balance sheet:', result.data[0]);
return result;
}
/**
* Generate KPI Dashboard Data (time-series)
*/
async function generateKPIDashboards(count = 365) {
const synth = (0, index_js_1.createSynth)({
provider: 'gemini'
});
console.log(`Generating ${count} KPI dashboard snapshots...`);
const result = await synth.generateTimeSeries({
count,
interval: '1d',
metrics: ['revenue', 'expenses', 'profitMargin', 'cashFlow'],
trend: 'up',
seasonality: true
});
console.log(`Generated ${result.data.length} KPI snapshots in ${result.metadata.duration}ms`);
console.log('Sample KPI:', result.data[0]);
return result;
}
/**
* Generate complete financial dataset in parallel
*/
async function generateCompleteFinancialDataset() {
const synth = (0, index_js_1.createSynth)({
provider: 'gemini',
cacheStrategy: 'memory'
});
console.log('Generating complete financial dataset in parallel...');
console.time('Total financial generation');
const [budgets, forecasts, expenses, cashFlow, profitLoss, balanceSheets, kpis] = await Promise.all([
generateBudgetPlans(20),
generateRevenueForecasts(12),
generateExpenseTracking(200),
generateCashFlowProjections(12),
generateProfitLossStatements(12),
generateBalanceSheets(12),
generateKPIDashboards(90)
]);
console.timeEnd('Total financial generation');
return {
budgets: budgets.data,
revenueForecasts: forecasts.data,
expenses: expenses.data,
cashFlowProjections: cashFlow.data,
profitLossStatements: profitLoss.data,
balanceSheets: balanceSheets.data,
kpiDashboards: kpis.data,
metadata: {
totalRecords: budgets.data.length + forecasts.data.length +
expenses.data.length + cashFlow.data.length +
profitLoss.data.length + balanceSheets.data.length +
kpis.data.length,
generatedAt: new Date().toISOString()
}
};
}
// Example usage
async function runFinancialExamples() {
console.log('=== Financial Planning Data Generation Examples ===\n');
// Example 1: Budget Planning
console.log('1. Budget Planning');
await generateBudgetPlans(5);
// Example 2: Revenue Forecasting
console.log('\n2. Revenue Forecasting');
await generateRevenueForecasts(5);
// Example 3: Expense Tracking
console.log('\n3. Expense Tracking');
await generateExpenseTracking(25);
// Example 4: Cash Flow Projections
console.log('\n4. Cash Flow Projections');
await generateCashFlowProjections(12);
// Example 5: P&L Statements
console.log('\n5. Profit & Loss Statements');
await generateProfitLossStatements(4);
// Example 6: Balance Sheets
console.log('\n6. Balance Sheets');
await generateBalanceSheets(4);
// Example 7: KPI Dashboards
console.log('\n7. KPI Dashboards');
await generateKPIDashboards(30);
// Example 8: Complete financial dataset
console.log('\n8. Complete Financial Dataset (Parallel)');
const completeDataset = await generateCompleteFinancialDataset();
console.log('Total records generated:', completeDataset.metadata.totalRecords);
}
// Uncomment to run
// runFinancialExamples().catch(console.error);
exports.default = {
generateBudgetPlans,
generateRevenueForecasts,
generateExpenseTracking,
generateCashFlowProjections,
generateProfitLossStatements,
generateBalanceSheets,
generateKPIDashboards,
generateCompleteFinancialDataset
};
//# sourceMappingURL=financial-planning.js.map