5923592b53
Moved the weatherfeeder model out of internal/ so that downstream consumers can import it directly.
ci/woodpecker/push/build-image Pipeline was successful
2026-02-08 08:56:16 -06:00
c12cf91115
normalizers: implemented openmeteo forecast normalizer.
2026-01-17 10:16:50 -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
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
a341aee5df
normalizers: Updated error handling within the JSON helper function.
2026-01-15 20:17:46 -06:00
8968b6bdcd
Refactor normalizers: dedupe JSON decode + event finalize
...
Add shared normalizer helpers to centralize payload extraction, JSON decoding,
and event finalization/validation.
Refactor NWS, Open-Meteo, and OpenWeather observation normalizers to use the
shared spine, removing repeated boilerplate while preserving provider-specific
mapping logic.
2026-01-15 10:36:18 -06:00
e28ff49201
Moved common HTTP body fetch code into a shared helper function.
2026-01-15 08:58:56 -06:00
b21ed856e9
Fixed an ordering bug in wmo_text.go.
2026-01-15 08:14:20 -06:00
0ba2602bcc
nws: refactored the NWS source files to relocate normalization logic to internal/normalizers.
2026-01-14 11:18:21 -06:00