# 🚀 Automatisierter Buchungs-Workflow - Implementierungsplan **Datum**: 2025-11-12 **Ziel**: Vollautomatischer Workflow von E-Mail-Eingang bis Kalender-Reservierung --- ## 🔄 GEWÜNSCHTER WORKFLOW ### Phase 1: E-Mail-Eingang → KI-Analyse ``` E-Mail kommt rein ↓ KI extrahiert automatisch: - Kundendaten - Event-Details - Gewünschtes Datum ↓ System erstellt: - Angebot-Entwurf (LexOffice) - Mietvertrag-Entwurf (PDF) - E-Mail-Antwort-Entwurf (GPT-4) ↓ Status: PENDING_REVIEW (Wartet auf Admin-Freigabe) ``` ### Phase 2: Admin-Review im Dashboard ``` Dashboard zeigt: "Offene Anfragen" (Queue) ↓ Admin öffnet Anfrage und sieht: - ✅ KI-generierte E-Mail (Vorschau) - ✅ Angebot-PDF (Vorschau) - ✅ Mietvertrag-PDF (Vorschau) - ✅ Extrahierte Daten ↓ Admin prüft und klickt: - [✓ Korrektur vornehmen] (optional) - [✓ Senden] (alles in einem Rutsch) ``` ### Phase 3: Automatischer Versand ``` System sendet gleichzeitig: 1. E-Mail an Kunden (mit Anhängen): - Angebot (PDF) - Mietvertrag (PDF) - Personalisierte Nachricht 2. Erstellt Kalender-Eintrag: - Reservierung im Format: "[KUNDE] - [ORT] - [PHOTOBOX]" - Synchronisiert mit Plesk-Kalender 3. Status-Update: - RESERVED (Warte auf Vertrag) ``` ### Phase 4: Vertragsrücklauf & Bestätigung ``` Kunde unterschreibt Vertrag ↓ Cron-Job prüft: - Hochgeladenen Vertrag (signiert) - Oder Online-Signatur ↓ System erstellt automatisch: - LexOffice Auftragsbestätigung - Bestätigungs-E-Mail an Kunden - Kalender-Update: RESERVED → CONFIRMED ``` --- ## 📅 KALENDER-INTEGRATION ### Option 1: CalDAV-Synchronisation (Empfohlen) ``` SaveTheMoment Atlas (DB) ↓ CalDAV Server (z.B. ownCloud/Nextcloud) ↓ Plesk Kalender (liest über CalDAV) ``` **Vorteile**: - Bidirektionale Sync - Standard-Protokoll - Konflikt-Erkennung **Implementierung**: ```typescript // lib/calendar-sync.ts import { CalDAVClient } from 'tsdav'; class CalendarService { async createReservation(booking: Booking) { const event = { summary: `${booking.customerName} - ${booking.eventCity} - ${booking.photobox.model}`, dtstart: booking.eventDate, dtend: booking.setupTimeLatest, location: `${booking.eventAddress}, ${booking.eventZip} ${booking.eventCity}`, description: `Buchungsnr: ${booking.bookingNumber}\\nFotobox: ${booking.photobox.serialNumber}`, }; await caldavClient.createCalendarObject({ calendar: this.calendar, filename: `${booking.bookingNumber}.ics`, data: this.generateICS(event), }); } } ``` ### Option 2: iCal-Export (Einfacher, aber manuell) ``` SaveTheMoment Atlas ↓ Generiert .ics Datei ↓ Download-Link für Admin ↓ Manueller Import in Plesk-Kalender ``` **Vorteile**: - Einfache Implementierung - Keine Extra-Software **Nachteile**: - Kein automatischer Sync - Manueller Schritt notwendig ### Option 3: Google Calendar API (Flexibel) ``` SaveTheMoment Atlas ↓ Google Calendar API ↓ Shared Calendar (von Plesk abrufbar) ``` **Vorteile**: - API vorhanden - Echtzeit-Updates - Kann mit Plesk synchronisiert werden --- ## 🏗️ BENÖTIGTE ÄNDERUNGEN ### 1. Neuer Booking-Status-Flow ```typescript // Aktuell: RESERVED → CONFIRMED → COMPLETED // Neu: AI_PENDING → REVIEW_PENDING → RESERVED → CONTRACT_PENDING → CONFIRMED → COMPLETED // Zusätzliche Stati: - AI_PENDING: KI analysiert gerade - REVIEW_PENDING: Wartet auf Admin-Freigabe - CONTRACT_PENDING: Wartet auf unterschriebenen Vertrag ``` ### 2. Neue Datenbank-Felder ```prisma model Booking { // ... existing fields // Workflow-Status aiDraftReady Boolean @default(false) adminReviewedAt DateTime? adminReviewedBy String? // E-Mail-Entwurf emailDraft String? // GPT-4 generierter Text emailDraftApproved Boolean @default(false) // Dokument-Entwürfe quotationDraftUrl String? // LexOffice PDF Preview contractDraftUrl String? // Mietvertrag PDF Preview // Versand-Status documentsSentAt DateTime? documentsSentTo String? // Kalender-Sync calendarEventId String? // CalDAV Event ID calendarSynced Boolean @default(false) calendarSyncedAt DateTime? } ``` ### 3. Neue API-Endpunkte ``` POST /api/bookings/[id]/approve-and-send → Admin klickt "Senden" → Sendet E-Mail + PDFs → Erstellt Kalender-Eintrag → Update Status GET /api/admin/pending-reviews → Liste aller Anfragen mit aiDraftReady=true → Für Dashboard-Queue POST /api/bookings/[id]/calendar-sync → Synchronisiert Buchung mit Kalender → Nutzt CalDAV oder Google Calendar API POST /api/cron/process-pending-bookings → Neue Cron-Job → Prüft E-Mails → Startet KI-Analyse → Erstellt Entwürfe ``` ### 4. Neues Dashboard-Widget: "Offene Anfragen" ```tsx // components/PendingReviewsQueue.tsx export default function PendingReviewsQueue() { const [pendingBookings, setPendingBookings] = useState([]); return (

📋 Offene Anfragen ({pendingBookings.length})

{pendingBookings.map(booking => (

{booking.customerName}

{booking.eventCity} ¡ {formatDate(booking.eventDate)}

))}
); } ``` ### 5. Review-Modal (Admin-PrĂźfung) ```tsx // components/BookingReviewModal.tsx

Anfrage prĂźfen: {booking.customerName}

``` --- ## ⏱️ IMPLEMENTIERUNGS-ZEITPLAN ### Sprint 1: Workflow-Basis (2-3 Tage) - [ ] Neue Booking-Stati hinzufügen - [ ] DB-Migration für neue Felder - [ ] API: `/api/admin/pending-reviews` - [ ] Dashboard-Widget: "Offene Anfragen" ### Sprint 2: Auto-Generierung (3-4 Tage) - [ ] Cron-Job: E-Mail-Prüfung + KI-Analyse - [ ] Auto-Generierung: Angebot-Entwurf (LexOffice) - [ ] Auto-Generierung: Vertrag-Entwurf (PDF) - [ ] Auto-Generierung: E-Mail-Antwort (GPT-4) ### Sprint 3: Admin-Review-UI (2-3 Tage) - [ ] Review-Modal mit Tabs - [ ] PDF-Preview-Komponenten - [ ] E-Mail-Editor (falls Korrektur nötig) - [ ] "Approve & Send" Funktion ### Sprint 4: Automatischer Versand (2 Tage) - [ ] API: `/api/bookings/[id]/approve-and-send` - [ ] E-Mail-Versand mit Anhängen (Angebot + Vertrag) - [ ] Status-Update nach Versand ### Sprint 5: Kalender-Integration (3-4 Tage) - [ ] CalDAV-Client implementieren - [ ] Oder: Google Calendar API - [ ] Oder: iCal-Export - [ ] Plesk-Kalender-Anbindung konfigurieren - [ ] Bidirektionale Synchronisation ### Sprint 6: Testing & Optimierung (2 Tage) - [ ] End-to-End-Tests - [ ] Performance-Optimierung - [ ] Fehlerbehandlung - [ ] Admin-Schulung **Gesamt-Aufwand**: ~14-19 Tage (3-4 Wochen) --- ## 🔐 KALENDER-OPTIONEN: ENTSCHEIDUNGSMATRIX | Kriterium | CalDAV | iCal Export | Google Calendar | |-----------|--------|-------------|-----------------| | **Auto-Sync** | ✅ Ja | ❌ Nein | ✅ Ja | | **Plesk-kompatibel** | ✅ Ja | ✅ Ja | ⚠️ Indirekt | | **Implementierungs-Aufwand** | 🟡 Mittel | 🟢 Gering | 🟡 Mittel | | **Konflikt-Erkennung** | ✅ Ja | ❌ Nein | ✅ Ja | | **Kosten** | 🟢 Kostenlos | 🟢 Kostenlos | 🟢 Kostenlos | | **Empfehlung** | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐ | **Empfehlung**: **CalDAV**, falls Plesk CalDAV unterstützt. Sonst: **Google Calendar API**. --- ## ❓ NÄCHSTE SCHRITTE ### Fragen an dich: 1. **Kalender-System**: - Welches Kalender-System nutzt ihr aktuell in Plesk? - Unterstützt es CalDAV? - Oder soll ich Google Calendar API nutzen? 2. **E-Mail-Versand**: - Über welchen SMTP-Server sollen die Entwürfe versendet werden? - Sind die SMTP-Einstellungen schon in den Locations hinterlegt? 3. **Priorität**: - Was ist wichtiger: Kalender-Sync oder Auto-Workflow? - Soll ich mit dem Auto-Workflow (Sprint 1-4) starten? 4. **Testing**: - Soll ich zuerst einen kleinen Prototyp bauen zum Testen? --- **Status**: Planung abgeschlossen, warte auf deine Entscheidungen! 🎯