mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-20 14:06:27 +00:00
11a8d1b4d1
POST /api/trips/:tripId/tours/poi-search looks for what a hike or a paddle tour stops for along a line: viewpoints, peaks, shelters, drinking water, food, toilets, picnic spots, campsites and sights, and on the water slipways and boat rental. The line comes in the body, so a draft not yet saved can be searched, thinned to at most 1000 points; the corridor is 50 m to 2 km wide. The line is cut into stretches as the road trip's corridor search does, each searched through the map search (the TREK places index first, OpenStreetMap after), three at a time; a long line is searched along its first twelve stretches and the answer says so (capped). The places kept lie within the corridor of the line itself, each once, nearest the start first, up to 60, each with its source, kind, address, website, phone and opening hours as the source has them, its distance straight across to the line (distance_m, never called a detour) and how far along it lies. A stretch that fails leaves the others' places and marks the answer partial; a cut answer is truncated. Nothing is written. It is a read, so anyone who sees the trip may ask. The map search's OSM filters gain those outdoor categories; the explore pill does not offer them. MCP: search_tour_pois, along a saved tour's line.
141 lines
6.0 KiB
TypeScript
141 lines
6.0 KiB
TypeScript
/**
|
|
* @trek/shared — single source of truth for TREK's API contracts.
|
|
*
|
|
* Zod schemas defined here are consumed by BOTH the server (validation +
|
|
* inferred DTO types) and the client (typed requests/responses). A route is
|
|
* only considered "migrated" once its contract lives in this package.
|
|
*
|
|
* Layout: one folder per domain (e.g. src/trip/trip.schema.ts), plus the
|
|
* domain-agnostic primitives below. See the board card "Module blueprint".
|
|
*/
|
|
export * from './common/primitives.schema';
|
|
export * from './common/pagination.schema';
|
|
export * from './common/compare';
|
|
|
|
// Domain contracts
|
|
export * from './weather/weather.schema';
|
|
export * from './weather/wind.schema';
|
|
export * from './paddle/paddle-obstacles.schema';
|
|
export * from './paddle/paddle-route-relation';
|
|
export * from './paddle/paddle-regions.schema';
|
|
export * from './paddle/paddle-route.schema';
|
|
export * from './public-api/public-api.schema';
|
|
export * from './airport/airport.schema';
|
|
export * from './config/config.schema';
|
|
export * from './system-notice/system-notice.schema';
|
|
export * from './maps/maps.schema';
|
|
export * from './maps/place-shadow.schema';
|
|
export * from './maps/route-usage.schema';
|
|
export * from './category/category.schema';
|
|
export * from './tag/tag.schema';
|
|
export * from './notification/notification.schema';
|
|
export * from './memories/memories.schema';
|
|
export * from './atlas/atlas.schema';
|
|
export * from './vacay/vacay.schema';
|
|
export * from './packing/packing.schema';
|
|
export * from './packing/packed-count';
|
|
export * from './todo/todo.schema';
|
|
export * from './budget/budget.schema';
|
|
export * from './budget/receipt-scan.schema';
|
|
export * from './reservation/reservation.schema';
|
|
export * from './reservation/reservation-types';
|
|
export * from './reservation/ki-reservation.schema';
|
|
export * from './datetime/datetime-normalize';
|
|
export * from './airtrail/airtrail.schema';
|
|
export * from './dawarich/dawarich.schema';
|
|
export * from './docsync/docsync.schema';
|
|
export * from './day/day.schema';
|
|
export * from './day/note-colors';
|
|
export * from './day/chrono-order';
|
|
export * from './day/stay-bookends';
|
|
export * from './assignment/assignment.schema';
|
|
export * from './place/place.schema';
|
|
export * from './place/place-match';
|
|
export * from './place/place-website';
|
|
export * from './roadtrip/roadtrip.schema';
|
|
export * from './place/track-colors';
|
|
export * from './tours/tours.schema';
|
|
export * from './tours/tour-provenance.schema';
|
|
export * from './tours/tour-library.schema';
|
|
export * from './tours/tour-poi-search.schema';
|
|
export * from './tours/tours.metrics';
|
|
export * from './tours/tour-gpx-import.schema';
|
|
export * from './tours/paddle-plan.schema';
|
|
export * from './tours/paddle-plan';
|
|
export * from './tours/paddle-check.schema';
|
|
export * from './tours/paddle-check-basis';
|
|
export * from './tours/paddle-check';
|
|
export * from './tours/route-corridor';
|
|
export * from './wanderer/wanderer.schema';
|
|
export * from './geo/haversine';
|
|
export * from './collection/collection.schema';
|
|
export * from './collection/collection-file.schema';
|
|
export * from './trip/trip.schema';
|
|
export * from './place/place-hours';
|
|
export * from './trip/day-grid';
|
|
export * from './trip-invite/trip-invite.schema';
|
|
export * from './collab/collab.schema';
|
|
export * from './file/file.schema';
|
|
export * from './journey/journey.schema';
|
|
export * from './journey/trip-journal-link.schema';
|
|
export * from './book/book.schema';
|
|
export * from './book/journey-stats.schema';
|
|
export * from './book/book-store.schema';
|
|
export * from './share/share.schema';
|
|
export * from './storage/storage.schema';
|
|
export * from './settings/settings.schema';
|
|
export * from './appearance/appearance.schema';
|
|
export * from './backup/backup.schema';
|
|
export * from './auth/auth.schema';
|
|
export * from './auth/password-policy';
|
|
export * from './sessions/sessions.schema';
|
|
export * from './oidc/oidc.schema';
|
|
export * from './oauth/oauth.schema';
|
|
export * from './admin/admin.schema';
|
|
|
|
// Realtime WS event contract registry (event names + payload schemas)
|
|
export * from './realtime/events.schema';
|
|
export * from './roadtrip/day-boundary.schema';
|
|
|
|
// Sanitisation helpers — used by the client today, scoped here so the server
|
|
// has them ready if rich-text input ever ships.
|
|
export * from './sanitize/sanitize';
|
|
|
|
// WGS-84 ⇄ GCJ-02. Shared because the two boundaries that need it sit on
|
|
// opposite sides: the Amap provider on the server, the Leaflet CRS on the client.
|
|
export * from './geo/gcj02';
|
|
|
|
// i18n registry (language list + pure helpers — no locale data)
|
|
export * from './i18n/languages';
|
|
export * from './i18n/plural';
|
|
|
|
// Plugin permission list, generated from the host's protocol/envelope.ts
|
|
// (server/scripts/gen-plugin-facts.ts). The admin consent screens render from it.
|
|
export * from './plugin-permissions';
|
|
// Plugin settings contracts: the settings-field descriptor + admin instance-config wire shapes.
|
|
export * from './plugins/plugins.schema';
|
|
// Plugin POI categories (#1781): the declared category, the icon allow-list and GET /api/plugin-pois.
|
|
export * from './plugins/plugin-poi-facts';
|
|
export * from './plugins/plugin-poi.schema';
|
|
// Plugin search providers (#2221): the row GET /api/plugin-search and its typed-ahead twin answer with.
|
|
export * from './plugins/plugin-search.schema';
|
|
export * from './roadtrip/preferences.schema';
|
|
export * from './roadtrip/hazards.schema';
|
|
export * from './roadtrip/planning.schema';
|
|
export * from './roadtrip/search.schema';
|
|
export * from './roadtrip/google-import.schema';
|
|
export * from './roadtrip/charging.schema';
|
|
|
|
export * from './vacay/school-holiday-catalog.schema';
|
|
|
|
// Money arithmetic in whole hundredths (sums, equal splits, currency precision).
|
|
export * from './money/money';
|
|
|
|
// Trip permission catalog (keys, levels, defaults) and the rule that decides a check.
|
|
export * from './permissions/permissions';
|
|
|
|
// Via ferratas around a trip, from OpenStreetMap through Overpass (GET /api/trips/:tripId/ferratas).
|
|
export * from './ferratas/ferratas.schema';
|
|
// The 0.05 degree tile grid both ends load, cache and persist the layer on.
|
|
export * from './ferratas/ferrataGrid';
|