fix: validate nested analysis fields before merging and preparation
This commit is contained in:
@@ -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)});}
|
||||
}));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user