Files
Atlas/TOUR-TEST-ANLEITUNG.md
2025-11-12 20:21:32 +01:00

269 lines
6.5 KiB
Markdown

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