const fetch = require('node-fetch'); async function testKIFeatures() { const baseUrl = 'http://localhost:3002'; console.log('🧪 Test Suite: KI-Features & API-Endpunkte\n'); console.log('='.repeat(60)); // Test 1: Server erreichbar? console.log('\n1️⃣ Server-Status prüfen...'); try { const response = await fetch(baseUrl); console.log(` ✅ Server erreichbar (Status: ${response.status})`); } catch (error) { console.log(` ❌ Server nicht erreichbar: ${error.message}`); return; } // Test 2: API Health Check console.log('\n2️⃣ API Health Check...'); try { const response = await fetch(`${baseUrl}/api/health`); if (response.status === 404) { console.log(' ⚠️ Health-Endpunkt nicht implementiert (erwartet)'); } else { const data = await response.json(); console.log(` ✅ Health Check: ${JSON.stringify(data)}`); } } catch (error) { console.log(` ⚠️ Health Check übersprungen: ${error.message}`); } // Test 3: Environment Variables console.log('\n3️⃣ Environment Variables Check...'); const envVars = [ 'OPENAI_API_KEY', 'LEXOFFICE_API_KEY', 'GOOGLE_MAPS_API_KEY', 'DATABASE_URL', 'NEXTAUTH_SECRET' ]; // Wir können die Env-Variablen nicht direkt testen, aber wir können // prüfen, ob die Services initialisiert werden können console.log(' ℹ️ Env-Variablen werden vom Server geladen'); console.log(' ℹ️ Direkte Prüfung nicht möglich (Server-Kontext)'); // Test 4: Wichtige API-Endpunkte dokumentieren console.log('\n4️⃣ Implementierte API-Endpunkte:'); const endpoints = [ { method: 'POST', path: '/api/bookings/[id]/ai-analyze', desc: 'KI-E-Mail-Analyse' }, { method: 'POST', path: '/api/bookings/[id]/release-to-drivers', desc: 'Freigabe an Fahrer' }, { method: 'GET', path: '/api/bookings/[id]/availability', desc: 'Fahrer-Verfügbarkeiten abrufen' }, { method: 'POST', path: '/api/bookings/[id]/availability', desc: 'Fahrer-Verfügbarkeit melden' }, { method: 'POST', path: '/api/bookings/[id]/assign-driver', desc: 'Fahrer zuweisen' }, { method: 'GET', path: '/api/cron/check-contracts', desc: 'Vertragsprüfung Cron-Job' }, { method: 'POST', path: '/api/tours/[id]/optimize-route', desc: 'Routenoptimierung' }, ]; endpoints.forEach((ep, i) => { console.log(` ${i + 1}. ${ep.method.padEnd(6)} ${ep.path}`); console.log(` → ${ep.desc}`); }); // Test 5: File-System-Check console.log('\n5️⃣ Kritische Dateien prüfen...'); const fs = require('fs'); const path = require('path'); const criticalFiles = [ 'lib/ai-service.ts', 'lib/lexoffice.ts', 'lib/route-optimization.ts', 'prisma/schema.prisma', '.env' ]; criticalFiles.forEach(file => { const filePath = path.join(__dirname, file); const exists = fs.existsSync(filePath); console.log(` ${exists ? '✅' : '❌'} ${file}`); }); console.log('\n' + '='.repeat(60)); console.log('✅ Test Suite abgeschlossen!\n'); console.log('📋 Nächste Schritte:'); console.log(' 1. Dashboard öffnen: http://localhost:3002/dashboard'); console.log(' 2. Testbuchung erstellen über UI'); console.log(' 3. KI-Analyse-Button testen (Admin-Dashboard)'); console.log(' 4. LexOffice-Integration testen (API-Keys prüfen)'); console.log(' 5. Routenoptimierung mit echten Adressen testen\n'); console.log('⚠️ WICHTIGE ERINNERUNG:'); console.log(' 🔐 Google Maps API Key einschränken bei Live-Gang!'); console.log(' → https://console.cloud.google.com/apis/credentials'); console.log(' → IP/Domain-Einschränkung + nur 3 APIs aktivieren\n'); } testKIFeatures().catch(console.error);