first commit
This commit is contained in:
144
README.md
Normal file
144
README.md
Normal file
@@ -0,0 +1,144 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user