feat: Begins hvac system performance

This commit is contained in:
2025-02-27 22:41:37 -05:00
parent dc01477c3e
commit 7cd02971a3
15 changed files with 341 additions and 16 deletions

View File

@@ -29,6 +29,11 @@ extension ApiController: DependencyKey {
case let .calculateDehumidifierSize(request):
logger.debug("Calculating dehumidifier size: \(request)")
return try await request.respond(logger)
case let .calculateHVACSystemPerformance(request):
logger.debug("Calculating hvac system performance: \(request)")
fatalError()
case let .calculateMoldRisk(request):
logger.debug("Calculating mold risk: \(request)")
return try await psychrometricClient.respond(request, logger)

View File

@@ -46,6 +46,7 @@ public extension DehumidifierSize.Request {
addDefaultWarnings(&warnings)
// TODO: Return an error if required capacity is larger than biggest residential dehumidifier.
// TODO: Return early here ??
if requiredCapacity > 205 {
logger.debug("Required capacity exceeds residential unit.")
@@ -80,10 +81,15 @@ public extension DehumidifierSize.Request {
}
private func parseRecommendedSize(_ requiredCapacity: Double) -> (Int, String) {
for (key, value) in Self.dehumidifierSizes where Double(key) >= requiredCapacity {
return (key, value)
}
return (205, Self.dehumidifierSizes[205]!)
// TODO: Return an error if required capacity is larger than biggest residential dehumidifier.
// Ensure the keys are sorted, otherwise it gives unpredictable results.
let key = Self.dehumidifierSizes.keys.sorted()
.first { Double($0) >= requiredCapacity }
// Use the largest dehumidifier because the requirement is larger than the largest key.
?? 255
return (key, Self.dehumidifierSizes[key]!)
}
private func addDefaultWarnings(_ warnings: inout [String]) {