import Foundation enum AllocationTargetStore { private static let targetsKey = "allocationTargets" static func target(for categoryId: UUID) -> Double? { loadTargets()[categoryId.uuidString] } static func setTarget(_ value: Double?, for categoryId: UUID) { var targets = loadTargets() let key = categoryId.uuidString if let value, value > 0 { targets[key] = value } else { targets.removeValue(forKey: key) } saveTargets(targets) } static func totalTargetPercentage(for categoryIds: [UUID]) -> Double { let targets = loadTargets() return categoryIds.reduce(0) { total, id in total + (targets[id.uuidString] ?? 0) } } private static func loadTargets() -> [String: Double] { guard let data = UserDefaults.standard.data(forKey: targetsKey), let decoded = try? JSONDecoder().decode([String: Double].self, from: data) else { return [:] } return decoded } private static func saveTargets(_ targets: [String: Double]) { if let data = try? JSONEncoder().encode(targets) { UserDefaults.standard.set(data, forKey: targetsKey) } } }