fix: enforce source-backed offer type in bid preparation

This commit is contained in:
2026-09-06 09:25:51 +03:00
parent a751147d45
commit bc71984847
5 changed files with 51 additions and 7 deletions
+13 -1
View File
@@ -1,7 +1,19 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import {extractBidValidity,bidValidityForForm} from '../src/services/bidTerms.js';
import {extractBidValidity,bidValidityForForm,extractBidType,bidTypeForForm} from '../src/services/bidTerms.js';
import {qualifyAnalysis} from '../server/analysis-quality.mjs';
test('offer type comes from explicit clauses and conflicting types remain unresolved',()=>{
const unit='İstekliler birim fiyat teklif vereceklerdir.';
const lump='TEKLİF TÜRÜ: ANAHTAR TESLİMİ GÖTÜRÜ BEDEL';
assert.equal(extractBidType(unit).type,'birim');
assert.equal(extractBidType(lump).type,'goturu');
assert.equal(extractBidType('Birim fiyat tablosu örneği. Götürü bedel teklif verilemez.').status,'not_found');
assert.equal(extractBidType('Kalem listesi bulunamadı.').type,null);
assert.equal(bidTypeForForm(unit,extractBidType(lump)).status,'conflict');
const result=qualifyAnalysis({},{text:lump});
assert.equal(result.procurementTerms.bidType.type,'goturu');
assert.equal(qualifyAnalysis({},{text:unit+' '+lump}).sourceReview.status,'partial');
});
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);