fix: carry source-backed bid validity into preparation drafts

This commit is contained in:
2026-09-06 09:24:38 +03:00
parent e07be66e7f
commit a751147d45
6 changed files with 66 additions and 6 deletions
+22
View File
@@ -0,0 +1,22 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import {extractBidValidity,bidValidityForForm} from '../src/services/bidTerms.js';
import {qualifyAnalysis} from '../server/analysis-quality.mjs';
test('bid validity is structured from source with exact clause evidence',()=>{
const source='Teslimat 15 gün. TEKLİFLERİN GEÇERLİLİK SÜRESİ ihale tarihinden itibaren 120 (yüzyirmi) takvim günüdür.';
const terms=extractBidValidity(source);
assert.equal(terms.days,120);
assert.equal(source.slice(terms.evidence[0].start,terms.evidence[0].end),terms.evidence[0].quote);
assert.equal(extractBidValidity('Garanti süresi 60 gün. Belge geçerlilik süresi 90 gün.').status,'not_found');
const result=qualifyAnalysis({},{text:source});
assert.equal(result.procurementTerms.bidValidity.days,120);
assert.equal(bidValidityForForm('',JSON.parse(JSON.stringify(result.procurementTerms.bidValidity))).days,120);
});
test('conflicting clauses remain unresolved instead of choosing the first duration',()=>{
const a='Teklif geçerlilik süresi 120 takvim günü.';
const b='Tekliflerin geçerlilik süresi 60 gündür.';
assert.equal(extractBidValidity(a+' '+b).status,'conflict');
assert.equal(bidValidityForForm(a,extractBidValidity(b)).status,'conflict');
assert.equal(qualifyAnalysis({},{text:a+' '+b}).sourceReview.status,'partial');
assert.equal(extractBidValidity(a+' '+a).days,120);
});