21a35a5205
Emit location-filtered SPC outlook v2 runs
2026-06-12 04:24:12 +00:00
435d1ade07
Add outlook v2 model contract
2026-06-12 04:19:56 +00:00
2c472449e8
Fix a bug in the GeoJSON handling when there are no active polygons
ci/woodpecker/push/build-image Pipeline was successful
2026-06-11 22:21:59 -05:00
5d7f604a2c
Implement remaining cleanup items prior to the next release
ci/woodpecker/push/build-image Pipeline was successful
2026-06-11 10:17:49 -05:00
c417c892d9
Enhance JSON payload decoding to accept both typed and pointer payloads, and add corresponding tests
ci/woodpecker/push/build-image Pipeline was successful
2026-06-10 22:11:38 -05:00
5d94d3f32d
Remove invalid SPC URLs for day 3 tornado/wind/hail risk
ci/woodpecker/push/build-image Pipeline failed
2026-06-10 21:56:11 -05:00
06d5973746
Clean up stale internal literals
ci/woodpecker/push/build-image Pipeline was canceled
2026-06-11 02:23:42 +00:00
b7277e0c02
Centralize weather event and driver identifiers
2026-06-11 02:08:36 +00:00
a990da957b
Finalize SPC outlook feature addition and clean up implemented roadmap documentation
ci/woodpecker/push/build-image Pipeline was successful
2026-06-10 19:54:39 -05:00
1e2db468ea
Add SPC outlook normalization
2026-06-11 00:20:31 +00:00
002f9d0ba6
Clean up documentation consistency
ci/woodpecker/push/build-image Pipeline was successful
2026-06-10 20:28:41 +00:00
47176520bb
Document development workflow and internals
2026-06-10 20:22:38 +00:00
fd820fd964
Implemented NWS weather stories support
ci/woodpecker/push/build-image Pipeline was successful
2026-05-30 06:47:18 -05:00
cca873cafb
Made forecast-period conditionCode optional
ci/woodpecker/manual/build-image Pipeline was successful
2026-05-28 07:47:07 -05:00
a0389ebce8
Added support for Area Forecast Discussions issued by the NWS
ci/woodpecker/push/build-image Pipeline was successful
2026-03-28 16:17:03 -05:00
c76088c38c
Code cleanup and deduplication pass through weatherfeeder
ci/woodpecker/push/build-image Pipeline was successful
ci/woodpecker/manual/build-image Pipeline was successful
2026-03-28 12:01:07 -05:00
2c1278a70a
Moved generic and broadly useful helper functions upstream into feedkit
ci/woodpecker/push/build-image Pipeline was successful
2026-03-28 11:30:20 -05:00
356c3be648
Feature addition to support narrative forecast updates from the NWS
ci/woodpecker/push/build-image Pipeline was successful
2026-03-27 16:07:12 -05:00
dbaebbbd7a
Updates to the nws forecast source and normalizer to separate code specific to hourly forecasts and prepare for upcoming feature addition of daily and narrative forecasts
ci/woodpecker/push/build-image Pipeline was successful
2026-03-27 12:58:23 -05:00
88d5727a84
Simplified the forecast schema
ci/woodpecker/push/build-image Pipeline was successful
2026-03-26 21:35:08 -05:00
129cebd94d
Updated the normalized observation schema to remove duplicate and/or unnecessary fields
ci/woodpecker/push/build-image Pipeline was successful
2026-03-17 11:04:51 -05:00
d0b58a4734
Updates to track feedkit v0.7.2 and to add a dedupe processor
ci/woodpecker/push/build-image Pipeline was successful
2026-03-16 18:35:44 -05:00
ea113e2dcc
Updated processor/normalizer wiring to track Feedkit v0.7.0
ci/woodpecker/push/build-image Pipeline failed
2026-03-16 13:35:51 -05:00
123e8ff763
Moved the standards package out of internal/ so it can be imported by downstream consumers.
ci/woodpecker/push/build-image Pipeline was successful
2026-02-08 09:15:07 -06:00
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
da0231b20f
Add day/night estimation for NWS observations based on solar elevation and update observation model.
2026-01-22 23:15:17 -06:00
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
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
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
1790218d38
Updated documentation for internal consistency.
2026-01-15 10:47:59 -06:00
84c4efbc2e
normalizers/openweather: extract shared helpers into common.go
...
Refactor OpenWeather normalizers to improve structure and reuse by moving
provider-specific helper functions out of observation.go and into a new
common.go.
This keeps observation.go focused on schema matching and domain mapping,
preserves the “one normalizer per file” convention, and establishes a clear
home for helpers that will be shared by future OpenWeather forecast and alert
normalizers.
No functional behavior changes; this is a pure internal refactor.
2026-01-15 10:41:56 -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
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
f43babdfd2
openmeteo: refactored the OpenMeteo source files to relocate normalization logic to internal/normalizers.
2026-01-14 12:10:32 -06:00
759fa31762
openweather: refactored the OpenWeather source files to relocate normalization logic to internal/normalizers.
2026-01-14 11:59:17 -06:00
0ba2602bcc
nws: refactored the NWS source files to relocate normalization logic to internal/normalizers.
2026-01-14 11:18:21 -06:00
efc44e8c6a
normalizers: added a structure for normalizers; refactoring sources -> sources+normalizers is still todo.
2026-01-14 10:35:16 -06:00