# 🧪 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
<button
  onClick={async () => {
    const res = await fetch(`/api/bookings/${booking.id}/create-quotation`, {
      method: 'POST',
    });
    const data = await res.json();
    if (res.ok) {
      alert(`Angebot erstellt! ID: ${data.quotation.id}`);
      window.open(`https://app.lexoffice.de/quotation/${data.quotation.id}`, '_blank');
    } else {
      alert(`Fehler: ${data.error}`);
    }
  }}
  className="px-4 py-2 bg-blue-600 text-white rounded-lg"
>
  LexOffice Angebot erstellen
</button>
```

### 2. Google Maps Link auf Tour-Detail-Seite

**Datei**: `app/dashboard/tours/[id]/page.tsx`

**Hinzufügen**:
```tsx
<a
  href={`https://www.google.com/maps/dir/${
    tour.bookings.map(b => `${b.eventAddress},${b.eventCity}`).join('/')
  }`}
  target="_blank"
  className="px-4 py-2 bg-green-600 text-white rounded-lg"
>
  Route in Google Maps öffnen
</a>
```

---

## 🎯 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.
