Add collected and derived fact contracts
This commit is contained in:
@@ -3,6 +3,7 @@ package briefing
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"gitea.maximumdirect.net/eric/weatherreporter/internal/facts"
|
||||
"gitea.maximumdirect.net/eric/weatherreporter/internal/forecast"
|
||||
"gitea.maximumdirect.net/eric/weatherreporter/internal/report"
|
||||
"gitea.maximumdirect.net/eric/weatherreporter/internal/timeutil"
|
||||
@@ -26,7 +27,7 @@ type Storm struct {
|
||||
WeatherStory *WeatherStoryContext `json:"weatherStory,omitempty"`
|
||||
}
|
||||
|
||||
func BuildStorm(ctx BuildContext) (Package, error) {
|
||||
func BuildStorm(ctx BuildContext, derived facts.DerivedFacts) (Package, error) {
|
||||
if ctx.Resolved.Definition.ID != report.Storm {
|
||||
return Package{}, fmt.Errorf("storm briefing requires a storm report definition")
|
||||
}
|
||||
@@ -34,12 +35,14 @@ func BuildStorm(ctx BuildContext) (Package, error) {
|
||||
return Package{}, fmt.Errorf("forecast bundle is required")
|
||||
}
|
||||
period := ctx.Resolved.ValidPeriod
|
||||
hourly := forecast.SelectHourlyPeriods(ctx.Bundle.Hourly, period)
|
||||
narrative := forecast.SelectNarrativePeriods(ctx.Bundle, period)
|
||||
daily := forecast.SelectHourlyPeriods(ctx.Bundle.Daily, period)
|
||||
alerts := forecast.AlertOverlaps(ctx.Bundle.Alerts, period)
|
||||
summary := forecast.SummarizeDaypart("storm window", period, hourly)
|
||||
summary.AlertOverlaps = alerts
|
||||
hourly := derived.ValidPeriodHourlyPeriods
|
||||
narrative := derived.ValidPeriodNarrativePeriods
|
||||
daily := derived.ValidPeriodDailyPeriods
|
||||
alerts := derived.AlertOverlaps
|
||||
if derived.StormWindowSummary == nil {
|
||||
return Package{}, fmt.Errorf("storm window summary is required")
|
||||
}
|
||||
summary := *derived.StormWindowSummary
|
||||
|
||||
storm := &Storm{
|
||||
TimingWindow: period,
|
||||
|
||||
Reference in New Issue
Block a user