69a5260e5f
ARCHITECTURE.md, PRODUCT_WORKFLOWS.md, DEVELOPMENT_AND_STAGING.md, and README.md still described the removed synthetic-seed staging setup and Ūdens as pure manual entry. Updates this session (open-data station ingestion, the scheduler split, water-temperature auto-populate) weren't reflected outside UPDATE_ROADMAP.md's changelog.
43 lines
6.0 KiB
Markdown
43 lines
6.0 KiB
Markdown
# WeatherTool project documentation
|
||
|
||
This directory contains the working documentation for the WeatherTool modernization effort. The repository-root `README.md` is preserved as the original project overview; these documents describe the reviewed code, current staging environment, and changes being developed.
|
||
|
||
## Current status
|
||
|
||
- Windows is restricted to source editing, review, and Git operations. Rocky is the sole compile, build, development-runtime, and test environment. The Ubuntu VPS is a deployment target only.
|
||
- A production-like staging copy runs through Docker Compose on Rocky Linux at `http://192.168.1.101:9190`.
|
||
- Staging ingests real LVĢMC station and water-temperature observations from the free `data.gov.lv` open-data feeds; synthetic data generation was removed once real ingestion was verified. The private LVGMC FTP feed and DMI HARMONIE forecast feed still exist in code but stay gated behind `ENABLE_LEGACY_PROVIDER_JOBS` (default off) pending real credentials.
|
||
- The safe scheduled jobs (open-data station ingestion, GRIB cleanup) run in staging; the legacy FTP/HARMONIE jobs stay off by default so placeholder credentials can't crash-loop the app.
|
||
- 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**, **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.
|
||
- **Ū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.
|
||
- Release `6185dbf` is deployed as immutable image `weathertool:6185dbfdb0752db7d715f1061d74baab3c43122e`; release `b5150ab` remains the immediate application rollback. This release hardens LVĢMC warning fetching (bounded retry during upstream outages, per-warning fetch isolation, a CKAN filter verified against the live API, and visible logging for a previously-silent vertex-order fallback) on top of the full Brīdinājumi workspace, JSON API, Latvian workflow labels, and calibrated water-temperature work.
|
||
- 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.
|
||
- Cloudflare delegation is active, strict origin TLS covers only `laikapstak.li` and `auth.laikapstak.li`, and the public Nginx/Authelia login flow is operational without changing the existing HOP site.
|
||
- The VPS database contains a deliberately limited 14-day, 34-city synthetic dataset for newsroom visual testing. It must be cleared before authorized real-provider ingestion begins.
|
||
- Approved 1920×1080 and 3840×1440 PNG production bases are now the rendering source for Faktiskā and Ūdens temperatūra; code draws only the changing values, selected weather symbols, and wind data over those fixed newsroom graphics.
|
||
- Browser branding assets and Latvian Open Graph/Twitter metadata are included for favicon, Apple home-screen icon, and link-preview support. Public crawler access still depends on the Nginx/Authelia policy used for the metadata and preview image.
|
||
- Browser verification is complete for the deployed `6185dbf` release, including Brīdinājumi against real live LVĢMC data (a genuinely severe live wind warning tested the hardened fetch path end to end). Newsroom testers will be given the domain first, without walkthrough, to see how intuitive the workflow is before any guidance is provided.
|
||
- Frontend dependency maintenance is complete: Solid runtime and Vite tooling were updated, obsolete packages were removed, TypeScript checking was added, and a clean Rocky `npm ci`, typecheck, production build, full audit, and production-only audit all pass with zero known vulnerabilities.
|
||
- This is not yet approved or hardened for workplace production.
|
||
|
||
## Documents
|
||
|
||
- [Architecture and data flow](ARCHITECTURE.md) — components, data sources, data flow, and repository layout.
|
||
- [Development and staging](DEVELOPMENT_AND_STAGING.md) — Windows source/Git workflow, Rocky development and verification, VPS deployment, synthetic data, and rollback.
|
||
- [Product workflows](PRODUCT_WORKFLOWS.md) — the intended purpose and current status of each visible workspace.
|
||
- [Update roadmap](UPDATE_ROADMAP.md) — phased technical, security, dependency, testing, and UI work.
|
||
- [Third-party notices](THIRD_PARTY_NOTICES.md) — licenses and attribution for adapted interface components.
|
||
- [Temporary VPS staging plan](VPS_STAGING_PLAN.md) — isolation, authentication, prepared deployment bundle, release, backup, verification, and rollback model for external user testing.
|
||
|
||
## Documentation rules
|
||
|
||
1. Do not put passwords, API keys, workplace URLs, or production data in Git.
|
||
2. Document the behavior that exists separately from behavior that is proposed.
|
||
3. Update these documents in the same commit when a change alters deployment, data flow, or a user workflow.
|
||
4. Keep synthetic/development instructions clearly distinguished from workplace production procedures.
|
||
5. Preserve established Latvian names in operator-facing workspaces and production files even when development notes are written in English.
|