mirror of
https://github.com/BigBodyCobain/Shadowbroker.git
synced 2026-06-29 17:30:16 +02:00
8c4619179e
Parse common position, OOOI, performance, and ops formats across major carriers while hiding VDL binary fragments and duplicate frames from the dossier feed. Co-authored-by: Cursor <cursoragent@cursor.com>
183 lines
6.2 KiB
Python
183 lines
6.2 KiB
Python
from services.fetchers.acars_summarize import prepare_datalink_display, summarize_datalink_message
|
|
|
|
# --- Southwest (existing) ---
|
|
|
|
|
|
def test_summarize_track_report():
|
|
text = """++86501,N8997Q,B7378MAX,260620,WN3743,KMSP,KMDW,0496,SMX34-2502-F320
|
|
6
|
|
N4432.0,W09305.6,201041,15193,-08.3,310,044,CL,00000,0,"""
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="vdl")
|
|
assert meta["kind"] == "track"
|
|
assert "WN3743" in meta["summary"]
|
|
assert "KMSP→KMDW" in meta["summary"]
|
|
|
|
|
|
def test_summarize_sw_performance_cruise():
|
|
text = """72740,7852,B737-700,260624,WN0120,KABQ,KDEN,1986,SW2501
|
|
18.45.14,CR,1575,28981,280.0,.729,-32.3,-06.5,N3601.3,W10655.7,131240
|
|
0.48,FHP,AIR
|
|
SIN,-1.42 0.30 0.29"""
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="vdl")
|
|
assert meta["kind"] == "engine_health"
|
|
assert "WN0120" in meta["summary"]
|
|
assert "cruise" in meta["summary"]
|
|
|
|
|
|
def test_summarize_sw_climb_performance():
|
|
text = """05201,7852,B737-700,260624,WN0120,KABQ,KDEN,1986,SW2501
|
|
18.38.08,CL,1149,15631,257.0,.520,000.0,014.5,N3515.4,W10649.4,132800
|
|
001.40,001,4100,FLAPS-UP"""
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="vdl")
|
|
assert meta["kind"] == "climb_perf"
|
|
assert "climb" in meta["summary"]
|
|
|
|
|
|
def test_summarize_trajectory():
|
|
text = """76401
|
|
02E24KABQKDEN
|
|
N35112W10679318361096P014343008G000022::I0:9W
|
|
N35195W10681118371370P006337009G000022::Q0OXW"""
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="vdl")
|
|
assert meta["kind"] == "trajectory"
|
|
assert "KABQ→KDEN" in meta["summary"]
|
|
|
|
|
|
def test_fragment_hidden():
|
|
text = "0000000,00000000,00000000\n18.38.23,16395,250.2,.510,01.07,01.04,00,00000000"
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="vdl")
|
|
assert meta["kind"] == "fragment"
|
|
assert meta["hidden"] is True
|
|
|
|
|
|
def test_vdl_binary_hidden():
|
|
text = "014F63N\n)AJQZ)LC0Z0IP-M7O,ZHN3-M,73ZO,UU-ZOS1Z7PPZMSN1ZN"
|
|
meta = summarize_datalink_message(label="37", text=text, source_type="vdl")
|
|
assert meta["hidden"] is True
|
|
|
|
|
|
# --- United / Delta / American ---
|
|
|
|
|
|
def test_united_free_text_position():
|
|
text = "POS N40.123 W074.456 FL350 GS450 1425Z"
|
|
meta = summarize_datalink_message(label="Q0", text=text, source_type="vdl")
|
|
assert meta["kind"] == "position"
|
|
assert "FL350" in meta["summary"]
|
|
|
|
|
|
def test_delta_oooi_out():
|
|
text = "OUT 1425 12JAN KATL"
|
|
meta = summarize_datalink_message(label="00", text=text, source_type="acars")
|
|
assert meta["kind"] == "oooi"
|
|
assert "OUT 1425" in meta["summary"]
|
|
|
|
|
|
def test_american_fi_block():
|
|
text = "FI AA100/AN N100AA/DA KDFW/AA KLAX OUT 1832 OFF 1845"
|
|
meta = summarize_datalink_message(label="44", text=text, source_type="acars")
|
|
assert "AA100" in meta["summary"]
|
|
assert "KDFW→KLAX" in meta["summary"]
|
|
|
|
|
|
def test_united_performance_a320():
|
|
text = """88401,4521,A320-200,260624,UA1234,KORD,KDEN,1200,UA2501
|
|
19.10.22,CR,2200,35000,450.0,.820,-45.0,-02.0,N3950.1,W10440.2,125000"""
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="vdl")
|
|
assert meta["kind"] == "performance"
|
|
assert "UA1234" in meta["summary"]
|
|
assert "KORD→KDEN" in meta["summary"]
|
|
|
|
|
|
# --- International ---
|
|
|
|
|
|
def test_british_airways_engine():
|
|
text = "ENG1 N1 92.5 N2 95.1 EGT 512 FF 2850"
|
|
meta = summarize_datalink_message(label="B1", text=text, source_type="satcom")
|
|
assert meta["kind"] == "engine"
|
|
|
|
|
|
def test_qantas_fi_position():
|
|
text = "FI QF9/AN VH-OQA/DA YSSY/AD EGLL POSN32249E045047,,082806,380,DEBNI"
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="acars")
|
|
assert meta["kind"] == "position"
|
|
assert "QF9" in meta["summary"]
|
|
assert "YSSY→EGLL" in meta["summary"]
|
|
|
|
|
|
def test_lufthansa_weather():
|
|
text = "WX 250/045 SAT -42 TB MOD EDDF"
|
|
meta = summarize_datalink_message(label="80", text=text, source_type="acars")
|
|
assert meta["kind"] == "weather"
|
|
assert "EDDF" in meta["summary"]
|
|
|
|
|
|
def test_air_france_request():
|
|
text = "REQUEST FL370 DUE TURB"
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="vdl")
|
|
assert meta["kind"] == "request"
|
|
assert "FL370" in meta["summary"]
|
|
|
|
|
|
# --- Cargo / military ---
|
|
|
|
|
|
def test_fedex_flight():
|
|
text = "++86501,N123FE,B763,260624,FDX1544,KMEM,KORD,0498,SMX34"
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="vdl")
|
|
assert meta["kind"] == "track"
|
|
assert "FDX1544" in meta["summary"]
|
|
|
|
|
|
def test_military_rch():
|
|
text = "POSN3840.5 W07720.1 FL280 RCH123 KADW KDMA"
|
|
meta = summarize_datalink_message(label="Q0", text=text, source_type="acars")
|
|
assert "RCH123" in meta["summary"]
|
|
|
|
|
|
# --- Ops / misc ---
|
|
|
|
|
|
def test_flight_plan():
|
|
text = "FPN/RI:DA:KJFK:AA:EGLL..MERIT:D:MERIT"
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="vdl")
|
|
assert meta["kind"] == "flight_plan"
|
|
assert "KJFK→EGLL" in meta["summary"]
|
|
|
|
|
|
def test_departure_report():
|
|
text = "DEP FI DL456/DA KATL/AD KLAX OUT 1205"
|
|
meta = summarize_datalink_message(label="40", text=text, source_type="acars")
|
|
assert meta["kind"] == "dep"
|
|
assert "DL456" in meta["summary"]
|
|
|
|
|
|
def test_pirep():
|
|
text = "#CFB/PIREP MOD TURB FL280 N3845 W09030"
|
|
meta = summarize_datalink_message(label="H1", text=text, source_type="acars")
|
|
assert meta["kind"] == "pirep"
|
|
|
|
|
|
def test_prepare_filters_hidden_and_dedupes():
|
|
messages = [
|
|
{"id": 1, "label": "H1", "text": "POSN35259W106517,KABQ,KDEN", "source_type": "vdl"},
|
|
{"id": 2, "label": "H1", "text": "0000000,00000000,00000000", "source_type": "vdl"},
|
|
{"id": 3, "label": "37", "text": "014F63N\n)AJQZ)LC0Z", "source_type": "vdl"},
|
|
{
|
|
"id": 4,
|
|
"label": "H1",
|
|
"text": "72740,7852,B737-700,260624,WN0120,KABQ,KDEN\n18.45.14,CR,1575,28981",
|
|
"source_type": "vdl",
|
|
},
|
|
{
|
|
"id": 5,
|
|
"label": "H1",
|
|
"text": "72740,7852,B737-700,260624,WN0120,KABQ,KDEN\n18.45.14,CR,1575,28981",
|
|
"source_type": "vdl",
|
|
},
|
|
]
|
|
display = prepare_datalink_display(messages)
|
|
assert display["hidden_count"] == 3
|
|
assert len(display["messages"]) == 2
|