normalizers/nws: add NWS alerts normalizer and canonical alert mapping

- Introduce AlertsNormalizer to convert Raw NWS Alerts (SchemaRawNWSAlertsV1)
  into canonical WeatherAlert runs (SchemaWeatherAlertV1)
- Add minimal NWS alerts response/types to support GeoJSON FeatureCollection parsing
- Map NWS alert properties (event, headline, severity, timing, area, references)
  into model.WeatherAlert with best-effort timestamp handling
- Establish clear AsOf / EffectiveAt policy for alert runs to support stable
  deduplication and snapshot semantics
- Register the new alerts normalizer alongside existing NWS observation and
  forecast normalizers
This commit is contained in:
2026-01-16 21:40:20 -06:00
parent 2eb2d4b90f
commit 00e811f8f7
7 changed files with 536 additions and 27 deletions

View File

@@ -16,4 +16,7 @@ func Register(reg *fknormalize.Registry) {
// Forecasts
reg.Register(ForecastNormalizer{})
// Alerts
reg.Register(AlertsNormalizer{})
}