import { getChatProvider } from '../factory' import { getSystemConfig } from '@/lib/config' export interface SearchOverviewResult { answer: string hasRelevantInfo: boolean } export class SearchOverviewService { async generate( query: string, results: Array<{ title: string; snippet: string }>, language?: string ): Promise { if (results.length === 0) { return { answer: '', hasRelevantInfo: false } } const lang = language || 'fr' const langName = lang === 'fr' ? 'français' : lang === 'fa' ? 'فارسی' : 'English' const topResults = results.slice(0, 8) const context = topResults.map((r, i) => `[Note ${i + 1}: ${r.title}]\n${r.snippet.slice(0, 300)}` ).join('\n\n---\n\n') const prompt = `Tu es un assistant de recherche. Réponds à la question de l'utilisateur en te basant UNIQUEMENT sur les notes fournies ci-dessous. LANGUE DE RÉPONSE : ${langName} QUESTION : "${query}" NOTES TROUVÉES : ${context} RÈGLES : - Réponds en ${langName} UNIQUEMENT - Sois concis : 2-4 phrases maximum - Si les notes contiennent l'info, réponds directement - Si les notes ne contiennent PAS l'info, réponds exactement : "NO_RELEVANT_INFO" - Ne dis pas "selon les notes" — réponds naturellement - Cite les titres des notes pertinentes entre parenthèses à la fin si utile` const config = await getSystemConfig() const provider = getChatProvider(config) const raw = await provider.generateText(prompt) const answer = raw.trim() if (answer === 'NO_RELEVANT_INFO' || answer.length < 10) { return { answer: '', hasRelevantInfo: false } } return { answer, hasRelevantInfo: true } } } export const searchOverviewService = new SearchOverviewService()