Commit Graph

10 Commits

Author SHA1 Message Date
b4a67e208c Updated model and normalizers to map provider “feels like” fields into a single ApparentTemperatureC field. 2026-01-17 10:36:19 -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
0fcc536885 Updates in preparation for adding forecast sources. 2026-01-16 00:04:37 -06:00
f13f43cf56 refactor(providers): centralize provider-specific parsing and invariants
- Introduce internal/providers/nws with shared timestamp parsing used by both
  NWS sources and normalizers
- Migrate NWS observation source + normalizer to use the shared provider helper
  for consistent RFC3339/RFC3339Nano handling
- Introduce internal/providers/openweather with a shared URL invariant helper
  enforcing units=metric
- Remove duplicated OpenWeather URL validation logic from the observation source
- Align provider layering: move provider “contract/quirk” logic out of
  normalizers and into internal/providers
- Update normalizer and standards documentation to clearly distinguish:
  provider helpers (internal/providers) vs canonical mapping logic
  (internal/normalizers)

This refactor reduces duplication between sources and normalizers, clarifies
layering boundaries, and establishes a scalable pattern for future forecast
and alert implementations.
2026-01-15 20:40:53 -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
e92577c30e Moved shared OpenMeteo time parsing code into a shared internal/providers/openmeteo library. 2026-01-15 10:17:56 -06:00
f43babdfd2 openmeteo: refactored the OpenMeteo source files to relocate normalization logic to internal/normalizers. 2026-01-14 12:10:32 -06:00
efc44e8c6a normalizers: added a structure for normalizers; refactoring sources -> sources+normalizers is still todo. 2026-01-14 10:35:16 -06:00