- Implement full NWS hourly forecast normalizer (raw.nws.hourly.forecast.v1 → weather.forecast.v1) - Add GeoJSON forecast types and helpers for NWS gridpoint hourly payloads - Normalize temperatures, winds, humidity, PoP, and infer WMO condition codes from forecast text/icons - Treat forecast IssuedAt as EffectiveAt for stable, dedupe-friendly event IDs - Introduce project-wide float rounding at normalization finalization - Round all float values in canonical payloads to 2 decimal places - Apply consistently across pointers, slices, maps, and nested structs - Preserve opaque structs (e.g., time.Time) unchanged - Add SchemaRawNWSHourlyForecastV1 and align schema matching/comments - Clean up NWS helper organization and comments - Update documentation to reflect numeric wire-format and normalization policies This establishes a complete, deterministic hourly forecast pipeline for NWS and improves JSON output stability across all canonical weather schemas.
20 lines
382 B
Go
20 lines
382 B
Go
// FILE: ./internal/normalizers/nws/register.go
|
|
package nws
|
|
|
|
import (
|
|
fknormalize "gitea.maximumdirect.net/ejr/feedkit/normalize"
|
|
)
|
|
|
|
// Register registers NWS normalizers into the provided registry.
|
|
func Register(reg *fknormalize.Registry) {
|
|
if reg == nil {
|
|
return
|
|
}
|
|
|
|
// Observations
|
|
reg.Register(ObservationNormalizer{})
|
|
|
|
// Forecasts
|
|
reg.Register(ForecastNormalizer{})
|
|
}
|