# TravelDesk – Reiseplanung für Firmenmonteure Ein intelligenter **Deep-Link-Generator**: Das Tool bereitet Flug-, Hotel- und Mietwagensuchen vor und leitet direkt zu Booking.com weiter. Keine eigene Buchung, kein eigenes Inventar – volles Booking.com Angebot, vertraute Oberfläche. ## Wie es funktioniert 1. Nutzer gibt Reisedaten + Fabrikadresse ein 2. Tool ermittelt IATA-Codes (Lookup-Tabelle + KI-Fallback) 3. Tool geocoded die Adressen (Google Maps oder Nominatim) 4. Optionaler Mietwagen-Check: Hotel-Adresse → Distanz zur Fabrik berechnen 5. Tool generiert 3 Booking.com Deep-Links: - **flights.booking.com** – mit Flughafen-Codes vorausgefüllt - **booking.com/searchresults** – mit Ort, Datum, Personen - **booking.com/cars** – mit Abholort und Datum 6. KI (GPT-4o-mini) erstellt kurze Reiseempfehlung ## Voraussetzungen - **Node.js** (Version 18+) → https://nodejs.org - API-Keys: Google Maps + OpenAI ## Setup ### 1. Abhängigkeiten installieren ```bash cd c:\Users\Timo\Documents\Reiseplanung npm install ``` ### 2. .env Datei anlegen ```bash copy .env.example .env ``` Dann in `.env` eintragen: ```env GOOGLE_MAPS_API_KEY=dein_key OPENAI_API_KEY=dein_key PORT=3000 ``` ### 3. Server starten ```bash npm start ``` → Öffne **http://localhost:3000** ## API-Keys ### Google Maps (optional, aber empfohlen) - https://console.cloud.google.com → APIs aktivieren: - **Geocoding API** (Adresse → Koordinaten) - **Distance Matrix API** (Mietwagen-Check) - Ohne Google Maps: Nominatim (OpenStreetMap) als Fallback – kostenlos, kein Key nötig ### OpenAI - https://platform.openai.com → API Keys - Verwendung: IATA-Code-Fallback (GPT-4o-mini) + KI-Zusammenfassung ## API-Endpoints ### POST /api/search Generiert alle Deep-Links für eine Reise. **Request:** ```json { "origin": "Stuttgart, Deutschland", "destination": "ul. Marszałkowska 1, Warschau, Polen", "checkin": "2026-04-15", "checkout": "2026-04-20", "adults": 1, "directFlightsOnly": false, "refundableOnly": true, "hotelAddress": "ul. Nowogrodzka 35, Warschau", "specialRequirements": "Parkplatz" } ``` **Response:** ```json { "flightLink": "https://flights.booking.com/...", "hotelLink": "https://www.booking.com/searchresults...", "carLink": "https://www.booking.com/cars/...", "originIATA": "STR", "destIATA": "WAW", "carNeeded": true, "carMessage": "🚗 Mietwagen empfohlen – 2.3 km zur Fabrik", "distanceMeters": 2300, "summary": "KI-Empfehlung...", "meta": { ... } } ``` ### POST /api/check-distance Prüft nachträglich ob ein Mietwagen nötig ist. **Request:** ```json { "hotelAddress": "ul. Nowogrodzka 35, Warschau", "fabrikAddress": "ul. Marszałkowska 1, Warschau, Polen", "checkin": "2026-04-15", "checkout": "2026-04-20" } ``` **Response:** ```json { "distanceMeters": 800, "carNeeded": false, "carMessage": "✅ Kein Mietwagen nötig – 800m", "carLink": "https://www.booking.com/cars/..." } ``` ## IATA-Lookup Das Tool enthält eine Tabelle mit 150+ Städten (Europa, Asien, Amerika, Afrika, Ozeanien). Falls eine Stadt nicht in der Tabelle ist, fragt das Tool automatisch GPT-4o-mini nach dem IATA-Code. Falls auch das scheitert, wird ein Hinweis angezeigt und der Booking.com Flights Link öffnet ohne Vorausfüllung. ## Mietwagen-Logik | Szenario | Ergebnis | |---|---| | Hotel-Adresse angegeben, < 1,5 km zur Fabrik | Kein Mietwagen nötig | | Hotel-Adresse angegeben, ≥ 1,5 km zur Fabrik | Mietwagen empfohlen | | Keine Hotel-Adresse | Unbekannt – inline Distanz-Check möglich | ## Entwicklungs-Modus ```bash npm run dev ``` (nodemon mit Auto-Reload)