// FILE: model/observation.go package model import "time" type WeatherObservation struct { // Identity / metadata StationID string `json:"stationId,omitempty"` StationName string `json:"stationName,omitempty"` Timestamp time.Time `json:"timestamp"` // Canonical internal representation (provider-independent). ConditionCode WMOCode `json:"conditionCode"` IsDay *bool `json:"isDay,omitempty"` TextDescription string `json:"textDescription,omitempty"` // Core measurements (nullable) TemperatureC *float64 `json:"temperatureC,omitempty"` DewpointC *float64 `json:"dewpointC,omitempty"` WindDirectionDegrees *float64 `json:"windDirectionDegrees,omitempty"` WindSpeedKmh *float64 `json:"windSpeedKmh,omitempty"` WindGustKmh *float64 `json:"windGustKmh,omitempty"` BarometricPressurePa *float64 `json:"barometricPressurePa,omitempty"` VisibilityMeters *float64 `json:"visibilityMeters,omitempty"` RelativeHumidityPercent *float64 `json:"relativeHumidityPercent,omitempty"` ApparentTemperatureC *float64 `json:"apparentTemperatureC,omitempty"` PresentWeather []PresentWeather `json:"presentWeather,omitempty"` } type PresentWeather struct { Raw map[string]any `json:"raw,omitempty"` }