Correct derived briefing weather semantics

This commit is contained in:
2026-08-13 00:58:04 +00:00
parent 9b4e53702b
commit daf0c7efd7
5 changed files with 215 additions and 26 deletions

View File

@@ -41,6 +41,8 @@ type TodayPlanning struct {
LateDayChangeWatch []string
}
const outdoorIndicatorRiskScore = 25
func buildOutdoorWindows(dayparts []forecast.DaypartSummary) OutdoorWindows {
var best *OutdoorWindow
var worst *OutdoorWindow
@@ -275,7 +277,7 @@ func scoreOutdoorWindow(daypart forecast.DaypartSummary) OutdoorWindow {
reasons = append(reasons, "alert overlap")
}
if daypart.Indicators.Heat || daypart.Indicators.Cold {
score += 25
score += outdoorIndicatorRiskScore
if daypart.Indicators.Heat {
reasons = append(reasons, "heat risk")
}
@@ -283,6 +285,19 @@ func scoreOutdoorWindow(daypart forecast.DaypartSummary) OutdoorWindow {
reasons = append(reasons, "cold risk")
}
}
for _, hazard := range []struct {
present bool
reason string
}{
{present: daypart.Indicators.Snow, reason: "snow risk"},
{present: daypart.Indicators.Ice, reason: "ice risk"},
{present: daypart.Indicators.Fog, reason: "fog risk"},
} {
if hazard.present {
score += outdoorIndicatorRiskScore
reasons = append(reasons, hazard.reason)
}
}
if len(reasons) == 0 {
reasons = append(reasons, "quiet weather")
}