Initial commit - SaveTheMoment Atlas Basis-Setup
This commit is contained in:
349
PHASE3-ROADMAP.md
Normal file
349
PHASE3-ROADMAP.md
Normal file
@@ -0,0 +1,349 @@
|
||||
# Phase 3: KI-Workflow Implementierungs-Roadmap
|
||||
|
||||
## 🎯 Ziel
|
||||
|
||||
Vollautomatisierter Buchungsworkflow von E-Mail-Eingang bis zur Fahrer-Zuteilung mit KI-Unterstützung.
|
||||
|
||||
---
|
||||
|
||||
## ✅ Bereits implementiert (Phase B)
|
||||
|
||||
### Datenbank:
|
||||
- ✅ BookingStatus erweitert (7 Stati)
|
||||
- ✅ DriverAvailability Model
|
||||
- ✅ Booking-Felder für KI & LexOffice
|
||||
- ✅ Migrations durchgeführt
|
||||
|
||||
### Services:
|
||||
- ✅ AIService (`lib/ai-service.ts`)
|
||||
- E-Mail-Parsing mit GPT-4
|
||||
- Antwort-Generierung
|
||||
- Vertrags-Personalisierung
|
||||
|
||||
- ✅ LexOfficeService (`lib/lexoffice.ts`)
|
||||
- Kontakt-Erstellung
|
||||
- Angebots-Erstellung
|
||||
- Auftragsbestätigungs-Erstellung
|
||||
|
||||
### API-Endpunkte:
|
||||
- ✅ `/api/bookings/[id]/ai-analyze` - KI-Analyse
|
||||
- ✅ `/api/bookings/[id]/release-to-drivers` - Admin-Freigabe
|
||||
- ✅ `/api/bookings/[id]/availability` - Fahrer-Verfügbarkeit
|
||||
- ✅ `/api/bookings/[id]/assign-driver` - Fahrer-Zuteilung
|
||||
- ✅ `/api/cron/check-contracts` - Auto-Vertragsprüfung
|
||||
|
||||
---
|
||||
|
||||
## 📱 UI-Komponenten (TODO)
|
||||
|
||||
### 1. Admin-Dashboard Erweiterungen
|
||||
|
||||
#### 1.1 Neue Anfragen (Status: RESERVED + aiParsed)
|
||||
|
||||
**Component**: `components/admin/NewBookingsQueue.tsx`
|
||||
|
||||
```tsx
|
||||
Ansicht:
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 📨 Neue Anfragen (3) │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ [KI] Max Mustermann - Hochzeit 15.12.2025 [Analysieren]│
|
||||
│ 📧 max@example.com | 📍 Berlin │
|
||||
│ 💡 KI-Analyse: 95% sicher | Antwort-Entwurf bereit│
|
||||
│ [Entwurf ansehen] [Angebot erstellen] │
|
||||
│ │
|
||||
│ [NEU] Anna Schmidt - Firmenevent 20.12.2025 [Analysieren]│
|
||||
│ 📧 anna@firma.de | 📍 Hamburg │
|
||||
│ ⚠️ Noch nicht analysiert │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Features**:
|
||||
- Liste aller Buchungen mit `status === RESERVED`
|
||||
- Badge "KI" für analysierte, "NEU" für neue
|
||||
- Inline-Buttons: "Analysieren", "Entwurf ansehen"
|
||||
- KI-Confidence-Anzeige
|
||||
- Schnell-Aktionen
|
||||
|
||||
|
||||
#### 1.2 KI-Entwurfs-Dialog
|
||||
|
||||
**Component**: `components/admin/AIReviewDialog.tsx`
|
||||
|
||||
```tsx
|
||||
Modal:
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 🤖 KI-Analyse: Max Mustermann [X] │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ✅ Extrahierte Daten: │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ Name: Max Mustermann [Bearbeiten] │ │
|
||||
│ │ E-Mail: max@example.com │ │
|
||||
│ │ Telefon: +49 123 456789 │ │
|
||||
│ │ Event: 15.12.2025, 18:00 Uhr │ │
|
||||
│ │ Ort: Hochzeitssaal Berlin, 10115 Berlin │ │
|
||||
│ │ Typ: Privat │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ 📝 KI-Antwort-Entwurf: │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ Sehr geehrter Herr Mustermann, │ │
|
||||
│ │ │ │
|
||||
│ │ vielen Dank für Ihre Anfrage für Ihre Hochzeit... │ │
|
||||
│ │ [... editierbarer Text ...] │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ 📄 Aktionen: │
|
||||
│ [Angebot erstellen] [Vertrag generieren] [Verwerfen] │
|
||||
│ │
|
||||
│ [Alles bestätigen & senden] ←───────────────────────── │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Features**:
|
||||
- Bearbeitbare extrahierte Daten
|
||||
- Editierbarer Antwort-Entwurf
|
||||
- "Alles bestätigen & senden" → Erstellt Angebot + Vertrag + sendet E-Mail
|
||||
- Status: RESERVED → CONFIRMED
|
||||
|
||||
|
||||
#### 1.3 Freizugebende Buchungen (Status: READY_FOR_ASSIGNMENT)
|
||||
|
||||
**Component**: `components/admin/ReadyForAssignmentQueue.tsx`
|
||||
|
||||
```tsx
|
||||
Ansicht:
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ ✅ Freizugebende Buchungen (2) │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ✓ Max Mustermann - Hochzeit 15.12.2025 │
|
||||
│ 📝 Vertrag unterschrieben (digital) │
|
||||
│ 💰 Auftragsbestätigung versendet │
|
||||
│ [Für Fahrer freigeben] ←────────────────────────────│
|
||||
│ │
|
||||
│ ✓ Anna Schmidt - Firmenevent 20.12.2025 │
|
||||
│ 📝 Vertrag hochgeladen (analog) │
|
||||
│ 💰 Auftragsbestätigung versendet │
|
||||
│ [Für Fahrer freigeben] │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Features**:
|
||||
- Automatisch gefiltert: `status === READY_FOR_ASSIGNMENT`
|
||||
- Zeigt Vertrags-Status
|
||||
- "Für Fahrer freigeben" → `status = OPEN_FOR_DRIVERS`
|
||||
|
||||
|
||||
#### 1.4 Offene Zuweisungen (Status: OPEN_FOR_DRIVERS)
|
||||
|
||||
**Component**: `components/admin/DriverAssignmentQueue.tsx`
|
||||
|
||||
```tsx
|
||||
Ansicht:
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 🚗 Offene Zuweisungen (1) │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Max Mustermann - Hochzeit 15.12.2025 │
|
||||
│ 📍 Berlin | ⏰ 18:00 Uhr │
|
||||
│ │
|
||||
│ 👥 Verfügbare Fahrer (3): │
|
||||
│ ┌─────────────────────────────────────────────────────┐│
|
||||
│ │ ● Hans Müller [Zuweisen] ││
|
||||
│ │ VW T6, B-HH 1234 ││
|
||||
│ │ ⭐⭐⭐⭐⭐ (12 Touren) ││
|
||||
│ │ 💬 "Kenne die Location gut" ││
|
||||
│ │ ││
|
||||
│ │ ● Lisa Schmidt [Zuweisen] ││
|
||||
│ │ Mercedes Sprinter, HH-LS 567 ││
|
||||
│ │ ⭐⭐⭐⭐ (8 Touren) ││
|
||||
│ │ ││
|
||||
│ │ ● Tom Werner [Zuweisen] ││
|
||||
│ │ Ford Transit, B-TW 890 ││
|
||||
│ │ ⭐⭐⭐⭐⭐ (15 Touren) ││
|
||||
│ └─────────────────────────────────────────────────────┘│
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Features**:
|
||||
- Liste verfügbarer Fahrer pro Buchung
|
||||
- Fahrer-Infos: Fahrzeug, Bewertung, Touren-Anzahl
|
||||
- Optionale Nachricht vom Fahrer
|
||||
- "Zuweisen" → Erstellt/aktualisiert Tour, Status = ASSIGNED
|
||||
|
||||
|
||||
### 2. Fahrer-Portal Erweiterungen
|
||||
|
||||
#### 2.1 Verfügbare Events
|
||||
|
||||
**Component**: `components/driver/AvailableEvents.tsx`
|
||||
|
||||
```tsx
|
||||
Ansicht:
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 📅 Verfügbare Events (4) │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 🎉 Hochzeit - Berlin │
|
||||
│ 📅 15.12.2025, 18:00 Uhr │
|
||||
│ 📍 Hochzeitssaal Berlin, Musterstr. 1 │
|
||||
│ 🕐 Aufbau bis 17:30 Uhr │
|
||||
│ [Ich bin verfügbar] ←─────────────────────────────────│
|
||||
│ │
|
||||
│ 🏢 Firmenevent - Hamburg │
|
||||
│ 📅 20.12.2025, 14:00 Uhr │
|
||||
│ 📍 Hotel Alster, Hamburg │
|
||||
│ 🕐 Aufbau bis 13:30 Uhr │
|
||||
│ [Ich bin verfügbar] │
|
||||
│ │
|
||||
│ ✅ Du hast dich bereits gemeldet (2) │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**Features**:
|
||||
- Filtert `status === OPEN_FOR_DRIVERS`
|
||||
- Zeigt Event-Details
|
||||
- "Ich bin verfügbar" → POST `/api/bookings/[id]/availability`
|
||||
- Optionale Nachricht an Admin
|
||||
|
||||
|
||||
#### 2.2 Verfügbarkeits-Dialog
|
||||
|
||||
**Component**: `components/driver/AvailabilityDialog.tsx`
|
||||
|
||||
```tsx
|
||||
Modal:
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ ✋ Verfügbarkeit bestätigen [X] │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ Event: Hochzeit - Berlin │
|
||||
│ Datum: 15.12.2025, 18:00 Uhr │
|
||||
│ │
|
||||
│ Möchtest du für diesen Event verfügbar sein? │
|
||||
│ │
|
||||
│ Nachricht an Admin (optional): │
|
||||
│ ┌─────────────────────────────────────────────────────┐ │
|
||||
│ │ Ich kenne die Location gut und habe Erfahrung mit │ │
|
||||
│ │ Hochzeiten. │ │
|
||||
│ └─────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ [Abbrechen] [Bestätigen] │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Automatisierungs-Jobs
|
||||
|
||||
### Cron-Job Setup (Vercel Cron)
|
||||
|
||||
`vercel.json`:
|
||||
```json
|
||||
{
|
||||
"crons": [
|
||||
{
|
||||
"path": "/api/cron/sync-emails",
|
||||
"schedule": "*/5 * * * *"
|
||||
},
|
||||
{
|
||||
"path": "/api/cron/check-contracts",
|
||||
"schedule": "*/15 * * * *"
|
||||
},
|
||||
{
|
||||
"path": "/api/cron/sync-lexoffice",
|
||||
"schedule": "*/30 * * * *"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📅 Implementierungs-Zeitplan
|
||||
|
||||
### Sprint 1: Admin KI-Review (2-3 Tage)
|
||||
- [ ] `NewBookingsQueue` Component
|
||||
- [ ] `AIReviewDialog` Component
|
||||
- [ ] Integration in Dashboard
|
||||
- [ ] Test: E-Mail → KI-Analyse → Review → Senden
|
||||
|
||||
### Sprint 2: Freigabe-Workflow (2 Tage)
|
||||
- [ ] `ReadyForAssignmentQueue` Component
|
||||
- [ ] Auto-Freigabe nach Vertrag
|
||||
- [ ] Status-Updates testen
|
||||
|
||||
### Sprint 3: Fahrer-Portal (2-3 Tage)
|
||||
- [ ] `AvailableEvents` Component
|
||||
- [ ] `AvailabilityDialog` Component
|
||||
- [ ] Verfügbarkeits-API testen
|
||||
|
||||
### Sprint 4: Admin Zuweisung (2 Tage)
|
||||
- [ ] `DriverAssignmentQueue` Component
|
||||
- [ ] Fahrer-Zuweisung UI
|
||||
- [ ] Tour-Erstellung testen
|
||||
|
||||
### Sprint 5: E-Mail-Integration (3-4 Tage)
|
||||
- [ ] IMAP E-Mail-Sync
|
||||
- [ ] Webhook für neue E-Mails
|
||||
- [ ] Auto-KI-Analyse bei neuer E-Mail
|
||||
|
||||
### Sprint 6: Testing & Polish (2-3 Tage)
|
||||
- [ ] End-to-End Tests
|
||||
- [ ] UI/UX-Optimierungen
|
||||
- [ ] Performance-Tests
|
||||
|
||||
**Gesamt: ~15-20 Tage**
|
||||
|
||||
---
|
||||
|
||||
## 🔑 Benötigte API-Keys
|
||||
|
||||
### 1. OpenAI API Key
|
||||
- **Wo**: https://platform.openai.com/api-keys
|
||||
- **Kosten**: ~$0.01-0.03 pro E-Mail-Analyse
|
||||
- **Limit**: Empfehlung 100$/Monat
|
||||
|
||||
### 2. LexOffice API Key
|
||||
- **Wo**: https://app.lexoffice.de/addons/#/public-api
|
||||
- **Kosten**: Kostenlos im Tarif enthalten
|
||||
- **Limit**: Unbegrenzt
|
||||
|
||||
### 3. Google Maps API Key
|
||||
- **Wo**: https://console.cloud.google.com/
|
||||
- **Kosten**: 200$/Monat gratis
|
||||
- **APIs**: Directions, Distance Matrix, Geocoding
|
||||
|
||||
---
|
||||
|
||||
## 🎨 Design-System
|
||||
|
||||
### Farben (Status-Badges):
|
||||
- `RESERVED`: Blau (#3B82F6)
|
||||
- `CONFIRMED`: Gelb (#F59E0B)
|
||||
- `READY_FOR_ASSIGNMENT`: Lila (#A855F7)
|
||||
- `OPEN_FOR_DRIVERS`: Cyan (#06B6D4)
|
||||
- `ASSIGNED`: Grün (#10B981)
|
||||
- `COMPLETED`: Grau (#6B7280)
|
||||
- `CANCELLED`: Rot (#EF4444)
|
||||
|
||||
### Icons:
|
||||
- 📨 Neue Anfrage
|
||||
- 🤖 KI-analysiert
|
||||
- ✅ Vertrag unterschrieben
|
||||
- 💰 Auftragsbestätigung
|
||||
- 👥 Verfügbare Fahrer
|
||||
- 🚗 Zugewiesen
|
||||
- ✓ Abgeschlossen
|
||||
|
||||
---
|
||||
|
||||
**Bereit für die Implementierung?**
|
||||
Welcher Sprint soll als nächstes angegangen werden?
|
||||
Reference in New Issue
Block a user