feat(extract): fill transport/booking fields, geocode endpoints, assign days

- rental car: request+map dropoffLocation, emit pickup->return from/to endpoints, set a location string (G1/G2/G3). - geocode endpoints (stations/stops/terminals/rental desks) on confirm via Nominatim; mapper now emits coordless named endpoints and confirm persists only the geocoded ones (G6). - assign every dated booking to the nearest trip day so it still shows when slightly out of range, and keep hotel accommodation from vanishing when a check date misses (G5/G10). - fix bus mislabelled as train + add bus_number metadata (G7/G8), flag malformed boats (G9), accept root start/end time for events (G11). - raise the local-LLM timeout to 300s for CPU-only Ollama.
This commit is contained in:
Maurice
2026-06-24 22:23:13 +02:00
committed by Maurice
parent a1cbc11169
commit 38565c3c6d
9 changed files with 81 additions and 22 deletions
@@ -70,6 +70,7 @@ export const KI_RESERVATION_JSON_SCHEMA = {
// Type-specific payload (Flight/Train/Lodging/…): open object.
reservationFor: { type: 'object', additionalProperties: true },
pickupLocation: { type: 'object', additionalProperties: true },
dropoffLocation: { type: 'object', additionalProperties: true },
},
required: ['@type'],
},
+4 -2
View File
@@ -143,8 +143,10 @@ const bookingImportEndpointSchema = z.object({
sequence: z.number(),
name: z.string(),
code: z.string().nullable(),
lat: z.number(),
lng: z.number(),
// Nullable: the mapper emits named endpoints without coords; confirm() geocodes
// them, and only the coord'd ones are persisted.
lat: z.number().nullable(),
lng: z.number().nullable(),
timezone: z.string().nullable(),
local_time: z.string().nullable(),
local_date: z.string().nullable(),