Cancel disconnected offer analysis and stop remaining provider calls
This commit is contained in:
@@ -2,7 +2,8 @@ import {splitAnalysisText} from './analysis-parts.mjs';
|
||||
import {qualifyOfferAudit} from './offer-audit.mjs';
|
||||
|
||||
/** Audit every supplied requirement against every draft part, without generic AI-schema merging. */
|
||||
export async function auditOfferInParts(requirements, draft, run) {
|
||||
export async function auditOfferInParts(requirements, draft, run, {signal} = {}) {
|
||||
signal?.throwIfAborted();
|
||||
const groups=[];let current=[],size=0;
|
||||
for(const requirement of requirements) {
|
||||
if(requirement.length>8000) throw new Error('Tek bir denetim gerekliliği çok uzun. Kaynak maddeyi ayrı gerekliliklere ayırın.');
|
||||
@@ -11,12 +12,13 @@ export async function auditOfferInParts(requirements, draft, run) {
|
||||
}
|
||||
if(current.length)groups.push(current);
|
||||
const parts=splitAnalysisText(draft,10000),jobs=groups.flatMap((group,g)=>parts.map(part=>({group,g,part}))),results=[];
|
||||
for(let i=0;i<jobs.length;i+=2) await Promise.all(jobs.slice(i,i+2).map(async job=>{
|
||||
for(let i=0;i<jobs.length;i+=2) { signal?.throwIfAborted(); await Promise.all(jobs.slice(i,i+2).map(async job=>{
|
||||
try {
|
||||
const output=await run(job.group,job.part.text);
|
||||
results.push({...job,review:qualifyOfferAudit(output,job.group,job.part.text)});
|
||||
} catch(error){results.push({...job,error:String(error.message || error)});}
|
||||
}));
|
||||
})); }
|
||||
signal?.throwIfAborted();
|
||||
if(!results.some(result=>result.review))throw new Error('Taslağın hiçbir bölümü denetlenemedi. Yeniden deneyin.');
|
||||
const merged=[];
|
||||
for(const [g,group] of groups.entries()) for(const requirement of group) {
|
||||
|
||||
Reference in New Issue
Block a user