feat(military): resolve ICAO→IATA callsign for Wingbits flights (#1993)

* feat(military): resolve ICAO→IATA callsign for Wingbits flights

Server resolves ICAO airline prefix (e.g. UAE→EK) at response time using a
static ~100-entry lookup table, populating new proto fields callsign_iata and
airline_name. Schedule lookup falls back to the IATA callsign inside the same
cachedFetchJson callback to recover schedules that ECS only indexes under the
commercial callsign. Callsigns are normalized to uppercase before caching to
prevent duplicate cache keys from mixed-case ECS responses. Client popup shows
the IATA callsign and airline name above the route section.

* fix(military): correct airline data errors and add handler tests

Remove BOG (airport code, not airline ICAO), remove TVS/NOZ (incorrect
Transavia mappings), add TRA→HV as correct Transavia ICAO code. Remove
non-standard TKJ duplicate of THY. Add handler integration tests that
verify the IATA schedule fallback path via globalThis.fetch mock, plus
guards for empty/invalid icao24 inputs.

* docs(military): add refresh comment to airline-codes header

* fix(military): correct TGW and WIF airline mappings

TGW is Scoot (TR), not Oman Air — add OMA for Oman Air (WY).
WIF is Wideroe (WF), not Wizz Air Abu Dhabi — add WAD for Wizz Air Abu Dhabi (W4).
Both errors caused wrong popup labels and broken schedule fallback lookups.

* fix(military): correct AUB and IBK airline mappings

Austrian Airlines uses AUA (not AUB), IATA OS.
Iberia Express uses IBS (not IBK), IATA I2 (not NT).
Both errors caused toIataCallsign() to return null for live traffic,
leaving popup header empty and skipping schedule fallback.

* fix(military): remove/correct five more bad airline ICAO entries

Remove BCS (European Air Transport cargo, not OpenSkies).
Remove SHI (Seoul Air International, no commercial IATA).
Fix SHY: Sky Airlines Turkey (ZY), not Uzbekistan Airways.
Remove WAD (Waddington RAF training unit, not Wizz Air Abu Dhabi).
TGW/Scoot kept as-is — Scoot is the current brand name since 2012.

* fix(military): fix SWG/WestJet mapping, add ASH/Mesa

SWG is Sunwing (WG), not WestJet — add WJA for WestJet (WS).
ASH is Mesa Airlines (YV) — was removed as SHI but correct ICAO never added.
This commit is contained in:
Elie Habib
2026-03-21 17:15:29 +04:00
committed by GitHub
parent 77aee7225c
commit 2dcbf80e4a
9 changed files with 377 additions and 4 deletions

File diff suppressed because one or more lines are too long