Document the Brīdinājumi workflow and projection calibration
This commit is contained in:
@@ -30,6 +30,7 @@ Staging currently exercises the PostgreSQL → API → frontend path with synthe
|
|||||||
- Serves JSON API routes and the built frontend from `web/dist`.
|
- Serves JSON API routes and the built frontend from `web/dist`.
|
||||||
- Queries and aggregates station observations in PostgreSQL.
|
- Queries and aggregates station observations in PostgreSQL.
|
||||||
- Contains ingestion/parsing code for LVGMC station and forecast data.
|
- Contains ingestion/parsing code for LVGMC station and forecast data.
|
||||||
|
- Fetches LVĢMC open hydrometeorological-warning metadata and polygon coordinates on request, with a 5-minute in-memory cache and stale-data fallback if the upstream call fails.
|
||||||
- Contains HARMONIE discovery, download, GRIB parsing, and rendering support.
|
- Contains HARMONIE discovery, download, GRIB parsing, and rendering support.
|
||||||
- Starts scheduled ingestion/cleanup tasks unless `ENABLE_SCHEDULED_JOBS=false`.
|
- Starts scheduled ingestion/cleanup tasks unless `ENABLE_SCHEDULED_JOBS=false`.
|
||||||
|
|
||||||
@@ -82,6 +83,12 @@ The renderer attaches each normalized 256×256 weather image to the measured edg
|
|||||||
|
|
||||||
Monda Regular and Bold are bundled locally and used by the interface and generated text. Weather symbols are bundled as independent transparent PNG assets.
|
Monda Regular and Bold are bundled locally and used by the interface and generated text. Weather symbols are bundled as independent transparent PNG assets.
|
||||||
|
|
||||||
|
### Brīdinājumi
|
||||||
|
|
||||||
|
Brīdinājumi renders the current LVĢMC warning polygons over the same `map_1920x1080`/`map_3840x1440` backgrounds used by Kartes, plus a production border-outline overlay drawn last so it stays crisp above the softened data layer. Warning severities are blurred and filled onto an offscreen layer before compositing, giving the broadcast graphic a feathered rather than hard-edged warning area.
|
||||||
|
|
||||||
|
The backend returns warning polygons as raw latitude/longitude points; the frontend projects them to pixel space with a per-resolution affine transform (`x = a·lon + b·lat + c`, `y = d·lon + e·lat + f`). Each transform is a least-squares fit of well-spread Latvian cities' real-world coordinates against the pixel positions already validated for these same map backgrounds by Kartes/Faktiskā (`cityCoords.ts` + `mapConsts.ts`), rather than an independently eyeballed calibration. An earlier 4-corner bounding-box version of this projection could not represent the source artwork's rotation/shear and drifted up to ~200px on the 3840 canvas; the affine fit lands within ~35px.
|
||||||
|
|
||||||
## What the repository does not provide by itself
|
## What the repository does not provide by itself
|
||||||
|
|
||||||
- Authorized provider accounts and credentials.
|
- Authorized provider accounts and credentials.
|
||||||
|
|||||||
+2
-1
@@ -9,9 +9,10 @@ This directory contains the working documentation for the WeatherTool modernizat
|
|||||||
- Staging uses deterministic synthetic observations for the repository station set plus Valmiera, required by Faktiskā.
|
- Staging uses deterministic synthetic observations for the repository station set plus Valmiera, required by Faktiskā.
|
||||||
- Scheduled external-provider jobs are disabled in development and staging.
|
- Scheduled external-provider jobs are disabled in development and staging.
|
||||||
- PostgreSQL is private to the project Compose network; only the Scala application publishes a host port.
|
- PostgreSQL is private to the project Compose network; only the Scala application publishes a host port.
|
||||||
- The operator-facing workspaces now use the Latvian workflow names **Stacijas**, **Kartes**, **Faktiskā**, **Ūdens**, **Apskats**, **Arhīvs**, **Harmonie**, and **LVĢMC**. Kartes retains custom analytical map outputs, while Faktiskā is a fixed 13-position, latest-temperature newsroom workflow with a locked 3840×1440 export.
|
- The operator-facing workspaces now use the Latvian workflow names **Stacijas**, **Kartes**, **Faktiskā**, **Ūdens**, **Brīdinājumi**, **Apskats**, **Arhīvs**, **Harmonie**, and **LVĢMC**. Kartes retains custom analytical map outputs, while Faktiskā is a fixed 13-position, latest-temperature newsroom workflow with a locked 3840×1440 export.
|
||||||
- Faktiskā symbol placement is automatic after manual image selection and is anchored to each rendered temperature badge.
|
- Faktiskā symbol placement is automatic after manual image selection and is anchored to each rendered temperature badge.
|
||||||
- **Ūdens** uses separate authoritative 1920×1080 and 3840×1440 production templates. Its six value rectangles are measured per template and the text is optically centered from rendered glyph bounds; both exports have been visually validated.
|
- **Ūdens** uses separate authoritative 1920×1080 and 3840×1440 production templates. Its six value rectangles are measured per template and the text is optically centered from rendered glyph bounds; both exports have been visually validated.
|
||||||
|
- **Brīdinājumi** renders current LVĢMC warning polygons over a production border overlay with feathered severity fills. Its lon/lat-to-pixel projection is an affine fit calibrated against the same validated city pixel positions Kartes/Faktiskā already use, replacing an earlier bounding-box calibration that drifted up to ~200px on the 3840 canvas.
|
||||||
- Confirmed local Monda Regular/Bold files provide interface and generated-graphic typography; weather symbols use normalized transparent image assets.
|
- Confirmed local Monda Regular/Bold files provide interface and generated-graphic typography; weather symbols use normalized transparent image assets.
|
||||||
- Release `df911f1` is deployed as immutable image `weathertool:df911f14eb8a1041822959677e09bb544ce0cdcd`; release `ef64895` remains the immediate application rollback. The next candidate adds explicit JSON API responses, Latvian workflow labels, and calibrated water-temperature exports.
|
- Release `df911f1` is deployed as immutable image `weathertool:df911f14eb8a1041822959677e09bb544ce0cdcd`; release `ef64895` remains the immediate application rollback. The next candidate adds explicit JSON API responses, Latvian workflow labels, and calibrated water-temperature exports.
|
||||||
- The isolated VPS UAT stack is running and healthy: WeatherTool is bound to `127.0.0.1:8002`, Authelia to `127.0.0.1:9091`, and PostgreSQL has no host port. Public access is routed through Cloudflare, Nginx, and Authelia.
|
- The isolated VPS UAT stack is running and healthy: WeatherTool is bound to `127.0.0.1:8002`, Authelia to `127.0.0.1:9091`, and PostgreSQL has no host port. Public access is routed through Cloudflare, Nginx, and Authelia.
|
||||||
|
|||||||
@@ -130,6 +130,10 @@ Status: pending
|
|||||||
- [x] Calibrate and visually validate independent Ūdens exports at 1920×1080 and 3840×1440 against the supplied production templates.
|
- [x] Calibrate and visually validate independent Ūdens exports at 1920×1080 and 3840×1440 against the supplied production templates.
|
||||||
- [x] Bundle the confirmed Monda Regular/Bold files and replace temporary Rubik rendering.
|
- [x] Bundle the confirmed Monda Regular/Bold files and replace temporary Rubik rendering.
|
||||||
- [ ] Perform pixel-level Monda comparison against the authoritative production masters.
|
- [ ] Perform pixel-level Monda comparison against the authoritative production masters.
|
||||||
|
- [x] Add a separate Latvian-named Brīdinājumi workspace that renders current LVĢMC warning polygons without manual tracing.
|
||||||
|
- [x] Add production border overlay artwork and feathered warning-polygon fills to Brīdinājumi.
|
||||||
|
- [x] Replace Brīdinājumi's 4-corner bounding-box projection with an affine fit calibrated against the same validated Kartes/Faktiskā city pixel positions.
|
||||||
|
- [ ] Tune Brīdinājumi feather-blur bleed at sharp coastline curves (e.g. the Gulf of Rīga indentation).
|
||||||
- [ ] Test target resolutions and real workplace display conditions.
|
- [ ] Test target resolutions and real workplace display conditions.
|
||||||
- [ ] Check keyboard navigation, contrast, focus states, and screen-reader labeling.
|
- [ ] Check keyboard navigation, contrast, focus states, and screen-reader labeling.
|
||||||
|
|
||||||
@@ -198,3 +202,6 @@ Record completed work here by date and commit after the Git workflow is establis
|
|||||||
| 2026-08-22 | `f3197bf` | Return query API payloads with an explicit JSON content type | Yes — Rocky API and browser verification; VPS deployment pending |
|
| 2026-08-22 | `f3197bf` | Return query API payloads with an explicit JSON content type | Yes — Rocky API and browser verification; VPS deployment pending |
|
||||||
| 2026-08-22 | `0608865` | Localize the operator-facing workspace names and concise workflow copy in Latvian | Yes — Rocky browser verification; VPS deployment pending |
|
| 2026-08-22 | `0608865` | Localize the operator-facing workspace names and concise workflow copy in Latvian | Yes — Rocky browser verification; VPS deployment pending |
|
||||||
| 2026-08-22 | `7f09181` | Independently calibrate both Ūdens templates and optically center Monda values using visible glyph bounds | Yes — both native-resolution PNG exports visually validated on Rocky; VPS deployment pending |
|
| 2026-08-22 | `7f09181` | Independently calibrate both Ūdens templates and optically center Monda values using visible glyph bounds | Yes — both native-resolution PNG exports visually validated on Rocky; VPS deployment pending |
|
||||||
|
| 2026-08-22 | `bc5bee1` | Add the Brīdinājumi LVĢMC warning-map workflow with metadata/polygon ingestion, day/phenomenon filtering, and manual title entry | Yes — Rocky browser verification; VPS deployment pending |
|
||||||
|
| 2026-08-22 | `13115f0` | Add production border overlay artwork and feathered warning-polygon fills to Brīdinājumi | Yes — Rocky browser verification; VPS deployment pending |
|
||||||
|
| 2026-08-22 | `4395935` | Replace Brīdinājumi's 4-corner bounding-box projection, which drifted up to ~200px on the 3840 canvas, with an affine fit calibrated against the validated Kartes/Faktiskā city pixel positions | Yes — Rocky typecheck, build, and headless-browser screenshot comparison at both native export resolutions; VPS deployment pending |
|
||||||
|
|||||||
Reference in New Issue
Block a user