145 lines
3.6 KiB
Markdown
145 lines
3.6 KiB
Markdown
# 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)
|