thermograph/templates
Emi Griffith aec64b4058 Add a climate-score page from recent-vs-baseline percentile divergence (#196)
Score how far a location's last 6 years have drifted from its full 45-year
record. For each metric and percentile category (p10/p25/p50/p75/p90), the
recent-years value is placed on the baseline distribution and the gap from the
expected percentile is the divergence — unit-free, so metrics compare directly.
Scored per meteorological season plus annual, weighted into per-metric and
overall scores (temps, humidity and feels-like weighted heaviest).

- backend/scoring.py: divergence math, seasonal slicing, precip zero-inflation
  split (wet-day frequency + amount), tier mapping onto the existing temp scale.
- climate.py: derive a wet-bulb column (Stull 2011) at the read boundary, before
  the humidity column is converted to absolute — via a shared _derive_metrics
  wrapper at all four read sites.
- api/v2/score endpoint + build_score payload, cached on the history token with
  a scoring-version key.
- frontend score page: overall hero, per-metric cards, by-season chips, and a
  button-revealed summary (sentences + metrics×season table + per-percentile
  detail). Score nav link across all headers.
- Tests for the scoring math, wet-bulb formula, payload shape and route.
2026-07-19 23:02:33 +00:00
..
about.html.j2 Give climate/city/record pages full header parity + working °F/°C (#124) 2026-07-16 17:48:30 +00:00
base.html.j2 Add a climate-score page from recent-vs-baseline percentile divergence (#196) 2026-07-19 23:02:33 +00:00
city.html.j2 Render every percentile through one rule (#186) 2026-07-18 09:08:28 +00:00
glossary.html.j2 SEO: crawlable programmatic climate pages + technical hygiene (#96) 2026-07-15 23:53:11 +00:00
glossary_term.html.j2 SEO: crawlable programmatic climate pages + technical hygiene (#96) 2026-07-15 23:53:11 +00:00
home.html.j2 Stop the records strip showing stale readings as "right now" (#185) 2026-07-18 08:58:34 +00:00
hub.html.j2 Climate hub: client-side search + alphabetical results (#110) 2026-07-16 04:44:18 +00:00
month.html.j2 Mobile hamburger nav; crisp SVG logo; month travel-note callout (#117) 2026-07-16 05:42:59 +00:00
privacy.html.j2 Rebuild the homepage as a distribution landing; add an SMTP seam (#178) 2026-07-18 07:39:47 +00:00
records.html.j2 Give climate/city/record pages full header parity + working °F/°C (#124) 2026-07-16 17:48:30 +00:00