Maurice
54693474f1
fix(atlas): stop counting a connection airport as a country visited
...
The role IN ('from','to') filter from #1486 is correct and still in place, but it
cannot see the case this issue actually reports. Joining AirTrail legs into one
booking with a layover stop is opt-in, so legs imported separately store the hub
as the legitimate `to` of one booking and the `from` of the next, which no role
filter can tell apart from two real arrivals.
Pair them where the countries are counted instead: an arrival and a departure at
the same airport, in different bookings of the same trip, within 24 h of each
other are a connection, and neither endpoint counts as reached. 24 h is the same
window the importer already uses to chain same-PNR legs. Doing it on the read side
means the databases that already hold these flights heal on the next request.
Only flights pair, and never cancelled ones, so a rental car picked up at the
airport still counts its country (#1366 ). A booking that returns to where the
chain started is a return flight, and that check compares distance rather than
airport identity, so flying home into a different airport of the same metro area
does not erase the country you spent the day in. A country with a place logged in
it, or marked by hand, is untouched.
Closes #1535
2026-08-17 14:48:23 +02:00
..
2026-08-07 21:07:14 +02:00
2026-08-07 22:18:14 +02:00
2026-08-10 19:54:46 +02:00
2026-08-07 16:00:12 +02:00
2026-08-15 16:42:27 +02:00
2026-08-07 22:18:14 +02:00
2026-08-07 20:27:19 +02:00
2026-08-07 19:58:12 +02:00
2026-08-17 14:48:23 +02:00
2026-08-11 20:28:49 +02:00
2026-08-17 14:48:23 +02:00
2026-08-07 21:47:21 +02:00
2026-08-13 14:06:35 +02:00
2026-08-13 14:06:35 +02:00
2026-08-10 17:08:54 +02:00
2026-06-16 22:22:45 +02:00
2026-08-10 19:54:46 +02:00
2026-08-15 16:42:27 +02:00
2026-08-15 16:42:27 +02:00
2026-08-09 20:54:39 +02:00
2026-08-10 19:54:46 +02:00
2026-08-10 19:54:46 +02:00
2026-08-15 16:42:27 +02:00
2026-08-11 16:42:49 +02:00
2026-06-16 22:22:45 +02:00
2026-07-25 15:12:38 +02:00
2026-08-16 23:17:50 +02:00
2026-08-16 23:17:50 +02:00
2026-08-17 14:48:23 +02:00
2026-08-13 14:06:35 +02:00
2026-08-17 14:48:23 +02:00
2026-07-27 22:34:41 +02:00
2026-08-17 14:48:23 +02:00
2026-08-07 18:01:24 +02:00
2026-08-17 14:48:23 +02:00
2026-08-07 15:14:14 +02:00
2026-08-15 22:48:16 +02:00
2026-08-10 22:16:22 +02:00
2026-08-15 16:42:27 +02:00
2026-08-10 21:33:48 +02:00
2026-08-09 19:46:00 +02:00
2026-08-13 14:06:35 +02:00
2026-08-16 23:17:50 +02:00
2026-08-16 23:17:50 +02:00
2026-08-10 22:02:54 +02:00
2026-08-13 16:10:25 +02:00
2026-08-10 19:54:46 +02:00
2026-07-26 15:28:55 +02:00
2026-08-11 21:13:32 +02:00
2026-08-10 19:54:46 +02:00
2026-08-12 14:14:37 +02:00
2026-08-09 19:46:00 +02:00
2026-08-10 19:54:46 +02:00
2026-08-07 18:42:53 +02:00
2026-08-13 14:06:35 +02:00
2026-06-16 22:22:45 +02:00
2026-08-10 21:49:27 +02:00
2026-07-25 18:14:37 +02:00
2026-07-25 18:14:37 +02:00
2026-08-11 22:14:12 +02:00
2026-08-11 22:14:12 +02:00
2026-08-11 09:58:37 +02:00
2026-08-07 18:42:53 +02:00
2026-08-11 22:23:51 +02:00
2026-06-16 22:22:45 +02:00
2026-08-11 16:42:49 +02:00
2026-08-11 22:23:51 +02:00
2026-08-11 11:15:32 +02:00
2026-08-10 19:54:46 +02:00
2026-08-10 19:54:46 +02:00
2026-08-11 09:58:37 +02:00
2026-08-12 12:45:29 +02:00
2026-06-16 22:22:45 +02:00
2026-08-10 17:08:54 +02:00
2026-08-12 15:14:50 +02:00
2026-08-08 23:25:57 +02:00
2026-08-10 17:08:54 +02:00
2026-08-15 16:42:27 +02:00
2026-08-15 16:42:27 +02:00
2026-08-15 16:42:27 +02:00
2026-08-15 16:42:27 +02:00
2026-08-15 16:42:27 +02:00
2026-08-14 23:42:51 +02:00
2026-08-10 12:24:15 +02:00
2026-08-10 12:24:15 +02:00
2026-08-17 14:48:23 +02:00
2026-08-11 22:44:20 +02:00
2026-08-11 23:11:34 +02:00
2026-08-11 23:19:39 +02:00
2026-08-08 22:27:56 +02:00
2026-08-10 19:54:46 +02:00
2026-08-08 22:27:56 +02:00
2026-08-10 13:38:26 +02:00
2026-08-08 12:09:56 +02:00
2026-08-08 12:09:56 +02:00
2026-08-02 11:36:36 +02:00
2026-08-08 12:09:56 +02:00
2026-08-11 21:13:32 +02:00
2026-08-11 22:44:20 +02:00
2026-08-10 19:54:46 +02:00
2026-08-12 17:43:22 +02:00
2026-08-15 16:42:27 +02:00
2026-08-15 22:48:03 +02:00
2026-08-15 22:48:03 +02:00
2026-08-09 19:13:21 +02:00
2026-08-16 23:17:50 +02:00
2026-08-11 16:42:49 +02:00
2026-08-11 23:11:34 +02:00
2026-08-10 17:08:54 +02:00
2026-08-10 17:08:54 +02:00
2026-08-10 19:54:46 +02:00
2026-08-10 12:24:15 +02:00
2026-08-10 19:54:46 +02:00
2026-08-10 19:54:46 +02:00
2026-08-16 21:57:21 +02:00
2026-07-30 17:07:12 +02:00
2026-08-12 17:43:22 +02:00
2026-08-16 23:17:50 +02:00
2026-08-11 23:01:19 +02:00
2026-08-11 09:58:37 +02:00
2026-08-10 19:54:46 +02:00
2026-08-09 22:43:05 +02:00
2026-08-10 21:49:27 +02:00
2026-08-11 21:13:32 +02:00
2026-08-14 13:34:13 +02:00
2026-08-10 13:38:26 +02:00
2026-08-15 22:48:16 +02:00
2026-08-15 16:42:27 +02:00
2026-08-07 15:14:14 +02:00
2026-08-11 11:15:32 +02:00
2026-08-07 20:27:19 +02:00
2026-08-10 21:49:27 +02:00
2026-06-16 22:22:45 +02:00
2026-08-15 16:42:27 +02:00
2026-08-10 19:54:46 +02:00
2026-07-26 15:28:55 +02:00
2026-08-08 22:27:56 +02:00
2026-08-09 19:13:21 +02:00
2026-08-16 23:17:50 +02:00
2026-08-10 19:54:46 +02:00
2026-08-01 12:45:35 +02:00
2026-07-29 21:39:51 +02:00
2026-08-17 14:48:23 +02:00
2026-08-10 22:02:54 +02:00
2026-08-11 09:58:37 +02:00
2026-08-09 19:13:21 +02:00
2026-08-10 19:54:46 +02:00
2026-08-10 13:38:26 +02:00
2026-08-11 16:42:49 +02:00
2026-08-10 13:38:26 +02:00
2026-08-11 21:13:32 +02:00
2026-08-10 19:54:46 +02:00
2026-08-14 22:09:21 +02:00
2026-08-10 21:49:27 +02:00
2026-08-08 22:27:56 +02:00
2026-08-11 16:42:49 +02:00
2026-08-17 14:48:23 +02:00
2026-08-12 00:38:41 +02:00
2026-08-12 00:38:41 +02:00
2026-07-26 14:55:13 +02:00
2026-08-15 16:42:27 +02:00
2026-08-07 21:47:21 +02:00
2026-08-08 11:14:24 +02:00
2026-08-08 11:14:24 +02:00
2026-08-10 13:38:26 +02:00
2026-08-11 09:58:37 +02:00
2026-06-16 22:22:45 +02:00