fix: preserve bid drafts and align tender source data

This commit is contained in:
2026-09-06 08:40:10 +03:00
parent c91631d99f
commit 456728b4bd
26 changed files with 510 additions and 81 deletions
+18
View File
@@ -0,0 +1,18 @@
import {test} from 'node:test';
import assert from 'node:assert/strict';
import {uniqueTenders,announcementFields} from '../server/tender-quality.mjs';
test('duplicate DT records merge without merging another institution or losing source identities',()=>{
const t={id:'dt-1',ikn:'26DT1693370',kurum:'Hastane'};
const out=uniqueTenders([t,{...t,id:'dt-2',aciklama:'Tam metin'},{...t,id:'dt-3',kurum:'Başka hastane'}]);
assert.equal(out.length,2);assert.deepEqual(out[0].sourceIds,['dt-1','dt-2']);assert.equal(out[0].aciklama,'Tam metin');
});
test('distinct contract lots and corrections remain separate',()=>{
const t={ikn:'2026/123',durum:'Sonuçlandı',kisim:'1',id:'a',kazananFirma:'Firma'};
assert.equal(uniqueTenders([t,t,{...t,id:'b',kisim:'2'}]).length,2);
assert.equal(uniqueTenders([{ikn:'2026/123',id:'1'},{ikn:'2026/123',id:'2',baslik:'Düzeltme ilanı'}]).length,2);
});
test('announcement preserves full text and extracts source-backed fields',()=>{
const text='x'.repeat(4500)+' Tarih ve Saati : 10.09.2026 - 10:00 3.3. Teslim edileceği yer : Patoloji laboratuvarı 3.4. Süresi/teslim tarihi : 30 gün 3.5. İşe başlama tarihi : sözleşme';
const d=announcementFields(text);assert.equal(d.aciklama,text);assert.equal(d.saat,'10:00');assert.equal(d.teslimYeri,'Patoloji laboratuvarı');assert.equal(d.teslimatSuresi,'30 gün');
assert.deepEqual(announcementFields('Eksik ilan'),{aciklama:'Eksik ilan'});
});