New serving model: city_venue_locations joins dim_venues + dim_cities to expose lat/lon/court_count per venue for the city dot map endpoint. pseo_city_costs_de.sql: add c.lat, c.lon so city-cost articles have city coordinates for the #city-map data attributes. city-cost-de.md.jinja: add #city-map div (both DE and EN sections) after the stats strip. Leaflet init handled by article_detail.html. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
serving
Analytics-ready views consumed by the web app and programmatic SEO.
Query these from analytics.py via DuckDB read-only connection.
Naming convention: serving.<purpose> (e.g. serving.city_market_profile)