Base fixes and test harness

This commit is contained in:
alexandrev-tibco
2026-02-01 11:12:57 +01:00
parent f5b13ec924
commit e328767c4a
39 changed files with 3575 additions and 142 deletions
@@ -376,7 +376,7 @@ class CalculationService {
sources: [InvestmentSource],
totalPortfolioValue: Decimal
) -> [CategoryMetrics] {
categories.map { category in
let rawMetrics = categories.map { category in
let categorySources = sources.filter { $0.category?.id == category.id }
let allSnapshots = categorySources.flatMap { $0.snapshotsArray }
let metrics = calculateCategoryMetrics(from: allSnapshots)
@@ -396,6 +396,24 @@ class CalculationService {
metrics: metrics
)
}
let filtered = rawMetrics.filter { metric in
metric.totalValue > 0 && sources.contains { $0.category?.id == metric.id }
}
var deduped: [String: CategoryMetrics] = [:]
for metric in filtered {
let key = metric.categoryName.trimmingCharacters(in: .whitespacesAndNewlines).lowercased()
if let existing = deduped[key] {
if metric.totalValue > existing.totalValue {
deduped[key] = metric
}
} else {
deduped[key] = metric
}
}
return Array(deduped.values)
}
private struct SeriesPoint {