fix: validate nested analysis fields before merging and preparation

This commit is contained in:
2026-09-06 09:10:18 +03:00
parent 144724484c
commit 2aaf56ce8b
6 changed files with 96 additions and 5 deletions
+7 -2
View File
@@ -1,4 +1,5 @@
import {qualifyAnalysis} from './analysis-quality.mjs';
import {analysisArrayFields,validateAnalysisShape} from './analysis-schema.mjs';
export function splitAnalysisText(text,max=24000) {
if(!Number.isInteger(max) || max<100)throw new Error('Geçersiz parça boyutu.');
const source=String(text || ''),parts=[];
@@ -11,13 +12,17 @@ export function splitAnalysisText(text,max=24000) {
}
return parts;
}
const arrayFields=['qualificationCriteria','criticalRequirements','risksAndPenalties','disqualificationRisks','criticalDetails','itemsAndSpecs','documentChecklist','deadlines','costDrivers','roadmap','questionsForAdministration'];
const arrayFields=analysisArrayFields;
export async function analyzeInParts(input,runPart) {
const parts=splitAnalysisText(input.text),results=[],failures=[];
// Two requests at a time bounds provider pressure while processing every part.
for(let i=0;i<parts.length;i+=2) {
await Promise.all(parts.slice(i,i+2).map(async part=>{
try {results.push({part,out:await runPart(part)});}
try {
const out=await runPart(part);
validateAnalysisShape(out?.result);
results.push({part,out});
}
catch(error){failures.push({part,error:String(error.message || error)});}
}));
}