mirror of
https://github.com/koala73/worldmonitor.git
synced 2026-04-27 18:07:22 +02:00
feat(military): Wingbits live flight details on click (#1816)
* feat(military): add Wingbits live flight details popup
Add click-to-details popup for military flights on both map and globe views,
enriched with live data from the Wingbits ECS network.
- New proto: GetWingbitsLiveFlight RPC proxies ecs-api.wingbits.com/v1/flights/{icao24}
- Server handler caches live position at 30s TTL via Redis
- MapPopup: show registration, model, climb rate, enriched fields in flight popup
- MapPopup: async loadWingbitsLiveFlight() updates popup with live Wingbits data
- DeckGLMap: trigger Wingbits enrichment on military flight click
- GlobeMap: add full popup on flight click (previously tooltip-only)
* fix: add cache tier for get-wingbits-live-flight route
* feat: extend Wingbits live popup to civilian aircraft positions layer
* fix(wingbits): SSRF guard, feature flag, and indentation fixes
- Validate ICAO24 against /^[0-9a-f]{6}$/ before URL interpolation (SSRF)
- Add isFeatureAvailable('wingbitsEnrichment') guard to getWingbitsLiveFlight
- Gate loading placeholder on feature flag to avoid flicker for unconfigured instances
- Fix renderGdeltArticle and vesselData.clear() indentation
* fix(wingbits): no-store CDN tier + throw on transient ECS errors
- Move get-wingbits-live-flight from fast (s-maxage=300/600) to no-store;
Redis 30s TTL is the only cache — CDN must not hold stale live positions.
Matches the pattern used by track-aircraft and vessel-snapshot.
- In fetchWingbitsLiveFlight, throw on non-404 errors (429, 5xx) so
cachedFetchJson does not store transient failures as NEG_SENTINEL.
Only 404 (aircraft unknown to Wingbits) is a genuine cacheable miss.
This commit is contained in:
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user