diff --git a/docs/UPDATE_ROADMAP.md b/docs/UPDATE_ROADMAP.md index 29c739c..d070737 100644 --- a/docs/UPDATE_ROADMAP.md +++ b/docs/UPDATE_ROADMAP.md @@ -206,9 +206,17 @@ running in parallel until each real source is proven, not cut over in one step. no code changes are needed once real credentials arrive, just setting them and flipping the flag. Worth confirming DMI's endpoint migration away from `dmigw.govcloud.dk` before wiring anything. -- [ ] Investigate open real sources for water temperature (Ūdens) and the - LVĢMC forecast CSV workspace, following the same open-data-portal - approach used for station observations. +- [x] Add real water temperature data for Ūdens: `fetch.lvgmc.WaterTemperatureService` + fetches LVĢMC's open hydrological data (`data.gov.lv`, same free CKAN + API), mapping one representative real station per named zone (coastal + `SEDUT` stations for Jūra/Līcis, inland `WTEMD` stations for the four + historical regions). Fetch-on-demand with in-memory caching only — + water temperature has never been persisted or needed history, unlike + station observations. The frontend auto-fills both min/max per zone + from the real reading, mirroring Faktiskā's override/reset pattern. +- [ ] Investigate a real source for the LVĢMC forecast CSV workspace, + following the same open-data-portal approach used for station + observations and water temperature. - [ ] Test scheduled ingestion failure and recovery behavior. - [ ] Rehearse deployment and rollback using sanitized data. - [ ] Obtain technical and operational review before workplace rollout. @@ -281,3 +289,5 @@ Record completed work here by date and commit after the Git workflow is establis | 2026-08-23 | `cb25316` | Stop generating synthetic weather data (remove `dev/seed_weather.sql`, the `seed` Compose service, and the README section describing it) now that real data is verified and this tool may plausibly be used against live broadcasts | Yes — `docker compose config` valid, running Rocky stack unaffected (profile-gated service, no running containers touched); VPS deployment pending | | 2026-08-23 | `6ddfe73` | Split scheduled jobs (`ENABLE_SCHEDULED_JOBS` vs. new `ENABLE_LEGACY_PROVIDER_JOBS`) so the working open-data station fetch runs without the FTP/Harmonie jobs' placeholder credentials crash-looping the whole app via `parMapN` | Yes — Scala tests, Rocky rebuild deployed with the flag on: logs confirm only the safe jobs scheduled, FTP/Harmonie never attempted, app stayed up; VPS deployment pending | | 2026-08-23 | `39fcb3e` | Remove the dead `METEO_*` fetch path (`fetch/csv/FetchService.scala`, its empty test, and its env vars everywhere) — confirmed via git history it's the same underlying LVĢMC data as the FTP/open-data paths, just an earlier, superseded delivery mechanism that was never wired into anything running | Yes — Scala tests (2 suites now, down from 3, the deleted one was empty); VPS deployment pending | +| 2026-08-23 | `4036d24`–`4b92272` | Add `fetch.lvgmc.WaterTemperatureService`: real, free, keyless water temperatures for all 6 Ūdens zones (2 coastal `SEDUT` stations for Jūra/Līcis, 4 inland `WTEMD` stations for Kurzeme/Zemgale/Vidzeme/Latgale), fetch-on-demand with a 15-minute in-memory cache mirroring `WarningService` rather than the persisted station-observation path, since Ūdens has never stored history | Yes — Scala tests, Rocky rebuild, direct API curl confirming real values for all 6 zones; caught and fixed one station-selection error (Daugavpils only reports water level, not temperature — swapped for Ludza) via direct verification before committing; VPS deployment pending | +| 2026-08-23 | `5a92465` | Auto-populate Ūdens's min/max fields from `/api/water-temperatures` on load, mirroring Faktiskā's fetch/override/reset pattern, with per-zone manual-override tracking and an "Atiestatīt" reset button | Yes — Rocky typecheck, build, and headless-browser verification (Playwright in Docker, since `chromium-cli` wasn't available in this environment) confirming auto-populated values match the API, manual edit correctly flips a zone to "Manuāli" and enables its reset button, and reset correctly restores the fetched value; noted along the way that `/udens-temperatura` 404s on a direct hit (no SPA fallback yet, consistent with the known limitation already listed) but works via client-side nav; VPS deployment pending |