- Add WanGeoStatsView (api/wan/geo/) returning country choropleth +
bubble data for WAN source IPs using IPGeoCache lat/lon
- Add wanGeoMap (420px) in dashboard between ports chart and live table:
red colour scale by country, rose bubbles sized by attempt count,
top-5 country legend
- Rewrite _geo_worker_loop to drain up to 200 queue items per cycle,
bulk DB cache check, batch API calls (100 IPs per request) instead
of 1 request per IP — fixes ip-api.com timeout pile-up under scan
volumes
- Add _geo_skip in-memory set: IPs that return no geo data get an
empty IPGeoCache placeholder saved to DB so they are never retried;
skip set also prevents re-queuing known-empty IPs during flush
- Remove _fetch_geo / _enrich_dns_geo / _enrich_wan_geo helpers
(logic consolidated into the new batch worker)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>