# 🧪 Test-Anleitung: Tour-Erstellung mit LexOffice & Routenoptimierung **Datum**: 2025-11-12 **Ziel**: Kompletten Workflow testen (Tour erstellen → LexOffice Angebot → Routenoptimierung) --- ## ✅ Vorbereitung ### 1. Buchungen vorbereiten **Schritt 1**: Öffne http://localhost:3001/dashboard/bookings **Schritt 2**: Prüfe, welche Buchungen vorhanden sind: - Du hast bereits 3 Test-Buchungen (Dennis Forte, Vivien Wawer, Elena Herz) - Status sollte **RESERVED** sein **Schritt 3**: Buchungen auf CONFIRMED setzen (für Tour-Erstellung) ``` Buchungen müssen Status "CONFIRMED" haben, um einer Tour zugewiesen zu werden. ``` **Manuell in der Datenbank** (falls kein UI vorhanden): ```sql UPDATE "Booking" SET status = 'CONFIRMED' WHERE status = 'RESERVED'; ``` Oder **über die UI**: - Gehe zu jeder Buchung (Details-Seite) - Ändere Status auf "Bestätigt" (falls Button vorhanden) --- ## 🚀 TEIL 1: Tour erstellen ### Schritt 1: Tour-Seite öffnen ``` http://localhost:3001/dashboard/tours ``` ### Schritt 2: "Neue Tour erstellen" Button klicken - Sollte ein Formular öffnen ### Schritt 3: Tour-Daten eingeben - **Datum**: Wähle ein zukünftiges Datum (z.B. 2025-11-15) - **Fahrer**: Wähle einen Fahrer aus der Liste - **Buchungen**: Wähle 2-3 Buchungen aus (nur CONFIRMED Buchungen werden angezeigt) ### Schritt 4: Tour speichern - Klicke auf "Tour erstellen" - **Erwartetes Verhalten**: 1. Tour wird in Datenbank erstellt 2. Buchungen werden der Tour zugewiesen 3. **Routenoptimierung startet automatisch** (Google Maps API) 4. Tour erscheint in der Liste --- ## 🗺️ TEIL 2: Routenoptimierung prüfen ### Nach Tour-Erstellung: **Schritt 1**: Klicke auf die neu erstellte Tour (in der Liste) **Schritt 2**: Tour-Detail-Seite öffnet sich - Sollte zeigen: - ✅ Gebuchte Stops (Adressen) - ✅ Optimierte Reihenfolge - ✅ Gesamtdistanz (in km) - ✅ Geschätzte Fahrzeit (in Minuten) **Schritt 3**: Route in Google Maps öffnen - Button: "Route in Google Maps öffnen" oder ähnlich - **Erwartetes Verhalten**: - Öffnet Google Maps mit allen Stops - Zeigt optimierte Route - Fahrer kann Navigation starten ### Was passiert im Hintergrund? 1. **API-Call**: `POST /api/tours` ```json { "tourDate": "2025-11-15", "driverId": "driver-id-123", "bookingIds": ["booking-1", "booking-2", "booking-3"] } ``` 2. **Routenoptimierung** (automatisch): ```javascript // lib/route-optimization.ts const routeData = await optimizeRoute(bookings); // Nutzt Google Maps Directions API ``` 3. **Gespeicherte Daten**: ```json { "routeOptimized": { "waypoints": [...], "totalDistance": 45.3, "totalDuration": 65 } } ``` --- ## 💰 TEIL 3: LexOffice-Integration testen ### Option A: Angebot aus Buchung erstellen (Einzeln) **Schritt 1**: Gehe zu einer Buchung ``` http://localhost:3001/dashboard/bookings/[booking-id] ``` **Schritt 2**: Finde "LexOffice Angebot erstellen" Button - Sollte auf der Buchungs-Detail-Seite sein - Falls nicht vorhanden, siehe "Fix unten" **Schritt 3**: Klicke auf "Angebot erstellen" - **Erwartetes Verhalten**: 1. API-Call zu LexOffice 2. Kontakt wird erstellt (falls neu) 3. Angebot wird erstellt 4. LexOffice ID wird in Booking gespeichert 5. Erfolgsmeldung + Link zu LexOffice **Was passiert im Hintergrund**: ```javascript // API: POST /api/bookings/[id]/create-quotation const lexoffice = new LexOfficeService(); const contact = await lexoffice.createContactFromBooking(booking); const quotation = await lexoffice.createQuotationFromBooking(booking, contact.id); ``` --- ### Option B: Sammel-Angebot für Tour Falls implementiert: Nach Tour-Erstellung könnte ein Sammel-Angebot erstellt werden. **Prüfen**: Gibt es einen Button "LexOffice Angebot für Tour" auf der Tour-Detail-Seite? --- ## 🧪 Test-Checkliste ### ✅ Tour-Erstellung - [ ] Tour-Formular öffnet sich - [ ] Fahrer-Liste wird geladen - [ ] Nur CONFIRMED Buchungen werden angezeigt - [ ] Tour wird erfolgreich erstellt - [ ] Tour erscheint in der Liste ### ✅ Routenoptimierung - [ ] Optimierung startet automatisch - [ ] `totalDistance` wird berechnet - [ ] `estimatedDuration` wird berechnet - [ ] Optimierte Reihenfolge wird gespeichert - [ ] Kein Google Maps API Error im Log ### ✅ LexOffice-Integration - [ ] Button "Angebot erstellen" ist vorhanden - [ ] Kontakt wird in LexOffice erstellt - [ ] Angebot wird in LexOffice erstellt - [ ] `lexofficeOfferId` wird in DB gespeichert - [ ] Link zu LexOffice funktioniert - [ ] Kein LexOffice API Error im Log --- ## 🐛 Troubleshooting ### Problem: Keine Buchungen werden angezeigt **Ursache**: Buchungen haben Status RESERVED statt CONFIRMED **Fix**: ```sql UPDATE "Booking" SET status = 'CONFIRMED'; ``` ### Problem: Routenoptimierung schlägt fehl **Ursache**: Google Maps API Key fehlt oder ungültig **Prüfen**: ```bash # Server-Logs anschauen # Suche nach: "Route optimization error" ``` **Fix**: Prüfe `.env`: ```bash GOOGLE_MAPS_API_KEY="AIzaSyCFWUJtTgbbeb8LWxa8oGJbCE8xNQXXDQo" ``` ### Problem: LexOffice-Integration fehlt Button **Ursache**: Button nicht in UI implementiert **Fix**: Siehe unten → "LexOffice Button hinzufügen" --- ## 📋 Nächste Schritte (falls Buttons fehlen) ### 1. LexOffice Button auf Buchungs-Detail-Seite **Datei**: `app/dashboard/bookings/[id]/page.tsx` **Hinzufügen**: ```tsx ``` ### 2. Google Maps Link auf Tour-Detail-Seite **Datei**: `app/dashboard/tours/[id]/page.tsx` **Hinzufügen**: ```tsx `${b.eventAddress},${b.eventCity}`).join('/') }`} target="_blank" className="px-4 py-2 bg-green-600 text-white rounded-lg" > Route in Google Maps öffnen ``` --- ## 🎯 Erfolgs-Kriterien Nach erfolgreichem Test solltest du: 1. ✅ Eine Tour mit 2-3 Buchungen erstellt haben 2. ✅ Optimierte Route sehen (Distanz + Dauer) 3. ✅ LexOffice Angebot erstellt haben 4. ✅ Route in Google Maps öffnen können --- **Viel Erfolg beim Testen!** 🚀 Falls du Fehler findest, schau in die Server-Logs oder Browser-Console.