101 lines
3.7 KiB
JavaScript
101 lines
3.7 KiB
JavaScript
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);
|