feat: analyze complete long documents in bounded source parts
This commit is contained in:
+9
-1
@@ -1,3 +1,4 @@
|
||||
import { analyzeInParts } from './analysis-parts.mjs';
|
||||
import { qualifyAnalysis } from './analysis-quality.mjs';
|
||||
/**
|
||||
* Gerçek AI şartname analizi — OpenRouter öncelikli, çoklu sağlayıcı fallback.
|
||||
@@ -316,7 +317,14 @@ function kesikJsonOnar(s) {
|
||||
}
|
||||
|
||||
/** Zinciri sırayla dener; ilk başarılı sonucu döndürür. */
|
||||
export async function analyzeSpec({ text, fileName, tender, chain, systemOverride, mode }) {
|
||||
export async function analyzeSpec({ text, fileName, tender, chain, systemOverride, mode, _singlePart = false }) {
|
||||
if (!_singlePart && String(text || '').length > 24000) {
|
||||
return analyzeInParts({text,fileName,tender,mode}, part => analyzeSpec({
|
||||
text:part.text,fileName:`${fileName || 'Doküman'} — bölüm ${part.index+1}`,
|
||||
tender:tender ? {...tender,items:[]} : undefined,chain,mode,_singlePart:true,
|
||||
systemOverride:(systemOverride || (mode === 'derin' ? DERIN_SYSTEM_PROMPT : SYSTEM_PROMPT)) + '\nBu metin büyük dokümanın bir bölümüdür. Yalnız bu bölümde görülen koşulları çıkar; bu bölümde bulunmayan şartın bütün dokümanda bulunmadığı sonucunu çıkarma.',
|
||||
}));
|
||||
}
|
||||
const derin = mode === 'derin';
|
||||
// Ücretli yedek: Gemini Flash her zaman zincirin sonunda. Panelde seçilen
|
||||
// modeller (ör. ücretsiz/limitli olanlar) tıkanınca analiz boş kalmasın;
|
||||
|
||||
Reference in New Issue
Block a user