import OpenAI from 'openai';
import { UserPreferences, RouteRecommendation } from '@/types/route';

export type { UserPreferences, RouteRecommendation };

const OPENAI_API_KEY = import.meta.env.VITE_OPENAI_API_KEY;

const openai = new OpenAI({
  apiKey: OPENAI_API_KEY,
  dangerouslyAllowBrowser: true
});

export async function generatePersonalizedRoute(
  preferences: UserPreferences
): Promise<RouteRecommendation> {
  const prompt = `
    Kapadokya için kişiselleştirilmiş bir seyahat rotası oluştur.
    Kullanıcı Tercihleri:
    - Seyahat süresi: ${preferences.duration} gün
    - İlgi alanları: ${preferences.interests.join(', ')}
    - Bütçe: ${preferences.budget}
    - Seyahat tarzı: ${preferences.travelStyle}
    
    Lütfen JSON formatında rota önerisi döndür. JSON yapısı:
    {
      "days": [
        {
          "day": number,
          "date": "string",
          "places": [
            {
              "name": "string",
              "description": "string",
              "coordinates": { "lat": number, "lng": number },
              "duration": number (minutes),
              "category": "restaurant" | "attraction" | "hotel" | "activity" | "nature" | "shopping",
              "priority": number (1-5)
            }
          ],
          "totalDuration": number (minutes)
        }
      ],
      "totalDistance": number (km),
      "estimatedCost": number (TRY),
      "highlights": ["string"]
    }
  `;

  const response = await openai.chat.completions.create({
    model: 'gpt-4',
    messages: [{ role: 'user', content: prompt }],
    response_format: { type: 'json_object' }
  });

  const content = response.choices[0].message.content;
  if (!content) throw new Error('OpenAI returned empty content');
  
  return JSON.parse(content);
}
