Thermograph monorepo: graded-climate API + SSR frontend + infra, domain-specific containerized deploys
api_suggest carried ~80 lines of ranking policy — the exactness-boosted scoring, local/upstream blending with dedupe, and the token-respelling correction loop — all consuming the match: prefix/fuzzy vocabulary that places.py produces. Producer and consumer now live together: places.suggest(q, upstream, limit) implements the whole policy with the upstream geocoder lookup injected as a callable, so places stays free of the fetch layer and the policy is testable without FastAPI. The endpoint is the HTTP shim: call places.suggest, map the nothing-at-all-to-serve failure to a 502. Behavior unchanged. Policy tests: upstream skipped when the local answer convinces, blend + dedupe, the exactness boost (a hamlet spelled like the typo can't beat Seattle), single-typo queries answered by the fuzzy matcher without a correction, the correction path verified via the upstream probe, upstream failure degrading to local results, and the terminal error-propagation case. |
||
|---|---|---|
| tests | ||
| app.py | ||
| audit.py | ||
| climate.py | ||
| grading.py | ||
| grid.py | ||
| migrate.py | ||
| places.py | ||
| requirements-dev.txt | ||
| requirements.txt | ||
| store.py | ||
| views.py | ||