38980-vm/app-9w9pd00g5j41/test-analyze-trip.js
2026-03-04 18:25:09 +00:00

186 lines
5.2 KiB
JavaScript

// Test script for enhanced analyze-trip edge function
// Run this in browser console or Node.js environment
const testAnalyzeTrip = async () => {
const supabaseUrl = 'YOUR_SUPABASE_URL';
const supabaseKey = 'YOUR_SUPABASE_ANON_KEY';
// Test Case 1: High Density Trip (Should recommend tour)
const highDensityTrip = {
destination: 'Cappadocia',
travelers: 2,
interests: ['history', 'nature', 'photography'],
days: [
{
date: '2024-06-15',
places: [
{
name: 'Göreme Open Air Museum',
type: 'museum',
lat: 38.6425,
lng: 34.8317,
duration: '2 hours'
},
{
name: 'Uchisar Castle',
type: 'historical',
lat: 38.6267,
lng: 34.8050,
duration: '1.5 hours'
},
{
name: 'Pasabag Valley',
type: 'valley',
lat: 38.6833,
lng: 34.8500,
duration: '1 hour'
},
{
name: 'Devrent Valley',
type: 'valley',
lat: 38.7000,
lng: 34.8667,
duration: '45 minutes'
},
{
name: 'Avanos Pottery Workshop',
type: 'cultural',
lat: 38.7167,
lng: 34.8500,
duration: '1.5 hours'
}
]
},
{
date: '2024-06-16',
places: [
{
name: 'Derinkuyu Underground City',
type: 'underground_city',
lat: 38.3733,
lng: 34.7350,
duration: '2 hours'
},
{
name: 'Ihlara Valley',
type: 'valley',
lat: 38.2500,
lng: 34.3000,
duration: '3 hours'
},
{
name: 'Selime Monastery',
type: 'historical',
lat: 38.2833,
lng: 34.2500,
duration: '1 hour'
}
]
}
]
};
// Test Case 2: Low Density Trip (Should NOT recommend tour)
const lowDensityTrip = {
destination: 'Cappadocia',
travelers: 2,
interests: ['relaxation'],
days: [
{
date: '2024-06-15',
places: [
{
name: 'Göreme Panorama',
type: 'panorama',
lat: 38.6425,
lng: 34.8317,
duration: '1 hour'
},
{
name: 'Local Cafe',
type: 'restaurant',
lat: 38.6400,
lng: 34.8300,
duration: '1.5 hours'
}
]
}
]
};
console.log('🧪 Testing High Density Trip...');
try {
const response1 = await fetch(`${supabaseUrl}/functions/v1/analyze-trip`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${supabaseKey}`
},
body: JSON.stringify(highDensityTrip)
});
const result1 = await response1.json();
console.log('✅ High Density Trip Result:');
console.log('Recommend:', result1.recommend);
console.log('Confidence:', result1.confidence);
console.log('Recommended Type:', result1.recommended_type);
console.log('Daily Tour Slug:', result1.daily_tour_slug);
console.log('\n📊 Debug Info:');
console.log('Overall Metrics:', result1.debug_info?.overallMetrics);
console.log('Decision Factors:', result1.debug_info?.decisionFactors);
console.log('Reasoning:', result1.debug_info?.recommendation_reasoning);
console.log('\n📅 Daily Metrics:');
result1.debug_info?.dailyMetrics.forEach(day => {
console.log(`Day ${day.dayNumber}: ${day.totalPlaces} places, ${day.totalDistanceKm}km, ${day.densityScore} density (${day.densityLevel})`);
});
} catch (error) {
console.error('❌ Error testing high density trip:', error);
}
console.log('\n\n🧪 Testing Low Density Trip...');
try {
const response2 = await fetch(`${supabaseUrl}/functions/v1/analyze-trip`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${supabaseKey}`
},
body: JSON.stringify(lowDensityTrip)
});
const result2 = await response2.json();
console.log('✅ Low Density Trip Result:');
console.log('Recommend:', result2.recommend);
console.log('Confidence:', result2.confidence);
console.log('\n📊 Debug Info:');
console.log('Overall Metrics:', result2.debug_info?.overallMetrics);
console.log('Decision Factors:', result2.debug_info?.decisionFactors);
console.log('Reasoning:', result2.debug_info?.recommendation_reasoning);
} catch (error) {
console.error('❌ Error testing low density trip:', error);
}
};
// Run tests
testAnalyzeTrip();
/* Expected Results:
High Density Trip:
- recommend: true
- confidence: 0.75-0.90
- recommended_type: 'daily_tour'
- daily_tour_slug: 'red_tour' or 'green_tour'
- maxDensityScore: 35-50 (high) or 50+ (very_high)
- totalDistanceKm: 80-120km
- Decision factors should include "High Density Day" and "Long Distance Travel"
Low Density Trip:
- recommend: false
- confidence: 0.20-0.40
- maxDensityScore: <20 (low)
- totalDistanceKm: <30km
- Decision factors should include "Low Density"
*/