- 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.
16 lines
785 B
Go
16 lines
785 B
Go
// File: internal/standards/doc.go
|
||
//
|
||
// Package standards defines weatherfeeder’s provider-agnostic “project law”:
|
||
//
|
||
// - Schema identifiers and versioning conventions (see schema.go).
|
||
// - Canonical interpretations / cross-provider mappings that are not specific to a
|
||
// single upstream API (e.g., shared code tables, text heuristics, unit policy).
|
||
//
|
||
// Standards are used by both sources and normalizers. Keep this package free of
|
||
// provider-specific logic and free of dependencies on internal/sources/* or
|
||
// internal/normalizers/* to avoid import cycles.
|
||
//
|
||
// Provider-specific decoding helpers and quirks live in internal/providers/<provider>.
|
||
// Normalizer implementations and canonical mapping logic live in internal/normalizers/<provider>.
|
||
package standards
|