All files / src/utils resourceUtils.ts

100% Statements 2/2
100% Branches 2/2
100% Functions 1/1
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62                                                                                                      68x               68x    
/**
 * Resource utilities for calculating personnel and training requirements
 * based on security levels.
 * 
 * These utilities help organizations plan security resource allocation
 * by providing standardized calculations for FTE requirements.
 * 
 * @module utils/resourceUtils
 * 
 * @example
 * ```typescript
 * import { getPersonnelRequirements } from './resourceUtils';
 * 
 * // Calculate FTE needed for security implementation
 * const fteHigh = getPersonnelRequirements('High');
 * console.log('High security requires:', fteHigh); // "1 FTE"
 * 
 * const fteVeryHigh = getPersonnelRequirements('Very High');
 * console.log('Very High security requires:', fteVeryHigh); // "2 FTE"
 * ```
 */
 
import { SecurityLevel } from "../types/cia";
 
/**
 * Calculates personnel requirements (FTE) for a given security level
 * 
 * Maps security levels to Full-Time Equivalent (FTE) staffing requirements
 * based on industry standards for security operations.
 *
 * @param level - The security level
 * @returns Personnel requirements as a formatted string (e.g., "0.5 FTE")
 * 
 * @example
 * ```typescript
 * // Calculate FTE for different security levels
 * getPersonnelRequirements('None');        // "0.1 FTE" (minimal oversight)
 * getPersonnelRequirements('Low');         // "0.25 FTE" (part-time)
 * getPersonnelRequirements('Moderate');    // "0.5 FTE" (half-time)
 * getPersonnelRequirements('High');        // "1 FTE" (full-time)
 * getPersonnelRequirements('Very High');   // "2 FTE" (dedicated team)
 * 
 * // Use in budget planning
 * const level = 'High';
 * const fte = getPersonnelRequirements(level);
 * const annualCost = parseFloat(fte) * 150000; // Assume $150k per FTE
 * console.log(`Annual staffing cost for ${level}: $${annualCost.toLocaleString()}`);
 * // Output: "Annual staffing cost for High: $150,000"
 * ```
 */
export function getPersonnelRequirements(level: SecurityLevel): string {
  const levelValues: Record<SecurityLevel, number> = {
    None: 0.1,
    Low: 0.25,
    Moderate: 0.5,
    High: 1,
    "Very High": 2,
  };
 
  return `${levelValues[level] || 0.5} FTE`;
}