Maurice
f6fd2722d0
feat(tours): take a tour over from another trip, server and contract (LIB-02)
...
GET /api/tours/library lists the tours of every trip the user owns or is a
member of, with the trip each is in and how many tours each trip holds, to
choose one to take over into the trip being planned. It is narrowed by a
part of the name (matched ignoring case, a "%" or "_" just a character), a
type or one trip, and the asking trip can be left out; up to 100 tours, and
the answer says when there were more. GET /api/tours/library/:placeId
previews one: its facts and its line thinned to 400 points, its ends kept.
Neither is trip-scoped, so every answer is bounded by the user's own trips,
read anew each call: a tour of a trip out of reach is "not found", nothing
hints that it exists. Measures stay null where the tour has none.
POST /api/trips/:tripId/tours/take-over copies one into this trip, which the
guard checks with 'place_edit'; the source trip is checked against the
user's trips as they are at that moment, and the source is read again inside
the write. The copy is a tour of its own: its line, measures, settings and
control points, without days, without its stops' links to places of the
other trip and without the obstacle decisions taken there; it keeps the
import record of its line. A copy that fails leaves nothing behind.
Where it came from is kept as text (tours.taken_over_from_trip_title and
taken_over_from_tour_name, migration 045100), not as a pointer, and read
back in the provenance as takenOverFrom; a copy of such a copy names it too.
The in-trip copy (P2C-07) and the take-over share one copy routine.
MCP: list_tour_library and take_over_tour, over the same service and
checks. The repository tests follow the hiking preferences column of MF-08.
2026-10-19 14:53:08 +02:00
..
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 20:16:13 +02:00
2026-10-14 13:24:27 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 13:21:52 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 12:32:24 +02:00
2026-10-18 13:21:50 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 22:35:33 +00:00
2026-10-19 11:29:29 +02:00
2026-10-10 21:23:37 +02:00
2026-10-19 09:42:13 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-16 23:24:20 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 20:16:07 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-19 13:07:36 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 23:37:19 +02:00
2026-10-19 13:07:36 +02:00
2026-10-14 13:24:27 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 23:37:19 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-08 18:46:52 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 17:06:52 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 19:56:44 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 20:02:09 +02:00
2026-10-12 14:28:06 +02:00
2026-10-18 20:02:09 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 12:32:24 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-12 21:13:57 +00:00
2026-10-12 21:13:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 22:53:59 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 22:53:59 +02:00
2026-10-12 13:15:17 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 20:16:06 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-14 20:21:37 +02:00
2026-10-14 20:21:37 +02:00
2026-10-14 22:15:45 +02:00
2026-10-14 20:21:38 +02:00
2026-10-10 21:23:37 +02:00
2026-10-14 13:24:27 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 20:16:10 +02:00
2026-10-18 13:21:53 +02:00
2026-10-10 20:16:04 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 20:53:08 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 20:53:08 +02:00
2026-10-10 20:16:04 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 20:53:08 +02:00
2026-10-12 21:13:58 +00:00
2026-10-10 20:16:04 +02:00
2026-10-12 21:13:58 +00:00
2026-10-18 13:21:52 +02:00
2026-10-12 20:53:08 +02:00
2026-10-12 21:13:58 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 15:59:33 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 22:05:44 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 17:06:58 +02:00
2026-10-12 19:56:44 +00:00
2026-10-10 22:53:59 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 17:06:52 +02:00
2026-10-10 23:37:19 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 23:37:19 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 20:16:10 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-12 19:56:44 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 16:05:17 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-19 14:53:08 +02:00
2026-10-19 10:22:04 +02:00
2026-10-19 10:22:04 +02:00
2026-10-17 00:29:18 +00:00
2026-10-19 10:52:26 +02:00
2026-10-17 02:07:22 +00:00
2026-10-17 02:31:01 +00:00
2026-10-19 14:53:08 +02:00
2026-10-16 23:14:52 +02:00
2026-10-19 14:53:08 +02:00
2026-10-17 00:29:18 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 13:21:52 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 16:39:17 +02:00
2026-10-18 20:02:09 +02:00
2026-10-18 20:02:09 +02:00
2026-10-10 21:23:37 +02:00
2026-10-18 20:02:09 +02:00
2026-10-10 20:16:06 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 21:13:57 +00:00
2026-10-12 21:13:57 +00:00
2026-10-18 20:02:09 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 17:06:52 +02:00
2026-10-12 14:12:36 +02:00
2026-10-10 21:23:37 +02:00
2026-10-12 19:56:44 +00:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-15 20:15:17 +02:00
2026-10-15 20:15:17 +02:00
2026-10-16 23:44:58 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00
2026-10-10 21:23:37 +02:00