// FILE: internal/sources/nws/forecast_narrative.go package nws import ( "gitea.maximumdirect.net/ejr/feedkit/config" "gitea.maximumdirect.net/ejr/weatherfeeder/standards" ) // NarrativeForecastSource polls an NWS narrative forecast endpoint and emits a RAW forecast Event. // // It intentionally emits the *entire* upstream payload as json.RawMessage and only decodes // minimal metadata for Event.EffectiveAt and Event.ID. // // Output schema: // - standards.SchemaRawNWSNarrativeForecastV1 type NarrativeForecastSource struct { *forecastSource } func NewNarrativeForecastSource(cfg config.SourceConfig) (*NarrativeForecastSource, error) { const driver = "nws_forecast_narrative" src, err := newForecastSource(cfg, driver, standards.SchemaRawNWSNarrativeForecastV1) if err != nil { return nil, err } return &NarrativeForecastSource{forecastSource: src}, nil }