feat(flight-finder): implement milestone M3 - prompt migration and smoke test fixtures
This commit is contained in:
158
skills/flight-finder/examples/dfw-blq-2026-report-payload.json
Normal file
158
skills/flight-finder/examples/dfw-blq-2026-report-payload.json
Normal file
@@ -0,0 +1,158 @@
|
||||
{
|
||||
"request": {
|
||||
"tripName": "DFW ↔ BLQ flight report",
|
||||
"legs": [
|
||||
{
|
||||
"id": "outbound",
|
||||
"origin": "DFW",
|
||||
"destination": "BLQ",
|
||||
"earliest": "2026-05-30",
|
||||
"latest": "2026-06-07",
|
||||
"label": "Outbound"
|
||||
},
|
||||
{
|
||||
"id": "return-pair",
|
||||
"origin": "BLQ",
|
||||
"destination": "DFW",
|
||||
"relativeToLegId": "outbound",
|
||||
"minDaysAfter": 6,
|
||||
"maxDaysAfter": 10,
|
||||
"label": "Return for 2 adults"
|
||||
},
|
||||
{
|
||||
"id": "return-solo",
|
||||
"origin": "BLQ",
|
||||
"destination": "DFW",
|
||||
"earliest": "2026-06-28",
|
||||
"latest": "2026-07-05",
|
||||
"label": "Return for 1 adult"
|
||||
}
|
||||
],
|
||||
"passengerGroups": [
|
||||
{
|
||||
"id": "pair",
|
||||
"adults": 2,
|
||||
"label": "2 adults traveling together"
|
||||
},
|
||||
{
|
||||
"id": "solo",
|
||||
"adults": 1,
|
||||
"label": "1 adult returning separately"
|
||||
}
|
||||
],
|
||||
"legAssignments": [
|
||||
{
|
||||
"legId": "outbound",
|
||||
"passengerGroupIds": ["pair", "solo"]
|
||||
},
|
||||
{
|
||||
"legId": "return-pair",
|
||||
"passengerGroupIds": ["pair"]
|
||||
},
|
||||
{
|
||||
"legId": "return-solo",
|
||||
"passengerGroupIds": ["solo"]
|
||||
}
|
||||
],
|
||||
"recipientEmail": "stefano@fiorinis.com",
|
||||
"preferences": {
|
||||
"preferOneStop": true,
|
||||
"maxStops": 1,
|
||||
"maxLayoverHours": 6,
|
||||
"flexibleDates": true,
|
||||
"excludeAirlines": ["Turkish Airlines"],
|
||||
"excludeCountries": ["TR"],
|
||||
"requireAirlineDirectCrossCheck": true,
|
||||
"specialConstraints": [
|
||||
"Exclude itineraries operated by airlines based in Arab or Middle Eastern countries.",
|
||||
"Exclude itineraries routing through airports in Arab or Middle Eastern countries.",
|
||||
"Start from a fresh browser/session profile for this search."
|
||||
],
|
||||
"geoPricingMarket": "Thailand",
|
||||
"marketCountry": "TH",
|
||||
"normalizeCurrencyTo": "USD"
|
||||
}
|
||||
},
|
||||
"sourceFindings": [
|
||||
{
|
||||
"source": "kayak",
|
||||
"status": "viable",
|
||||
"checkedAt": "2026-03-30T21:00:00Z",
|
||||
"notes": [
|
||||
"KAYAK returned multiple one-stop DFW -> BLQ options and exposed direct-booking hints for British Airways."
|
||||
]
|
||||
},
|
||||
{
|
||||
"source": "skyscanner",
|
||||
"status": "viable",
|
||||
"checkedAt": "2026-03-30T21:05:00Z",
|
||||
"notes": [
|
||||
"Skyscanner returned one-stop and multi-stop DFW -> BLQ results with total USD pricing."
|
||||
]
|
||||
},
|
||||
{
|
||||
"source": "expedia",
|
||||
"status": "viable",
|
||||
"checkedAt": "2026-03-30T21:10:00Z",
|
||||
"notes": [
|
||||
"Expedia returned one-way DFW -> BLQ options with clear per-traveler pricing."
|
||||
]
|
||||
},
|
||||
{
|
||||
"source": "airline-direct",
|
||||
"status": "degraded",
|
||||
"checkedAt": "2026-03-30T21:15:00Z",
|
||||
"notes": [
|
||||
"United's direct booking shell loaded with the route/date context but failed to complete the search."
|
||||
]
|
||||
}
|
||||
],
|
||||
"quotes": [
|
||||
{
|
||||
"id": "kayak-outbound-ba",
|
||||
"source": "kayak",
|
||||
"legId": "outbound",
|
||||
"passengerGroupIds": ["pair", "solo"],
|
||||
"bookingLink": "https://www.kayak.com/flights/DFW-BLQ/2026-05-30?adults=3&sort=bestflight_a&fs=stops=-2",
|
||||
"itinerarySummary": "British Airways via London Heathrow",
|
||||
"airlineName": "British Airways",
|
||||
"departureTimeLocal": "10:59 PM",
|
||||
"arrivalTimeLocal": "11:45 PM +1",
|
||||
"stopsText": "1 stop",
|
||||
"layoverText": "6h 15m in London Heathrow",
|
||||
"totalDurationText": "17h 46m",
|
||||
"totalPriceUsd": 2631,
|
||||
"displayPriceUsd": "$2,631 total",
|
||||
"directBookingUrl": "https://www.britishairways.com/",
|
||||
"crossCheckStatus": "failed",
|
||||
"notes": [
|
||||
"Observed on KAYAK at $877 per traveler for 3 adults.",
|
||||
"Airline-direct cross-check remains degraded in this implementation pass."
|
||||
]
|
||||
}
|
||||
],
|
||||
"rankedOptions": [
|
||||
{
|
||||
"id": "primary-outbound",
|
||||
"title": "Best observed outbound baseline",
|
||||
"quoteIds": ["kayak-outbound-ba"],
|
||||
"totalPriceUsd": 2631,
|
||||
"rationale": "Lowest observed one-stop fare in the bounded spike while still meeting the layover constraint."
|
||||
}
|
||||
],
|
||||
"executiveSummary": [
|
||||
"The bounded implementation-pass smoke test produced a viable report payload from real DFW -> BLQ search evidence.",
|
||||
"KAYAK, Skyscanner, and Expedia all returned usable results on this machine.",
|
||||
"Direct-airline cross-checking is currently best-effort and should be reported honestly when it fails."
|
||||
],
|
||||
"reportWarnings": [
|
||||
"This smoke-test payload captures the bounded implementation-pass workflow, not the full old prompt's multi-leg optimization."
|
||||
],
|
||||
"degradedReasons": [
|
||||
"Airline direct-booking cross-check is still degraded and must be treated as best-effort in this pass."
|
||||
],
|
||||
"comparisonCurrency": "USD",
|
||||
"marketCountryUsed": "TH",
|
||||
"lastCompletedPhase": "ranking",
|
||||
"generatedAt": "2026-03-30T21:20:00Z"
|
||||
}
|
||||
74
skills/flight-finder/examples/dfw-blq-2026-request.json
Normal file
74
skills/flight-finder/examples/dfw-blq-2026-request.json
Normal file
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"tripName": "DFW ↔ BLQ flight report",
|
||||
"legs": [
|
||||
{
|
||||
"id": "outbound",
|
||||
"origin": "DFW",
|
||||
"destination": "BLQ",
|
||||
"earliest": "2026-05-30",
|
||||
"latest": "2026-06-07",
|
||||
"label": "Outbound"
|
||||
},
|
||||
{
|
||||
"id": "return-pair",
|
||||
"origin": "BLQ",
|
||||
"destination": "DFW",
|
||||
"relativeToLegId": "outbound",
|
||||
"minDaysAfter": 6,
|
||||
"maxDaysAfter": 10,
|
||||
"label": "Return for 2 adults"
|
||||
},
|
||||
{
|
||||
"id": "return-solo",
|
||||
"origin": "BLQ",
|
||||
"destination": "DFW",
|
||||
"earliest": "2026-06-28",
|
||||
"latest": "2026-07-05",
|
||||
"label": "Return for 1 adult"
|
||||
}
|
||||
],
|
||||
"passengerGroups": [
|
||||
{
|
||||
"id": "pair",
|
||||
"adults": 2,
|
||||
"label": "2 adults traveling together"
|
||||
},
|
||||
{
|
||||
"id": "solo",
|
||||
"adults": 1,
|
||||
"label": "1 adult returning separately"
|
||||
}
|
||||
],
|
||||
"legAssignments": [
|
||||
{
|
||||
"legId": "outbound",
|
||||
"passengerGroupIds": ["pair", "solo"]
|
||||
},
|
||||
{
|
||||
"legId": "return-pair",
|
||||
"passengerGroupIds": ["pair"]
|
||||
},
|
||||
{
|
||||
"legId": "return-solo",
|
||||
"passengerGroupIds": ["solo"]
|
||||
}
|
||||
],
|
||||
"recipientEmail": "stefano@fiorinis.com",
|
||||
"preferences": {
|
||||
"preferOneStop": true,
|
||||
"maxStops": 1,
|
||||
"maxLayoverHours": 6,
|
||||
"flexibleDates": true,
|
||||
"excludeAirlines": ["Turkish Airlines"],
|
||||
"excludeCountries": ["TR"],
|
||||
"requireAirlineDirectCrossCheck": true,
|
||||
"specialConstraints": [
|
||||
"Exclude itineraries operated by airlines based in Arab or Middle Eastern countries.",
|
||||
"Exclude itineraries routing through airports in Arab or Middle Eastern countries.",
|
||||
"Start from a fresh browser/session profile for this search."
|
||||
],
|
||||
"geoPricingMarket": "Thailand",
|
||||
"marketCountry": "TH",
|
||||
"normalizeCurrencyTo": "USD"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user