/** * Gerçek AI şartname analizi istemcisi (backend /api/ai üzerinden). */ import { getToken } from './auth.js'; import {runDurableAiJob} from './aiJobs.js'; export async function getAiConfig() { try { const res = await fetch('/api/ai/config'); if (!res.ok) return { configured: false, providers: [] }; return await res.json(); } catch { return { configured: false, providers: [] }; } } export async function analyzeSpecText(input,{onProgress}={}) { const session=getToken(); const check=()=>{if(getToken()!==session)throw new Error('Oturum değişti; kayıtlı analiz bu hesaba aktarılmadı.');}; return runDurableAiJob('analiz',input,{check,onProgress}); } export function analysisView(data,input) { if(data?.success!==true || !data.result || typeof data.result!=='object' || Array.isArray(data.result) || !data.model?.label || !data.model?.provider || !Number.isFinite(Date.parse(data.analyzedAt)))throw new Error('Kayıtlı analiz sonucu geçersiz.'); return {...data.result,tenderKey:input.tender?.ikn || input.tender?.id || null, mode:data.mode || (input.mode==='derin'?'derin':'standart'),fileName:input.fileName, model:`${data.model.label} (${data.model.provider})`,modelId:data.model.model, attempts:data.attempts,analyzedAt:new Date(data.analyzedAt).toLocaleString('tr-TR', { timeZone: 'Europe/Istanbul' })}; }