Audit all supplied requirements across complete long drafts

This commit is contained in:
2026-09-06 10:20:37 +03:00
parent c3ec8c8ba8
commit 673d6c1bc8
7 changed files with 89 additions and 9 deletions
+22
View File
@@ -0,0 +1,22 @@
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {auditOfferInParts} from '../server/offer-audit-parts.mjs';
test('100 requirements and draft evidence beyond 60000 characters survive bounded audit calls',async()=>{
const requirements=Array.from({length:100},(_,i)=>`${i+1}. gereklilik: `+'laboratuvar şartı '.repeat(8));
const draft='Giriş metni. '.repeat(5500)+'SON KANIT: Numune sağlanacaktır.';
let largest=0,seen=new Set();
const result=await auditOfferInParts(requirements,draft,async(group,part)=>{
largest=Math.max(largest,group.join('\n').length+part.length);group.forEach(g=>seen.add(g));
return {maddeler:group.map(g=>({gereklilik:g,durum:part.includes('SON KANIT')?'karsilaniyor':'eksik',kanit:part.includes('SON KANIT')?'SON KANIT: Numune sağlanacaktır.':null}))};
});
assert.equal(seen.size,100);assert.equal(result.maddeler.length,100);assert.equal(result.uyum_yuzde,100);
assert.ok(largest<20000);assert.ok(result.auditReview.draftParts>6);
});
test('failed draft parts remain unresolved instead of producing a complete audit',async()=>{
const result=await auditOfferInParts(['Numune'], 'x'.repeat(11000),async(group,part)=>{
if(part.length<10000)throw Error('Provider failed');
return {maddeler:[{gereklilik:'Numune',durum:'eksik'}]};
});
assert.equal(result.belirsizSayisi,1);assert.equal(result.auditReview.failedCalls,1);
await assert.rejects(auditOfferInParts(['Numune'],'Taslak',async()=>{throw Error('offline');}),/hiçbir bölümü/);
});