Persist general specification analysis and expose saved results
This commit is contained in:
+14
-16
@@ -1,7 +1,8 @@
|
||||
/**
|
||||
* Gerçek AI şartname analizi istemcisi (backend /api/ai üzerinden).
|
||||
*/
|
||||
import { getToken } from './auth';
|
||||
import { getToken } from './auth.js';
|
||||
import {runDurableAiJob} from './aiJobs.js';
|
||||
|
||||
export async function getAiConfig() {
|
||||
try {
|
||||
@@ -13,19 +14,16 @@ export async function getAiConfig() {
|
||||
}
|
||||
}
|
||||
|
||||
export async function analyzeSpecText({ text, fileName, tender, chain, mode, extraction, reviewedSource }) {
|
||||
const res = await fetch('/api/ai/analyze', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${getToken()}` },
|
||||
body: JSON.stringify({ text, fileName, tender, chain, mode, extraction, reviewedSource }),
|
||||
});
|
||||
const data = await res.json().catch(() => ({}));
|
||||
if (!data.success) {
|
||||
const proxyMesaj = {
|
||||
413: 'Doküman metni sunucu sınırını aşıyor; daha küçük bir dosya veya yalnızca ilgili sayfaları deneyin.',
|
||||
504: 'Analiz zaman aşımına uğradı; tekrar deneyin (derin analiz 1-2 dk sürebilir).',
|
||||
}[res.status];
|
||||
throw new Error(data.error || proxyMesaj || `Analiz başarısız (HTTP ${res.status})`);
|
||||
}
|
||||
return data;
|
||||
export async function analyzeSpecText(input) {
|
||||
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});
|
||||
}
|
||||
|
||||
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')};
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import {accountRequest} from './accountRequest.js';
|
||||
import {awaitWithAbort} from './abortable.js';
|
||||
export const listAiJobs=ikn=>accountRequest('/api/me/ai-jobs?'+new URLSearchParams({ikn}));
|
||||
export const listAiJobs=ikn=>accountRequest('/api/me/ai-jobs?'+new URLSearchParams(ikn?{ikn}:{}));
|
||||
export const getAiJob=id=>accountRequest('/api/me/ai-jobs?'+new URLSearchParams({id}));
|
||||
export const cancelAiJob=id=>accountRequest('/api/me/ai-jobs?'+new URLSearchParams({id}),{method:'DELETE'});
|
||||
export const retryAiJob=id=>accountRequest('/api/me/ai-jobs?'+new URLSearchParams({id}),{method:'POST',body:JSON.stringify({action:'retry'})});
|
||||
|
||||
Reference in New Issue
Block a user