package main import ( "bugulma/backend/internal/financial" "fmt" ) func main() { // Test the financial calculator initialization config := financial.DefaultConfig() calc := financial.NewFinancialCalculator( config, financial.NewNPVCalculator(), financial.NewIRRCalculator(), financial.NewPaybackCalculator(), financial.NewSensitivityAnalyzer(config, financial.NewNPVCalculator()), financial.NewRiskAssessor(config), financial.NewCO2Calculator(config), financial.NewCapexEstimator(config), financial.NewTransportCostCalculator(config), ) // Test basic analysis data := &financial.ResourceFlowData{ ResourceType: "heat", DistanceKm: 10.0, AnnualVolume: 1000.0, CostIn: 50.0, CostOut: 30.0, } assumptions := &financial.EconomicAssumptions{ DiscountRate: 0.08, ProjectLifeYears: 10, OperatingHoursYear: 8760, } analysis, err := calc.Calculate(financial.AnalysisTypeBasic, data, assumptions) if err != nil { fmt.Printf("Error: %v\n", err) return } basicAnalysis := analysis.(*financial.EconomicAnalysis) fmt.Printf("Basic analysis completed successfully: NPV=%.2f, IRR=%.2f%%\n", basicAnalysis.NPV, basicAnalysis.IRR*100) // Test advanced analysis advancedAnalysis, err := calc.Calculate(financial.AnalysisTypeAdvanced, data, assumptions) if err != nil { fmt.Printf("Error: %v\n", err) return } advanced := advancedAnalysis.(*financial.AdvancedEconomicAnalysis) fmt.Printf("Advanced analysis completed successfully: Risk-adjusted NPV=%.2f, CO2 avoided=%.2f tonnes\n", advanced.RiskAdjustedNPV, advanced.CO2AvoidedTonnes) fmt.Printf("Sensitivity scenarios: %d, Risk level: %s\n", len(advanced.SensitivityScenarios), advanced.RiskProfile.RiskLevel) }