b47f1b2051
sources: added an OpenMeteo forecast source.
2026-01-17 08:00:23 -06:00
b8804d32d2
refactor(normalizers): deduplicate synthetic station ID generation
...
- Add common SynthStationID helpers for coordinate-based providers
- Use shared helper for Open-Meteo and OpenWeather station ID synthesis
- Require both lat/lon when generating synthetic IDs to avoid misleading defaults
- Remove unused Open-Meteo normalizer wrapper code
This reduces cross-provider duplication while keeping provider-specific
mapping logic explicit and readable.
2026-01-16 22:13:44 -06:00
00e811f8f7
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
2026-01-16 21:40:20 -06:00
2eb2d4b90f
feat(nws, normalizers): add NWS hourly forecast normalization and enforce canonical float rounding
...
- 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.
2026-01-16 10:28:32 -06:00
0fcc536885
Updates in preparation for adding forecast sources.
2026-01-16 00:04:37 -06:00
efc44e8c6a
normalizers: added a structure for normalizers; refactoring sources -> sources+normalizers is still todo.
2026-01-14 10:35:16 -06:00
aa4774e0dd
weatherfeeder: split the former maximumdirect.net/weatherd project in two.
...
feedkit now contains a reusable core, while weatherfeeder is a concrete implementation that includes weather-specific functions.
2026-01-13 18:14:21 -06:00