business-as-code
Version:
Primitives for expressing business logic and processes as code
137 lines • 4.14 kB
TypeScript
/**
* Key Performance Indicators (KPIs) management
*
* Uses org.ai KPI types for standardized KPI definitions across the ecosystem.
*/
import type { KPIDefinition, TimePeriod } from './types.js';
import type { KPI as OrgKPI, KPICategory, KPITrend, KPIFrequency, KPIHistoryEntry } from 'org.ai';
export type { OrgKPI, KPICategory, KPITrend, KPIFrequency, KPIHistoryEntry };
/**
* Convert a business-as-code KPIDefinition to an org.ai KPI
*
* @param definition - Business KPI definition
* @param id - Unique identifier for the KPI
* @returns org.ai KPI object
*/
export declare function toOrgKPI(definition: KPIDefinition, id: string): OrgKPI;
/**
* Convert an org.ai KPI to a business-as-code KPIDefinition
*
* @param kpi - org.ai KPI object
* @returns Business KPI definition
*/
export declare function fromOrgKPI(kpi: OrgKPI): KPIDefinition;
/**
* Define Key Performance Indicators for tracking business metrics
*
* @example
* ```ts
* const businessKPIs = kpis([
* {
* name: 'Monthly Recurring Revenue',
* description: 'Total predictable revenue per month',
* category: 'financial',
* unit: 'USD',
* target: 100000,
* current: 85000,
* frequency: 'monthly',
* dataSource: 'Billing System',
* formula: 'SUM(active_subscriptions.price)',
* },
* {
* name: 'Customer Churn Rate',
* description: 'Percentage of customers lost per month',
* category: 'customer',
* unit: 'percent',
* target: 5,
* current: 3.2,
* frequency: 'monthly',
* dataSource: 'CRM',
* formula: '(churned_customers / total_customers) * 100',
* },
* {
* name: 'Net Promoter Score',
* description: 'Customer satisfaction and loyalty metric',
* category: 'customer',
* unit: 'score',
* target: 50,
* current: 48,
* frequency: 'quarterly',
* dataSource: 'Survey Platform',
* },
* ])
* ```
*/
export declare function kpis(definitions: KPIDefinition[]): KPIDefinition[];
/**
* Define a single KPI
*/
export declare function kpi(definition: KPIDefinition): KPIDefinition;
/**
* Calculate KPI achievement percentage
*/
export declare function calculateAchievement(kpi: KPIDefinition): number;
/**
* Check if KPI meets target
*/
export declare function meetsTarget(kpi: KPIDefinition): boolean;
/**
* Update KPI current value
*/
export declare function updateCurrent(kpi: KPIDefinition, value: number): KPIDefinition;
/**
* Update KPI target
*/
export declare function updateTarget(kpi: KPIDefinition, target: number): KPIDefinition;
/**
* Get KPIs by category
*/
export declare function getKPIsByCategory(kpis: KPIDefinition[], category: KPIDefinition['category']): KPIDefinition[];
/**
* Get KPIs by frequency
*/
export declare function getKPIsByFrequency(kpis: KPIDefinition[], frequency: TimePeriod): KPIDefinition[];
/**
* Get KPIs that meet their targets
*/
export declare function getKPIsOnTarget(kpis: KPIDefinition[]): KPIDefinition[];
/**
* Get KPIs that don't meet their targets
*/
export declare function getKPIsOffTarget(kpis: KPIDefinition[]): KPIDefinition[];
/**
* Calculate overall KPI health score (0-100)
*/
export declare function calculateHealthScore(kpis: KPIDefinition[]): number;
/**
* Group KPIs by category
*/
export declare function groupByCategory(kpis: KPIDefinition[]): Map<string, KPIDefinition[]>;
/**
* Calculate variance from target
*/
export declare function calculateVariance(kpi: KPIDefinition): number;
/**
* Calculate variance percentage from target
*/
export declare function calculateVariancePercentage(kpi: KPIDefinition): number;
/**
* Format KPI value with unit
*/
export declare function formatValue(kpi: KPIDefinition, value?: number): string;
/**
* Compare KPI performance over time
*/
export declare function comparePerformance(current: KPIDefinition, previous: KPIDefinition): {
change: number;
changePercent: number;
improved: boolean;
};
/**
* Validate KPI definitions
*/
export declare function validateKPIs(kpis: KPIDefinition[]): {
valid: boolean;
errors: string[];
};
//# sourceMappingURL=kpis.d.ts.map