first commit

This commit is contained in:
Timo
2026-03-16 15:36:42 +01:00
commit 738d725aea
1141 changed files with 139091 additions and 0 deletions

144
README.md Normal file
View 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)