Files
weatherreporter/internal/report/hourly_report.go

59 lines
1.5 KiB
Go
Raw Normal View History

2026-06-12 17:28:26 +00:00
package report
import (
"time"
"gitea.maximumdirect.net/eric/weatherreporter/internal/module"
"gitea.maximumdirect.net/eric/weatherreporter/internal/timeutil"
)
2026-06-14 04:35:52 +00:00
const hourlyReportHours = 6
2026-06-12 17:28:26 +00:00
2026-06-14 04:26:05 +00:00
func hourlyDefinition() Definition {
2026-06-12 17:28:26 +00:00
return Definition{
2026-06-14 04:35:52 +00:00
ID: Hourly,
Name: "Hourly Report",
PromptID: "weather.hourly_generated_text",
GenerationMode: GenerationModeGeneratedTextTemplate,
TemplateID: "hourly",
GeneratedTextSchemaID: "hourly",
ComparisonStrategy: CompareRollingWindow,
ArtifactGroup: "hourly",
BatchOutputName: "hourly.md",
2026-06-20 02:42:20 +00:00
DistributorPathTemplates: []string{
"hourly/index.md",
},
Generated: true,
CompatiblePriorIDs: []ID{Hourly},
Modules: hourlyModules(),
resolve: resolveHourly,
2026-06-12 17:28:26 +00:00
}
}
2026-06-14 04:26:05 +00:00
func hourlyModules() []module.ConfigItem {
2026-06-12 17:31:37 +00:00
return []module.ConfigItem{
{ID: module.Metadata},
{ID: module.CurrentConditions},
{ID: module.HourlyForecast},
{ID: module.PrecipTiming},
{ID: module.AlertDigest},
{ID: module.SPCConvectiveOutlooks},
{
ID: module.AreaForecastDiscussion,
Options: module.AreaForecastDiscussionOptions{
Sections: []string{"key_messages", "short_term"},
},
},
{ID: module.SPCConvectiveDiscussion},
{ID: module.WeatherStory},
}
2026-06-12 17:28:26 +00:00
}
2026-06-14 04:26:05 +00:00
func resolveHourly(req ResolveRequest) (timeutil.Period, error) {
2026-06-12 17:28:26 +00:00
localNow := req.Now.In(req.Location)
return timeutil.Period{
Start: localNow,
2026-06-14 04:35:52 +00:00
End: localNow.Add(hourlyReportHours * time.Hour),
2026-06-12 17:28:26 +00:00
}, nil
}